Open source CMS software

The history of Drupal gives a good idea of its character. It started life in 2000 as a bulletin board system, and was originally called dorp, the Dutch word for "village".

This community spirit has remained central to Drupal, and is echoed in its large, vibrant developer group and its independence from any controlling commercial interest. The software itself provides excellent facilities for community sites, such as polls, forums, blogs, and RSS feed aggregators. Further evidence of its suitability for such deployments comes from the DeanSpace project (http://civicspacelabs.org/), where Drupal was used to coordinate around 100 separate websites set up to support Howard Dean's 2004 presidential campaign.

Installation, while straightforward, is not for novices. It consists of uploading a set of PHP scripts, running a script against the database server to build the data store, and editing a single configuration file. This is well documented, but may be bewildering for newcomers.

The core of Drupal is very lightweight: you get enough functionality to build a simple website of categorised pages, and not much else. If you want to do anything else with it - implement a blog engine, for instance, or edit menus - you have to find those 'Modules' (as Drupal extensions are known) and switch them on. The functionality is present in the default installation but it's disabled by default. Fortunately switching them on is simple, and consists of ticking a few boxes. Adding new modules is similarly straightforward.

One area where Drupal's elegance shows through is in its handling of content: all content items are treated as nodes, and managed through a consistent set of interfaces.

By default, content must be edited using raw HTML. Again, however, there are modules which provide WYSIWYG editors and other modules for managing image uploads and inclusion into nodes. However, the maturity and elegance of these modules is no match for that of Joomla!

Navigation is one area where Drupal falls down. When new content is added, it doesn't appear in the menus by default. You can link to your content once you've turned the menu customisation module on: but this is can be a bit fiddly. Hope comes in the form of better support for adding nodes to menus in the next version, currently in beta.

On the plus side, Drupal has the most standards-compliant and accessible XHTML output of any of the systems reviewed here. Templates are simple to develop, consisting of a handful of files written using a mix of HTML and PHP. Many templates already exist, and are easy to adapt if they don't suit your needs.

Another great feature is Drupal's comprehensive and powerful category system. This makes it ideal for organising content on sites with large numbers of contributors, as content can be assigned to multiple categories, and categories can be organised hierarchically or horizontally (via "related terms").

From a developer perspective, Drupal is well-designed and compact, with an extensive API. This makes it easy to create modules which tie deep into the Drupal core, enabling development of custom content types, content filters, and even new templating systems. This depth is rare among CMSes.

Add to this nice features like search-engine-friendly URLs, the ability to retain valuable, existing URLs as aliases to Drupal URLs, and a simple, usable permissions system, and you have a very flexible, powerful system.

Verdict

A great base for bespoke web applications or community sites, but not for beginners

Requirements: PHP (version 4 or 5), with MySQL or PostgreSQL