AKA, my time with the blue droplet. I recently built a website for a client. I initially recommended wordpress, as I often do but the client suggested the website would grow into an application. You can certainly do webapps with wordpress, but it seemed worthwhile to look at alternatives. Drupal 6 seemed to fit the bill:
- lots of documentation (always important in any evaluation)
- great community
- tons of additional functionality (called plugins)
- customizable UI
- multiple languages supported
So, the site is launching soon and I thought I’d jot down my thoughts. Keep in mind that I’m very much a drupal newbie.
- I was astonished at the plethora of modules. In fact, just about everything we needed to do functionally was done; it was a matter of getting the right modules installed and configured. I don’t think I wrote a single line of code, though I did do plenty of code reading.
- The look and feel were very customizable. I ended up using a large number of blocks (isolated chunks of content that you can control and place). The ‘clean’ theme was pretty easy to customize via CSS. The Web Developer add on for Firefox was invaluable for this process–just hitting ‘control-shift-C’ and mousing over a component let me know what selector to use.
- WYSIWYG support was pretty good, including image uploading (as a separate module), control of which of the TinyMCE buttons to display, and a dropdown to surround text with custom css class names. I ended up using the HTML Purifier to scrub input from admin users.
- The webform module allows non technical users to create complicated forms quite easily. I didn’t really push this module, but it appears to have support for multi page wizards and other complex stuff. But just using it for validation of required fields saved a lot of effort.
- Drupal6 has a robust upgrade mechanism. At least, it sure seems like it–I have upgraded modules and the core functionality a few times and haven’t had any issues.
- We started off on a medium strength server, and were not caching much, and performance was a big issue. There are a number of resources out there, and some research is worth your while. Drupal is a big, complicated system, and like all big complicated systems, tuning is a continual process. Luckily, there’s a fair bit of built in caching that can be enabled with a checkbox.
- Deploying from one server to another is an issue. I talked to a friend who does a lot of Drupal development and he mentioned it was a real thorn in the side of drupal. There’s just not that much available supporting the ability to move code from staging to production and content the other way. To be fair, this is an issue for most CMSes, and there are some project (deploy is one of them) attacking this issue. I don’t know of any open source CMSes that solve this problem entirely.
- The SEO components seemed pretty good, but I was surprised that they weren’t bundled with the base Drupal installation. You have to install a module to enable meta tags. And another one for page titles. Page titles! (I looked at but was quickly overwhelmed by installation profiles, which might obviate some of the module installation. There didn’t seem to be much support for Drupal 6 profiles.)
- The complexity of Drupal, which allows it to do so much, means that there’s a lot to learn. It can be a bit overwhelming at times.
The long and short of it:
If you’re looking to build a web application (not just a site), have some php expertise and some time to get up to speed, and need a lot of functionality, Drupal is worth looking at.