A Glimpse into Drupal's Open Source Process

Submitted by Jeff Schuler on Wed, 03/11/2009 - 20:37.

Drupal is free and open-source software. Anybody can download, use, modify, repackage, and redistribute it (event at a price,) freely. Open source is not only key to its distribution but also its development, culture, and very nature.

Drupal is modular to its core, meaning it's made up of relatively small pieces, loosely joined. Adding a new feature to a site is often accomplished by installing or creating a module to do so. The collapsible sidebar menus on this site are driven by a module called DHTML Menu, we're using the Donation module for a PayPal donations interconnto  Google Analytics module for tracking traffic, SaveGuard to warn before allowing to browse away from a page when editing, and the list goes on... Blog is a core module, and Aggregator, and Forum -- these are the modules that comprise Drupal itself, and come standard -- out-of-the-box, (though thankfully there's no box.)

A big part of Drupal's major releases, (this site is running 5, version 6 is the current release, and 7 is under development,) is the rolling of contributed modules into to core. For example, Drupal 6 brought the OpenID module into core, and Drupal 7, CCK. These modules were originally created by developers who had an itch to scratch -- maybe for a client, maybe their own interest. CCK was contributed in 2006, and is now the second most-used contributed module. OpenID, begun the same year, is much further down the list in popularity, but decided an important inclusion -- for the evolution of Drupal in the emergent distributed online identity space. The community chose that these modules should become part of the basic Drupal installation, instead of discovered and installed separately.

When a module is contributed, it becomes part of the open source process, and managed on Drupal.org. Its project page, (e.g., http://drupal.org/project/rotor ) aggregates info on what the module does, and how to download and use it, as well as provides a platform for feedback and contribution.

A module's Issue Queue is typically the first place to look to see how the module is faring in the wild. Since a contributed module is owned and co-created by the whole community, issue tracking is central to its evolution. Bugs, typos, feature requests, and problems are all submitted and handled here. If I find an error in a module's workings, I submit an issue about it.

Each module has a maintainer, who may or may not be its original creator. An important distinction exists between developer and maintainer -- the latter of which is largely responsible (as facilitator/manager/leader) of the module's evolution, but not necessarily the one writing all of the code to improve it.

If I submit an issue on a module, someone else may then come along and corroborate what I've seen, another person suggest a solution, and yet another write code to patch the issue. The community then reviews and tests the patch and, if approved, the maintainer might then commit the patch to the module. The change has now been incorporated into the module's development version, waiting for further inspection to be marked as 'stable.'

The process can be even more involved at every step: a number of designations of an issue's state exist, and quite a few issues have been around for years, yet without an agreed-upon or implemented resolution. Drupal's core happens on the same system, in the same manner.

Issues, and comments on them, are on the order of hundreds of thousands. Constant discussion, support, and collaboration happen in IRC (chat) channels #drupal, #drupal-support, #drupal-dev, and many more. The ecosystem of support functions well. Its strongest members lead with the realization that handing out ownership and encouragement inspires investment, responsibility, and great work: a meritocracy and gift-economy. If you use Drupal, are you contributing back? You might not realize how easy it can be. It's not just your responsibility or the good feelings, it's your community and your co-creation.

It's amazing and refreshing that an ad-hoc and decentralized group works so effectively. Co-creating a more secure, fault-tolerant, distributed-risk, adaptable, and robust system: sounds like a sustainable solution to me.

[cross-posted at Drupal Cleveland]

Drupal Cleveland

  Thanks Jeff for organizing and presenting so much information.

Thanks also for cataloging all of the Drupal sites operating out of NEO.