Project of the Month: Drupal Project.module

Submitted by Larry on 16 January 2007 - 11:25pm

Well here it is half-way through January and I've not made a POTM post yet. Bad Larry! Well, no time like the present. And the first present goes to a sub-project within Drupal that gets far less respect than it should. In fact, it's the sub-project that makes other sub-projects possible: The Project Module.

Drupal, like many open source projects, "eats its own dogfood". That is, Drupal.org runs on Drupal. Since Drupal.org also hosts hundreds of contributed modules, it's a Drupal module that makes it possible to manage not only the Drupal project itself but all of the many contrib modules that make Drupal the community powerhouse that it is. That module is the Project module.

Project isn't a new module, by any means. It dates back to 2003. Project module was fairly specific to Drupal.org itself, however, rather than to software development in general. It was also internally a mess. In 2006, however, Derek Wright decided it was time to give the module some much needed love. He quietly started revamping its internals to make it more modular, more flexible, and more extensible. The major push, however, came in the fall when Derek decreed that he was looking for sponsorship to fund a major overhaul. There were two key components to the overhaul: Individual releases of a module would become Drupal nodes in their own right, and with that contrib modules would be able to maintain their own version branches and tags independent of Drupal itself.

That may sound like gobbldygook to non-developers, but from a community standpoint the significance of that change cannot be overstated. Drupal core, great piece of software that it is, is nothing without the huge collection of first-rate contrib modules that have sprung up around it. You can't run a very successful site without dipping into contrib, and just about every site I've ever done has used a common set of critical contrib modules. Drupal is its community, but until recently contrib modules have been, essentially, second-class citizens within Drupaldom. A given module could only be flagged as working with a given major-version of Drupal. Bug fixes? New features? No way to tell those apart. (Derek himself explains it as well in an interview with Lullabot.)

Imagine if, for example, Windows itself had major versions but all Windows-based software had no version number at all, save which version of Windows it worked on. "This is Adobe Photoshop for Windows XP. But now we added a ton of new features, and it's now Photoshop for Windows XP version, uh, late September!" See how it really doesn't work?

That's no longer the case with the newly revamped module release system. Now, each module can have its own version control, and real version numbers. That makes modules first-class citizens, which is critical as Drupal's community continues to grow exponentially.

I've yet to take full advantage of the new release system for my own modules, but just being able to better track versions of other module's I've been using has been a big help. Improvements keep rolling in, too, as Derek keeps working. Most importantly, though, it recognizes the importance of contrib modules to the continued health and well-being of Drupal, a fact I have been trying to highlight for some time.

Derek is still actively working on improving the module and still has a donation request out. That's why Drupal's Project Module is my Project of the Month for January, and receives a well-earned donation. Thanks, Derek!

(And Happy Birthday and Happy v5 Release to Drupal itself!)