It's that time of the year again. Time to cast my vote as part of the jury in Packt's open-source awards, category "PHP CMS".
(for my last year's rant, check the internet archive copy)
How to judge a CMS?
How to judge a CMS? Tough one. How do you judge any piece of software anyway?
Features? Usually any system or product lists the features in way meant to wow you, I mean a list of features always looks nice, it's a sales tool. And the features don't mean that much, actually some say, you should underfeature the competition. Of course, you can't take that to the extreme and build software that does nothing. You need features, but the best CMS doesn't mean the one with the most features, neither the one with less. You just need the right mix and "right" may wildly vary depending on the task. Are you building an e-commerce site, a library of articles, a 5-page business card-like site, on online community? No way to judge a system without an idea of what you want it to do for you. And no way what you want to do is what everyone else wants to do.
Quality? This is much easier. Does the code validate, YSlow score, accessibility, etc. Easy, even automated, but again, the system can be written beautifully but doesn't do the right thing or work the right way.
Documentation? A must-have, usually a problem with any software. Can be too specific in areas that don't matter and completely lacking where you really need it. Or outdated. It's also nice to have some books, sign that the system is relatively popular, mature and at the end of it, it's cozier to share the couch with a book then with an online text. Also API documentation, at least it's easier to generate and keep updated.
Community? Very important, you'll inevitably have questions when you start working with the system. It would be nice to have a friendly place where you can ask/answer questions. But how do you judge a community? The only way is to get involved and spend time. No way to do this when you're judging 5 systems in a matter of days.
It's virtually impossible to judge any piece of software until you start using it. It may have the right features, but they might be unfriendly or virtually unusable. It may have documentation, but not the one you need, etc, etc. So the only way is to spend time with the software and try to make it work for you.
And since I've been meaning to create my personal stoyanstefanov.com, I thought it would be a good idea to kill two birds with one stone - cast my vote and have a working site at the end, powered by my personal CMS favorite.
So I sit down and listed the features I need, nothing overly complicated, and also decided on some rough structure. Here's my feature list:
- Blog. In English and also in Bulgarian, nice test for i18n capabilities
- Syndicated Twitter feed, probably the CMS will not have it out of the box, but syndicating content and consuming web services is so common these days that the software better be capable of doing it easily or let me write an extension easily
- Slides, with the help of Slideshare's API, same as above
- Books - a page for each book maybe, reviews, image, etc
- Projects - list of stuff I'm involved in
- Publications - articles I wrote for other sites and magazines
- Conferences - list the conferences I've spoken to, encourage people to invite me, bio blurb, hi-res photo
- Social - links to facebook profile, linked in, etc
- Sites - other sites of mine
- Syndicated content - again, syndicate friendfeed or a Yahoo pipe that contains pretty much all my online activity, such as other blogs and even tiny things like last.fm love/hate ratings
- Subscribe - option to subscribe to RSS feeds or even monthly email
- custom 404
All these features I would combine in 5 top-level menu items: blog, news, writing, speaking, info.
So now that I know what I want to build, I can go ahead and (attempt to) do it with each CMS while looking out for some pre-defined checks.
Maturity: (since when the CMS exists)
Frequency of new releases: (is the project active)
The best way to get a feeling of the software is by performing some tasks, the same tasks for all CMS
- setup friendly urls
- setup sections and content
- customize presentation
- customize homepage
- create an extension
- customize 404
Test both the front-end and the back-end admin sections.
- works without js
- works without css
- validates html
- validates css
- yslow grade
- Is there a WYSIWYG, people like those (I avoid them)
- available extensions
- available themes
- API docs
Lotsa stuff, wish me luck with aaall that 🙂 And I would be interested to hear any comments on the subject. Thanks for reading!