Thoughts on Drupal

By Deane Barker on January 2, 2009

I’m working with Drupal for the first time on a hobby project I’m doing with Seth Gottlieb (about which you’ll hear much more later...). Adam Kalsey – Drupal ninja that he is – is advising us on the technical implementation, and he’s been a great help.

Why Drupal? Because I didn’t know it, and figured I needed to. Seth and I, after all, had the discussion about how there are people like to feel smart and people that like to feel stupid. Learning Drupal has made me feel plenty stupid, and that’s exciting. And there’s no better time to feel stupid while learning than on a project you’re doing for yourself.

During the process of learning Drupal, I’ve come on some observations. Keep in mind that these are from a content management veteran, but Drupal newbie. In no particular order:


Drupal is configurable as all get-out. It’s a developer’s dream in the sense that there’s nothing that can’t be added to or changed.


Drupal is flexible enough that I don’t know if I’d even typecast it as a “content management system.” It’s an application framework, more than anything. You could write apps on it that were only distantly related to traditional content management scenarios. (Adam pointed me to Sprout Builder which is written on Drupal and seems to have nothing to do with content management.)


Drupal is essentially a bundle of hooks, or events. You write modules that sit around a listen for the system to do something, at which time they execute some code. A request to a Drupal site is essentially a big town meeting of all the modules:

Okay, everyone quiet down! We have this request here. Who wants to handle it? Let’s have a show of hands...ah, screw it, just form a line...

I find it amazing that Drupal can scale. The bootstrap process it runs through on every request is amazing. But, no matter how complex it is, I know Drupal scales like a mofo, which makes it all the more impressive.


Most of the “code” you write for Drupal isn’t really “logical execution” type code. It’s essentially configuration options set using PHP. There are less “if/then” statements per line than any other code I think I’ve ever written. There are most array declarations (and to a greater nesting level) per line than any other code I think I’ve ever written.


The form API is pretty remarkable. I haven’t found a CMS with a better one.


Probably the greatest skill you can cultivate as a Drupal developer is to learn all the available modules, what they do, and their strengths and limitations. Drupal is completely built on modules (there’s very little in the actual core), and I’d venture there’s more submitted code for Drupal than any other system on Earth. You could build a site with an awful lot of functionality without ever writing a line of code.


Drupal is “casually” customizable. The main method of customization is file- and function-naming conventions. Contrast this to eZ publish, which has a central authority on everything. While naming conventions are very simple to do, I fear that it might get out of hand. Already, some of the file names in my theme directory are awfully long – like, 10 segments separated by underscores.

So far, it’s going well. I’ll keep you updated.

Comments (7)

Wim Leers says:

“The form API is pretty remarkable. I haven’t found a CMS with a better one.”

Is there another CMS with a Forms API? I mean, comparable with Drupal’s, not just a wrapper function for generating a select.

BryanSD says:

I can already hear the Drupal crowd (me included) chanting, “Join us...join us...join us...”. I for one am looking forward to see how your Drupal quest goes. Perhaps, someday we could actually get an actual South Dakota Drupal group going.

Brade says:

My company’s using Drupal for a big honkin’ project right now, and I too am impressed and intimidated in equal measure. Luckily a bunch of Drupal know-it-alls have put out an O’Reilly book recently:

I haven’t checked it out yet, but it sounds like just the thing I’ll be needing.

Katrin Silvius says:

I love that Drupal can be a central hub for pretty much anything. For example on we are running external applications inside Drupal – unless you know what to look for you can not tell where Drupal ends and the other application starts.

Allen Fuller says:

I am evaluating both Drupal and eZ Publish for a project, and would be greatly interested to hear more of your opinion about the relative merits of the two systems as you progress.

hakki kekilli says:

I have a feeling this is going to make for some crazy-good Drupal-based stuff.

Chris Parsons says:

A bit of a convert already myself, but for the plethora of benefits/problems with $CMS, this was a great angle that I rarely see approached. Excellent article!