Today I let you participate in my odyssey through two of the CMS stars at the PHP sky. Drupal 6 and Joomla 1.5 are the latest generation of CMS. Both are also announcing themselves as PHP Application Frameworks and both have a powerful developers community behind them. At a brief look these CMS seem to have good concepts behind them. In this article I talk about Drupal. My Joomla experience has just started and will be the topic of a later article.
My intention for studying Drupal and Joomla was to get rid of the annoying work of setting up a user management with user registration, rights management (ACL or whatever) and all the other parts - name them:
Putting the above and many more common website features onto an open source platform should have many advantages. It should allow me to concentrate on additional (less common) features of my projects while hundrets of open source developers maintain the framework I build my websites on. Furthermore Drupal and Joomla would come in very handy for redesigning old projects, too, as the boring part of handling users is already done.
All this made me have a look at the latest versions of Drupal and Joomla, which are in direct competition.
When first diving into the Drupal experience, it was the age of 6.0 RC anything. Drupal 6 promised the next big step several of its components made. The forms API for example got a redesign, being much more slim and easy to understand. For those of you who don't know the forms API: that's drupals concept of easing HTML/PHP input form handling. The developer describes the fields and what kind of information he expects to be entered. Drupal than autonomously verifies the information and prompts the user in case something wasn't filled in or was filled in wrong. A real nice thing making the web easier and safer.
There are many other cool tools Drupal offers. Think of database abstraction, templates (they call 'em themes), a callback system (called "Hooks" in Drupal), caching in multiple layers, a modular concept ... well excuse if I forgot something. Of course I did, because there is simply too much worth mentioning. Please therefore adhere to the Drupal online docs to get a complete overview.
Besides all the good stuff: lets talk about the bad stuff, as that's what makes the Drupal webmaster life a nightmare. Don't get me wrong. Drupal has many advantages and the disadvantages often result from the yet not adapted Modules. Here we are, the first disadvantage of Drupals latest release version.
Drupal has a very strict life cycle of a year and if required 2 month more. One year after Drupal 5 left RC status (thus becoming a recommended release quality version) Drupal 6 was ready as an RC 4 or 5 IIRC. Two months later, Drupal 6 was officially released to the public. The Drupal 6 core therefore was considered stable by Drupals core development team. When Drupal 6 reached this state, nearly no module was even in beta state for Drupal 6.
This effectively means the Drupal 6 CMS was actually unusable for production quality sites while the core team and the press announced the new version. For me as a Drupal beginner (or better evaluator) that time this means I started learning an implementing things in the hope the required modules would reach Drupal 6 RC status before my parts of the project were ready. Guess what: now - after over 6 months - most of the really important modules are still at RC state X and didn't reach final state.
Drupal has a way or managing or sorting content that's simply weblog style. Whenever you post content to your Drupal site, it will become the top-most content of the homepage (optionally) and of the rubric (which is - in Drupal termn - a taxonomy vocabulary). The content is ordered by date.
Well, if you think about native content - which for example a book could be - how much sense does it make to sort all chapters by date? An author will often write down a chapter when his thoughts come up. This is at least the behavior for scientific reading matter like IT books or manuals. Novel authors may write down a book chapter after chapter, but even then the book is written and read in an ascending order. Drupal orders by creation date in descending order.
However, you can make Drupal 6 order content the way you want - or even shuffle it. But - for the latest version - this is a path with many pitfalls called beta and RC custom modules.
Setting up Drupal 6 is very easy and straight forward. The installation begins with unpacking the Drupal files to a local folder. I must admit, as a Windows user I've got no idea if that's also the installation procedure for Linux or whatever operating system you use. But at least for Windows, unpack Drupal and upload the whole directory structure to your webserver.
Of course Drupal requires a database, so now you should log into your webserver config of your ISP and create a new MySQL database. Afterwards, enter the URL of your website in your webbrowser and enjoy the Drupal guided procedure of setting up the database, setting the required writing permissions to some files and folders (e.g. the config file or the folder for uploaded files) and you're done.
By the way, installing modules is a similar procedure... uploading the modules folders and files, activating the module in Drupals administation interface via webbrowser.
After I've read lots of docs and PHP code, finally I've been able to write some modules. One for allowing personal messaging between user accounts, and one for allowing shared administration (or better moderation) of content. Certain users (moderators) should be enabled to approve the content of others.
From some weeks of Drupal module coding experience my conclusion is, Drupal has a never ending learning curve. When coding for Drupal you'll never ever understand the whole "Drupal machine". The reason for this is, Drupal uses polymorphism extensively and often accepts nearly undocumented associative arrays to pass data to them. A Drupal coder has no choice but reading all through the source code hours and hours searching for the place where another gracious coder gives the very hint.
Now you should understand why I introduced this article's topic as an odyssey. Please don't misunderstand, I really like Drupal for the ease of it's installation and usage. It's perfect for a blog like this. But it's not a CMS out of the box. If you are about to use Drupal for a new project, you better should carefully analyze what features the current major version already supports and what modules are available. Most likely it's advisable to use the previous version, as many web developers still recommend to use Drupal 5 instead of Drupal 6.
So far for the Drupal part of my odyssey. The Joomla part has just begun and what I can see for now is that Joomla 1.5 has a very poor rights management. There are just a hand full of static groups defined. They say Joomla 1.6 will have ACL ... well, we'll see when it's out... TO BE CONTINUED