Open source CMS - promise without pitfall
Introductions all round
Open source has changed operating systems, application servers and databases. Now, the benefits of open source are being realized in content management systems (CMS), traditionally a vendor-controlled world of expensive licensing and closed APIs.
Open source is putting CMS into the hands of developers and organizations previously unable, or unwilling, to use CMS. Early adopters include national and local governments and media companies.
As ever with open source, there's an almost bewildering amount of choice of systems - there are more than 80 CMS that I've counted, here.
Typically, the CMS you pick will be driven by your project requirements. For example, Joomla, Drupal, Xoops, e107, Zope, eZPublish and PHP-Fusion could be good choices for sites serving communities and offering social networking. For more personal publishing, like blogging, Wordpress or MediaWiki are better.
Here, I've rounded up the eight most important things to evaluate before plunging in and picking an open source CMS.
Installation and upgrade
This should be a straightforward process, performed using wizards or a setup script file. It is not good to follow more than twenty steps manually - changing configuration files, deleting and creating folders, and so on. Download, extract and run installation wizard - that should do it. Upgrades can also tend to pose a problem, and the hallmark of a good CMS will be the frequent and reliable release of patches or scripts that you can easily apply.
If the CMS is open source, the environment - operating system, application server, programming language, framework and database system - will probably be open source, too. The most popular environment is Linux, Apache, MySQL, and PHP (better known as LAMP). But there are alternatives for each. You must have answers for following questions: is the CMS capable of running on different environments? Which environment is the best for the CMS that you have chosen? Is the environment easy to setup? Most of the CMS run on Linux, which now dominates more than 60 per cent of server systems on the internet. Apache is the most popular application server, but you can also consider Lighttpd and Zope as good alternatives. Similarly, you can consider PostgreSQL and SQLite over MySQL.
A word to the wise: check the license under which your CMS has been released. To avoid possible confusion down the line over use rights and terms and conditions, it's best to pick a license that isn't tied to a specific product or company, allows for free distribution of the code, re-engineering, and the creation of commercial applications.
Is your portal, blog or website going to be used by users in different counties? If so, then your CMS should support your ability to localize - support multiple languages translations and work with different currencies and date formats. You should be able to add new languages to your site using just a few simple steps - for example, uploading language files or translating clauses using the administration panel. Also, evaluate whether there are XML and CSS templates available that allow you to change the skin of the site, for a different look and feel. You should also assess the plug-in architecture for ease of use and richness of capabilities. Drupal, for example, has a plug-in architecture that literally "just works". Plug-ins from the official Drupal site download and install just by uploading the archive file and using the administration panel. The plug-in directory is so rich you can find almost any plug-in for any purpose.
... Drupal is what I personally use - having made use of a variety of CMS systems including Joomla, Wordpress and others - and it's up there with the best.
Drupal is more flexible than you think.
Drupal gives you all the control you need.
The theme system gives you complete control over every aspect of presentation.
The software design is amazing modular consisting of an elegant system of hooks and API calls. Your modules can step in at any point and replace default behavior with its own functions without having to hack the core Drupal modules.
Granted to write a sohpisticated module you are going to have to be a competent PHP coder and maybe read a 200 page book.
Simply creating a theme is a bit easier, but still the learning curve might be higher than with other CMSs.
However I found that studying Drupal's inner workings to be rewarding for its own sake. The code is so well designed that I it was almost like reading a text book on how to apply modern software designed methodology to the PHP programming language.
I am not saying Drupal right for everyone, or even for most. People have a wide variety of needs which calls for a wide variety of of feature sets and characteristics.
I wanted a PHP based CMS with well written code, and a highly flexible modular design can be easily extended.
So far Drupal is the best I found.
evaluate whether there are xml / css templates????
> Also, evaluate whether there are XML and CSS templates available that allow you to change the skin of the site, for a different look and feel.
This is a content management system. A content management system is a system that manages content. It doesn't need to manage layout or function or interactivity because it manages content. If a content management system was going to manage these other things it wouldn't be called a content management system.
Why the rant?
I tried Joomla / Mambo, phpnuke, drupal. They are all interesting systems but they all had one failing, they dictated layout of code, they dictated layout of the site. It might be a good, sensible, well thought out usable layout but it's their layout. I may want to build something that doesn't fit into their rigid layout. I may want something that will spit out unstyled content between two tags and leave the rest of the site up to me to dictate. I may not want to have to mess with the source code (which is probably in a source-management system so if I upgrade it will get over-written) in order to use the system.
If you get a chance have a look at CMS Made Simple, www.cmsmadesimple.org. It supports a very sane separation of code, style and content, it is fairly light on the web server, the code is well written and maintained and it has a very active development community and good support. You can leave questions on their forum and people will actually answer them and their IRC channel has always had people there willing to help. Not bad for free. Crucially there are a lot of people using the system on live sites, in production.