Last year (2008), I decided to migrate our somewhat antiquated Turkish aquarium site www.bilyap.com.tr onto a decent content management system, and started to investigate well-known open-source Content Management Systems (CMS) like Joomla!, WordPress and Drupal.
I am a proficient programmer and an experienced content organizer. I wrote web applications like forums, membership systems and even an online store with a back office myself ten years ago (using php serverside script and MySQL database). But I had never experience with any content management systems before.
After consulting some friends who are experts of internet technologies I came up with a short list of CMS that included Typo3, Expression Engine, Joomla!, Drupal and WordPress. I read every tutorial and textbook I could find about these systems and installed them all on my computer. See XAMPP for Windows on Apache friends to easily install the Apache-php-MySQL bundle on your PC. I installed XAMPP Lite which was more than enough for my purposes.
I tested all these CMS software locally on my PC; installed extensions, made some example menus, categories, pages and so on.
Typo3 is a very extensive system that require quite much time to learn though its tree structured interface is quite intuitive. The decisive factor for me was however not its difficulty; Typo3 is a heavyweight software that requires dedicated web servers. That is, not suitable for the most common shared web hosting services.
I’ve spent quite much time with Joomla! After installing and deinstalling several extensions I had the feeling that the conceptual philosophy of this CMS was centered around some fancy widgets rather than a solid architecture. And maybe by some bad luck I observed that some extensions that I installed had some side effects which distorted the whole functionality. I had to deinstall all extensions several times and start afresh. I don’t want to do any injustice to Joomla! Let me repeat that I am not a CMS expert. I might have done some technical mistakes myself during these tests. Nevertheless, I couldn’t find the architectural components in Joomla! like a limitless taxonomy, fully customizable content types and workflows.
I liked the flexible and solid architecture of Expression Engine (EE). You can define content types as you want, and customized templates for each content type. EE might be ideal for experienced web masters who know exactly what they want. One important drawback of EE is its novelty; it is a new CMS software and doesn’t have many extensions yet unlike Joomla! or Drupal that have a rich library of all sorts of extensions from forums to video players. If you are working with EE you need to develop some extensions yourself, but I didn’t have so much time and expertise.
I liked WordPress very much even though it is one of the most popular CMS or blog software. It comes complete, flawless and compact out of the box for a simple blog or magazine site. You can learn and use WordPress very quickly. The administration interface is easy, practical and intuitive. You can search and install plugins directly from the administration interface. And WordPress is fast because it is a lightweight CMS software. This website (www.tuncalik.com) is for example powered by WordPress. I needed less than a week to understand WordPress enough to publish my personal site. I can recommend WordPress 2.7 Complete as a starting point which helped me a lot.
I can tell you which WordPress plugins I installed to prepare this simple site:
All in One SEO Pack, DBC Backup, Easy AdSense, Easy Contact, Lightbox 2, NextGEN Gallery, Quote Comments, rpx, Snap Shots, Thumbnail For Excerpts, Twitter Posts, Widget Logic, WP-Mail-SMTP.
If I started a new aquarium site today from the scratch with emphasis on nothing other than content quality I would probably do it with WordPress. WordPress has everything one needs including integration to popular open-source forums like phpbb or SMF, menus, links, sidebar widgets and handling of multimedia content.
But it’s another story if you want to migrate an existing site with a legacy in terms of structure and functionality. I wanted to have different page (content) types like fish, plant or article pages, multiple categories for each of these content types and a customizable workflow system in order to delegate work related with the flow of content into the site.
After four months initial of research, I decided finally for Drupal because it has the solid and flexible architecture I want. You can define content types (for example a fish, plant or article page) by adding fields of any kind -text, image, audio, video or whatever- into a base content, which is called a node in Drupal jargon. You can define as many categories as you want and assign them to the content types you wish. You can also define new roles and assign view/edit/delete permissions to these roles (user roles and permissions). Creating members-only pages is for example an easy task with Drupal.
You can download following paper for a basic features comparison:
A Comparison of Capabilities and Features on Drupal, Joomla! And WordPress
Besides the solid architecture with a flexible template system, key modules like taxonomy (for categories and tags), CCK (content construction kit for content fields), views (for flexible database retrievals and customizable lists) and ImageCache (sitewide image handling) make Drupal so flexible and powerful.
But don’t underestimate the time Drupal needs. You need to read tutorials and textbooks to understand Drupal. It took me almost three months to understand the system and have an overview to the extensions I might need. At least another four to five months to install, test and configure all these modules along with template and CSS (cascade style sheet) adjustments to have the website I wanted.
Once you started implementing a complex website with Drupal you will soon notice that the basic knowledge of an administrator for installing and configuring modules will soon come short. You are often confronted with cases where you need to dig deeper into the code and configuration files. You need to understand the Drupal template system, basics of php programming and Drupal APIs in order to realize the functionality you want.
Drupal doesn’t come complete out of the box like WordPress. You need to install and configure many extensions (modules in Drupal jargon) before starting a basic site. Even a basic WYSIWYG editor needs lots of configuration and adjustments. You must be ready for occasional bugs and code corrections. There was a bug for example in the popular FCKeditor for which I spent almost two days to find the solution. Finally, I had found the solution in Drupal community forums. I had similar experiences with other importand modules like workflow and panels. Each time, I found the solution in Drupal forums, but each time it was a considerable waste of time. What annoys me most is, some most valuable modules are badly documented. You don’t even understand what the module is for whereas a few intelligable words could make everything clear.
It was eight months of hard work for me to develop a Drupal powered site with the features I wanted. But in the end I am very happy with the result.
Tunç Ali Kütükçüoğlu, September 2009, Zürich
I recommend following books for Drupal. Drupal 6 Site Builder Solutions or Using Drupal to have a nice overview, Pro Drupal Development to have a deeper understanding for which there is no escape if you want to utilize the whole potential of Drupal. You need to have also a basic understanding of php and CSS. If you have no time or taste for such technicalities I recommend you to use WordPress instead.
- Drupal 6 Site Builder Solutions
- Using Drupal
- Drupal 6 Themes: Create new themes for your Drupal 6 site with clean layout and powerful CSS styling
- Pro Drupal Development, Second Edition (Beginning)