I just spent a few days trying to get an overview of all the different CMS out there nowadays.
I restricted my search to free OpenSource PHP CMS. Those are still hundreds, but at least that rules out some like ExpressionEngine, CushyCMS (not free) and Plone, dotCMS, Alfresco, Umbraco, Radiant (not PHP) and DokuWiki, WordPress, Serendipity (not a CMS). (I was surprised that, according to several sources, WordPress is the most popular CMS by far! Although I can see how you can include it in your definition of a CMS, I only wanted to concentrate on those which were meant to be used as one.)
- I had a look at about 100 different CMS at opensourceCMS.com. (Their demo for each CMS listed there is a pretty cool feature that let’s you at least see one of the most important parts of a CMS at once: the admin interface.) Then I did a bit of research, i.e. googling what others use and like and don’t like and tried a few others which were not listed at opensourceCMS.com.
A few really popular CMS failed already at that stage: Joomla!, TYPO3, CMS Made Simple, XOOPS, e107 and SilverStripe. (I.e. their admin interface failed to convince me, I haven’t had a look beyond that at that point).
- In the end I ended up with 18 different CMS I installed and tested more thoroughly.
- I will go into detail about 7 of them below…
What makes a good CMS?
In my opinion there are 4 points you have to consider:
- Usability of the admin interface
- Unfortunately that doesn’t seem to be very important to most developers. But I think it’s so important, I wouldn’t recommend using any CMS with an amazing backend, if its admin interface is crap.
- It should be easy to create all the plugins and templates you need without hacking the core.
- The community should be alive, at least a few contributors to core, plugins and templates existing, the project’s history should be healthy and the code secure.
- It should use resources in a responsible way, scale on large projects and caching is vital.
How much can you trust my verdict on those 4 points? Well, I’m more of a front-end than a back-end developer and I haven’t used any of the listed CMS in real-life projects except one. It might well be that I will change my mind about a few aspects after having properly worked with them. But I have used a fair amount of other CMS and can compare most features.
So, I’d say at this stage I can judge the usability of the admin interface 100%, extensibility 50%, sustainability 50%, performance 0%.
I wouldn’t necessarily consider the quantity of features or extensions as important. As I didn’t have a certain use case in mind, I was looking for CMS in general. Obviously there is no “best” CMS, as each individual choice always depends on so many things you need to consider. But at least it’s easy to make a first rough decision on the category you need: For smaller projects you don’t need a full blown CMS and it’s more harmful to choose e.g. Drupal for a 12-page brochure website. In those cases you just need a lite CMS.
The problem with WYSIWYG editors
One important point in the admin interface is how editors can edit the content. There are two ways it can go wrong:
- don’t provide just a WYSIWYG editor
- don’t provide just an HTML or simple text editor
Unfortunately those two extremes can be found quite a lot in many CMS. The problem is: If you let your editors edit the content with a WYSIWYG editor, it nearly always destroys the integrity, validity and accessibility of the code and the design of the website. On the other hand, just using HTML is obviously no use to non-technical people and just a simple text editor doesn’t leave you with enough power and flexibility over the text.
The middle and in my opinion best way is using a text markup editor for e.g. Textile or Markdown. Although most clients will be reluctant to try it, make them use it for at least a week, and you’ll see that it’s easier for them than you think. If the editor includes a toolbar, the better. In case your clients are really extremely untechnical, a WYSIWYG editor is fine, as long as it excludes harmful markup, i.e. strip down its functionality (like WordPress does) or use a WYSIWYM editor (like WYMeditor).
You have to balance usability with doing the right thing. It’s important that developers understand that usability is vital for clients and clients understand what harm can be done by choosing to use a full-blown WYSIWYG editor.
In my opinion, a rich CMS which doesn’t provide the right tool here (as a plugin if need be), is an unprofessional choice.
The CMS in the lite category which didn’t make it into the final round: pluck, Symphony, WebsiteBaker and WonderCMS. The latter nearly made it, because I think it’s a brilliant idea to write such a simple and small CMS (11 KB download), but it’s not very client-friendly.
The CMS in the rich category which couldn’t make it: Kryn.cms (which has an interesting admin interface: it looks like a desktop with several windows), MODX, Textpattern (I so wanted to love it, but just can’t) and Zikula.
And finally, here are the remaining seven winners:
It was nearly a draw between Template CMS (which is the simplest and the smallest of these 4), Elefant (which has the most promising back-end and is the only one of these 4 which needs a database), gp|Easy (which has the most functionalities of these 4 and an inline editor) and GetSimple. They are all very similar in functionality, but if I had to decide between them, I would choose GetSimple, mainly for its clean and most intuitive admin interface.
GetSimple stores its data in XML files, so doesn’t need a database (which can be important in simple setups). It features a simple, stripped-down WYSIWYG editor. Most things I missed in the core can be extended by plugins (e.g. cache and custom fields) and it seems to be more stable than its contenders.
- Download size: 0—0.5 MB
- Number of extensions: 1—10
Stacey is different. You might argue it’s not even a CMS, because it hasn’t got an admin interface at all. Instead it uses text files and other assets (images, pdfs, etc) in a certain folder structure to build the website and uses Markdown to parse those text files.
Stacey’s own templating language is very easy and simple, it’s build with nice and clean OOP and a proper cache is already built-in. The main negative points are the missing interface and that you cannot swap themes easily.
But I found a simple solution to the missing interface problem: Combine Stacey with OneFileCMS!
Despite its name, OneFileCMS is not a CMS. It’s an online file manager with a simple text editor, which consists of one single PHP file. Just copy that file into Stacey’s “./content/” folder and rename it to “index.php”. Then you can go to your Stacey-build website’s URL and append “content” (e.g. “example.com/content”) and behold, you can login and edit your Stacey files through a simple interface.
Although this solution makes it much easier, it’s admittedly still not very suitable for non-technical people.
One thing which some people might consider an issue: Some of concrete5’s add-ons cost money. Personally, I am fine with that. The only issue which could arise from it is that it will be impossible to support unmaintained add-ons.
Its OOP back-end follows MVC principles only half-heartedly, but seems quite powerful. As this CMS is getting more popular every day, it should be on everyone’s “must try out” list.
It’s daunting to write anything about Drupal. Because so many people hate it and so many people love it, and my knowledge about it only just scratched its surface.
From trying to find out why so many developers don’t like Drupal, I gathered it’s mainly because it’s so popular and therefore it’s often used in cases where it shouldn’t be used. (The same goes for WordPress, by the way.)
But from what I saw it’s up there among the top of the most popular CMS for a reason. I wouldn’t consider it to be the best out there, there are too many things I don’t like: The way you can switch between editing and viewing a page is against all common usability sense (the tabs involved don’t function as tabs), forms in the admin are confusing (they all look the same, no matter if they are for real content or just for meta content) and the back-end looks “historically grown”. But the concept of the different components working together looks right to me. And whenever I look up how something works, it becomes clearer to me how powerful it really is.
ProcessWire looks really exciting. The concept is good, the OOP back-end well thought-through and its API takes a refreshingly different approach as it is inspired by jQuery‘s syntax.
templating and editing concept is similar to Drupal’s: Templates are populated with the help of fields. And the values of those fields are used in the templates. (It also utilizes a lot of small modules.)
What I don’t like about this is that it means each template is fixed and less flexible (the same goes for Drupal).
And unfortunately it hasn’t got any concept of themes yet.
- Download size: 1—3 MB
- Number of extensions: 100—1000
REDAXO was my favourite CMS for a long time. Its module concept and editing flexibility is something I haven’t come across in any other CMS before. It might sound strange, but there are very few other CMS with which you can freely add any kind of content in any kind of order. But now concrete5 (see above) is a contender for that.
The only reason why I cannot really recommend this CMS is because its documentation (and website and even inline code comments) are mostly in German. 🙁 This is its biggest flaw and I think the main reason why it’s quite unknown in the CMS world.
One piece of news which gives some hope: Last year a fork of REDAXO, named Sally, was born and it already looks really promising: It’s cleaner, faster and more open.
But unfortunately the makers of Sally haven’t learned from their sister’s mistake: Everything is still only in German. Apart from that, they made the unprofessional choice to require PHP Short Open Tags. But they are still in pre-alpha stage, so let’s hope and check back in a few months.
Wolf CMS is my personal winner. It’s a fork of Frog CMS which again is a PHP port of Radiant CMS (written in Ruby).
Although it’s not as sophisticated as Drupal or concrete5 (and might even be seen as a lite CMS), it seems to be doing everything right. Its OOP MVC back-end is really clean and makes sense. The admin interface is extremely easy to use. Its core editor uses either Textile or Markdown (or PHP/HTML) with an editing toolbar.
Its main strength is simply its simplicity.
In my opinion there are only two things missing to make it perfect: The possibility to enter structured content (which also includes different types of content) and the possibility to store the layouts on the file system (which is also a flaw of REDAXO).
What could also improve: More people should be using it! 🙂
Update (30 October 2011): I updated ProcessWire’s info box to show Ohloh widgets like the rest. (As it was not on Ohloh, I just created that project there myself.)
Update (7 December 2011): I corrected some information for ProcessWire.