CMS Smackdown! - BathCamp #32
TL;DR: A bar brawl. Seven CMSs in the ring. Plone gave them a good kicking. Interesting to learn form other CMSs. My talk on Plone is here.
Wednesday evening I attended the "CMS Smackdown!" at BathCamp. BathCamp is a regular event happening every month in Bath and is generally a fairly informal event with a few presentations around a particular topic and then adjourning to the nearby pub for further chat.
This month was something a bit different. The CMS Smackdown! The rules were pretty simple. Each speaker had 10 minutes to talk about the 5 things they love about their CMS and 5 things they hate about their CMS. There were seven CMSs represented:
- Expression Engine
PyroCMS(edit: wasn't represented in the end, see comments below)
And as you might have guessed I was there weighing in for Plone. I've done a more in-depth two-CMS battle before which was organised by CMS Connected and pitted Plone against Hippo. Whilst that was a hour and a half boxing match with set rounds, this was more like a bar brawl. But boy, was it fun :) There was a great spirit there with people willing to take shots at each system received in good nature and with a decent amount of sparring.
Most of the CMSs I'd heard of, but PyroCMS, Perch and Defacto were new ones to me.
A few notes on what was said about the other CMSs and some thoughts on how these compare to Plone:
What was actually very interesting, and very refreshing, was the honesty of the speakers when talking about the things they hate about the CMS. One that particularly struck me was the slide with a diagram of the Drupal learning curve I'm glad to see that the Z-shaped learning curve of Zope 2 is not alone.
The Drupal speaker was happy to say that whilst Drupal is great as a base CMS you really need to use it as just that, a base, and build an actual user interface on top of it in most cases. And that the code is "weird". There is something called the "Drupal Way" and that way is different to the rest of the PHP world. So just because you might be experienced in Wordpress development or Expression Engine, you won't necessarily feel at home in the Drupal codebase. This is something that Zope and Plone suffered from in the early days with comments of it being 'un-Pythonic'. At the time this was mainly due to it having to blaze its own trail as there was no python-way at the time. Since then, however, Plone has moved to use more common methods and tools that the rest of the Python world use. Plone is much more 'Pythonic' nowadays.
One of the big plusses mentioned about Drupal (and in fact most speakers said this about their CMS, me included) was the community was a big advantage.The Drupal speaker mentioned that with support of the Drupal community "you can overcome anything".
Wordpress was touted as having a "blindingly obvious" user interface. I think this is a very true point, but I think that really only holds true when you are basing your site on being a blog. The Wordpress speakers tried to convince us that Wordpress is general CMS tool nowadays… but I have to say I'm not convinced. Just because it can be used for general CMS tasks I don't think it is necessarily suited for that role in all cases. One downside mentioned by the speakers is that Wordpress will inevitably crash and blow up if you install too many random plug-ins. Their advice is stick to the well known and tested ones (or make sure you test them yourself first properly). Continual updates every week are a problem, but there is a tool called Manage WP that can roll out changes to multiple sites in one go. Sounds like it is good in theory, but I have to say I wonder how well it will cope when you have all those different plug-ins and themes in place.
Perch is a very small CMS intended for 5-10 page sites. It is termed an 'inside out' CMS in that it is intended for use where you already have a static site and want to just allow some areas to be edited. They were very honest in that the intention is to be a small, simple, cheap CMS and not trying to compete with big systems. They have found their niche and are sticking with it. As the speaker said "Otherwise we'd end up with another Wordpress, and who want's that?".
Umbraco is a .NET based CMS. It has switched a lot of underlying technologies in the latest version. This means whilst the code is better ( MVC vs ASP.NET) and no longer carries around the giant .NET viewstate cookie, the new version is lacking some features of the older version at the moment. On the plus side was mentioned good separation of concerns (content, markup, code) and a clean UI. On the downside stability was cited as a problem and a recommendation to wait for a couple of point releases before upgrading to a major release.
Expression Engine is another PHP CMS, based on the CodeIgniter framework. The main plus side cited was that unlike many CMSs that deal with 'pages' Expression Engine has 'custom fields' at the core so good for multichannel support. Not much of a revelation compared to Plone as that is what we are used to in Plone. Other pluses are that it makes no assumptions on the theming of the site and so good for designers. On the downside there is no initial theme so you pretty much have to develop a theme for every site, and that there is not yet much best practise that has evolved. So taking on an EE site developed by a different developer is likely to be problematic as everyone does things differently. This is an area that I think Plone is very strong in nowadays. It has taken a while to get there and we were in a similar position 5 years ago, but now there is a much more defined 'good' way to do things.
Defacto is a CMS developed by Bristol-based Nomensa. Their main goal is to design a CMS 'for humans'. They very much come from the UX angle and (rightly) say many CMSs are just simply not built for the average user to use. They focus on 'task based' flows so that someone can complete a task linearly without having to jump all over the CMS to achieve what they want to do. It is written on top of Django. They had a few quite nice features, clearly aimed at authors, such as a thumbnail list of templates (2 column, 3 column, image at top, etc) you could use for a page. Similar approaches have been taken by some Plone add-ons such as, IIRC, PloneArticle. I think it is a very noble goal to try and split the developer and user side of things so much, but I feel that inevitably you are going to hit grey areas in-between… areas where you get 'power users' who want to change the layout beyond what they can via prescribed layouts. That said, it did make me think about Plone and appreciate that you can author a piece of content and publish it all in one place too. Something I had taken for granted and didn't realise was a problem with other CMSs. And as they say imitation is the sincerest form of flattery, with the image editing pop-up from Defacto looking like it was copied from Plone. Again, apparently being able to set the size and alignment of images when editing content is rare in CMSs.
I've put up a slidecast of the talk I did on Plone. One of the main things I wanted to show off with Plone was Diazo, and by doing a live demo in which with just a single Diazo rule I was able to theme the local Plone site I had on my laptop with the live bathcamp.org website running elsewhere. To put the screencast together I took some static screenshots of what I did to put in there. I hopefully will put up a short screencast to show it actually in action.
Another key aspect I wanted to bring up is buildout as I feel it really is something that is quite uniquely powerful in Plone. None of the other CMSs at the smackdown appear to have anything remotely similar in terms of a mechanism for managing the deployment and versioning of the development of sites.
Just to round up to say it was a great event. I was pleasantly surprised at the honesty of the participants and the openness of their answers to the questions. It would be interesting to see how a similar event would work if you had the more 'enterprise' proprietary offerings such as Ektron, Terminal 4, Kentico, Sharepoint etc.
Thanks to Mike Ellis for organising it!