Some thoughts on Drupal, an excellent open source community system. I've played with it for over 6 months now, and am using it on a live site. It's not perfect though (is anything ever perfect?)

1. Good code. Drupal, as opposed to, say, PHPNuke, contains good code. The developers continually attempt to keep the codebase clean and modular. The Drupal culture is a coders' culture.

A very nice advantage of this approach is that there are many modules available that extend Drupal's functionality. It is hard to figure out which module is up to date and being maintained, and it's hard to figure out exactly what a module does until you install it, but those are small problems that I'm sure the Drupal team will fix soon.

A disadvantage of Drupal's coders culture, is that features are sometimes coders toys instead of what users really need. For example, the "remember me" feature still doesn't work well, and was removed from the latest version. Big mistake for a community site! On the other hand, you can request features, and offer to pay for them (which is great).

Still, all in all, the approach works. The problems mentioned above are fixable.

2. Limited templating. The templating system of Drupal is built with the purpose of letting an admin user customize their site through their browser interface. By clicking some checkboxes, you can customize navigation, and add "blocks" to your site. However, this means less support for easy template coding.

Drupal uses 1 file for your template (as opposed to a separate file for each section of your site, like Moveabletype does). This means that, if your entire site has the same structure to it, you're fine. If you want different parts of your site to look differently, you end up coding a lot of PHP.

A second problem with the template file is that it is full of php code. There is no clean separation using tags, like most template engines use. The template file uses functions. This means that, to customize the template beyond small html changes, css changes and what you can do in the admin section, you will be coding PHP. Bad. In my opinion, this part of Drupal needs an overhaul.

There is a Smarty wrapper available, but until that becomes the standard (and until you can use multiple templates for different sections of your site), my complaint stands.

If you're a Drupal coder: I know you can do anything with Drupal. That's not what matters. It's about how easy it is to do things out of the box, and how easy things are to customize with limited understanding of PHP and Drupal's architecture.

Multiple languages.
It is possible to provide multiple languages for the templates of Drupal (the text that lets you sign up and such), but the "nodes" (the basic content container of Drupal) do not provide the ability to have multiple language versions of an article (for example).

There are some modules that try to address this problem, but until Drupal provides a standard, out of the box facility to have multiple language versions of an article (including translation facilities), Drupal only partially supports multiple languages out of the box.

Scaling of the UI.
Like many open source CMS's, Drupal needs to think about how it approaches growing websites. Out of the box, the system is optimized for medium size websites. There are too many options, too many pages, and many things take too many steps. Drupal should be optimized for small websites, and allow scaling the UI and functionality to medium and large scale websites. But start with small - that's how most of your users will start.

Overall, I think the Drupal team needs to focus on the basics. Drupal is at a level of maturity now where it is more important to improve basic usability and functionality (like the install process, which they are improving) than to come up with more new and exciting functionality.

If they improve their focus on improving basic functionality and usability, Drupal can become a real standard CMS. If they don't, it risks to become a feature bloated open source CMS as there are already dozens if not hundreds on the market.

# Apr 7, 2004