Long-time readers will remember that a while ago, I migrated this blog from its initial Plone 2.5 + SimpleBlog incarnation to a Django-based blog: Kevin Fricovsky's Mingus, to be precise. Well - we've moved back to Plone.
What you're reading now is running on stock Plone 4, with some extra portlets (of types that ship with Plone, no code required), a single custom stylesheet with associated images, and plone.app.discussion and collective.akismet for comments.
(OK, OK - there's one other small customisation to replace Plone's favicon, but that doesn't really count, right?)
Why change at all?
Plone's editing experience is far superior to what's (easily) obtainable through the Django admin interface - or at least, what was easily available at the time I did the migration. It was simply a TinyMCE editing widget layered over a text field. In particular, image uploading involved going to another screen, uploading, navigating back, and getting the embed stuff right. This was painful. A direct result of this was that I wrote fewer blog posts. And this was a Bad Thing.
Why Plone?
Plone 4 was recently released, and it was finally at the point where I was satisfied that it could do everything out of the box that I needed - all I had to do was to theme it. I did consider other options:
Wordpress
For most people, Wordpress is the go-to blog engine. I could even have gone with a hosted option. However, hosting implies that I'd have to use a Wordpress theme to get it looking the way I wanted - and I don't really have the time to learn to theme Wordpress. (Remembering how to theme Plone - it's been a while! - took a half day, which was plenty long enough). That meant that I'd need to use Deliverance to theme it, and run the blog on my own server. Running Wordpress myself again wasn't something I wanted to do: it would mean installing (and more importantly, maintaining) a PHP installation, and installing, configuring and maintaining a MySQL install. If I was going to use a third-party blog that requires a relational database, I'd much rather it used PostgreSQL - I run that anyway, I've got backups scheduled, and so on and so forth.
So that pretty much counted out Wordpress.
Mingus (or any other Django-based solution)
Of course, I could just have kept on with Mingus, and re-skinned. However, this wouldn't solve the problem of the content editing experience not being great. I would therefore have had to investigate alternate blog platforms - perhaps FeinCMS (which I already have some experience with, as we're using it in the next version of Swoop) or Django CMS, or something new. Well - I might have done all that, and still wound up with a solution that wasn't as good as Plone's editing environment - and then I still would have had to go back and theme the thing.
So, Plone
So, I ended up back at Plone.
This was not to say that I didn't have any reservations about taking it for a spin again. The last time I did any serious Plone work was back in the 2.5 and early 3.0 days - just as the technologies in what was then Zope 3, now ZTK, were being introduced. Plone out-of-the-box was pretty slow (and I didn't have much time this time round to spend on performance tuning, not for my little blog, and availabile hardware was pretty minimal) and the default theme was even by then looking dated, with complex markup and styles.
I was also wary of needing to add new content types. Archetypes, though functional, is now old - and shows all the signs of organic code growth. I've been watching Dexterity, lined up as the AT replacement, for some time now; and while it looks very promising, it's not quite there yet. I'm subscribed to the Dexterity bug tracker mailing list, and there are still too many bugs to do with fundamentals coming through for my liking. I've mentally got Plone + Dexterity + Deliverance lined up for very rapid website builds, but I don't think it's quite mature enough yet.
So I tried Plone 4. And was pleasantly surprised.
Firstly, it's faster. Noticeably faster. And even on my little Slicehost VM. This is an OOTB configuration, so no Chameleon for ZPT, but even so - great.
Secondly, Sunburst is a lot easier on the eye. More importantly, it's much easier to go a long way with pure CSS. The only non-CSS presentation customisation I did (portlet rearranging through the Plone UI aside) was to customise the favicon.
The New Stereoplex
I'm pretty happy with it (as I was the last time!). The hardware is the same, but Plone itself is much, much faster. It's easier to do simple skinning - with the exception of the favicon customisation, all I did was register a new CSS stylesheet.
I've also allowed myself the luxury of not even trying it in IE. :)
Don't think, incidentally, that I'm moving away from Django - not at all. However, I now have a lot more confidence in using Plone to build web sites (and of course, intranets), which are primarily content management problems. I'm sticking with Django for web applications. You really can't beat Django for development speed. But if I need a CMS again in the future, I'll feel much more comfortable about Plone.
My take-away from this:
Plone for web sites.
Django for web applications.