Want to get Lullabot article, videocast, and podcast announcements delivered right to your in-box? Let us know your email address (we won't share it) and we'll let you know when anything exciting happens.

Drupal Community Philosophies

In presentations I usually point out that Drupal is three things:

  1. A content management system: The forms you fill out, the buttons you click, and the content you work with. The stuff you interact with every day while you manage your site.
  2. A content management framework: The low-level APIs that let you extend and modify Drupal to make it do everything from ratings to image galleries to your dishes.
  3. A community: The thousands of documentation writers, developers, testers, support providers, designers, and evangelists from all over the world, working together to make Drupal a better platform every single day.

It's this third point I'd like to talk a little more about today, by providing some insights into the general Drupal community philosophies that guide our interactions with one another, and as a result, the growth and direction of the Drupal project as a whole.

The Drupal community has several core philosophies, some of which are documented, others of which you just kind of pick up from spending enough time watching various interactions on the forums, on issue queues, and on the mailing lists. Here's a brief guide, for the uninitiated.

Code quality is #1.

Particularly in Drupal core, but also in certain well-maintained contributed modules, every single line of code is subject to an excruciating level of peer review. Code must conform to coding standards, must be well-documented, and must be easy to follow. Did you forget the period at the end of that inline comment? It'll be slapped back down to "code needs work" faster than you can say "complete sentence."

While this sort of back-and-forth over seemingly meaningless details can frustrate both new and established contributors alike, this attention to detail is one of the things I love most about the Drupal community. The goal is to make code that was written by literally thousands of people look and act like it was written by one. This makes it easy to understand what's going on, no matter which dark corner of Drupal you're investigating. And if the key person who developed a particular subsystem of Drupal drops off the face of the planet (which does happen from time to time), we're all saved by the fact that their code didn't get into core until it was documented well enough for someone else to pick up the torch where they left off.

Keep core simple (but bring on the APIs).

Drupal's goal is to accomplish what the vast majority of sites will want (and expect) out of the box. While there are many ways one might want to handle user registration (let users register via e-mail, make them validate their e-mail address, assign a random string to their profile on registration to act as an ID code), core provides a few simple options that fulfill the needs of 90% of sites out there. If you need something more or different, you turn to add-on modules.

There's resistance to adding more knobs to twiddle and more buttons to press in Drupal core. The general consensus is that core is more than complicated enough, and should actually remove features, not add them. There's historical evidence for this: Archive module was removed in favour of Views. Moderation was removed in favour of contributed modules such as Modr8 and Revision Moderation. Drupal module was removed in favour of OpenID (ok, well that one was more of a swap than a removal). There are also people in the community who are pushing for modules such as Forum, Poll, and Blog to be removed, although there's contention around taking things this far.

Before that makes you run screaming over to PHP-Nuke, it's worth pointing out that Drupal covers its bases by providing a bunch of robust APIs that let both custom and contributed modules extend Drupal to achieve whatever crazy use cases people can envision. Add new form fields to your site's content. Add custom validation routines to the user registration form. Make a block that shows random bowling scores. Drupal lets you do it all through its hook system, aka the "content management framework" aspect of Drupal. And developers are hard at work all the time adding additional hooks so that Drupal can be extended in even more ways.

The drop is always moving.

Drupal core developers are encouraged to constantly innovate new and better ways of extending the platform each release, at the expense of backwards-compatibility. This approach means that Drupal carries little to no “baggage” with it from release to release, in the form of legacy code. The consequence, however, is that modules and themes that worked under a previous version of Drupal must be “ported” to work with the current version; Drupal 5.x modules will not work with Drupal 6.x, and vice-versa. However, an upgrade path is always available which will ensure that any “data” (database records, configuration settings, and so on) is brought forward from release to release when upgrading.

And not only is that drop always moving, it's moving fast! The Drupal community generally tries to get one new release of core out per year. Because only the current version of Drupal and one version previous are supported, that means most sites will end up having to upgrade every 18-24 months, unless they feel qualified to do their own security audits.

Action is gold.

Perusing the Drupal.org forums and issue queues, you’ll see there’s no shortage of people with opinions on what Drupal should be doing differently. Drupal, like many other open source communities, is a “meritocracy” do-ocracy. The folks who go beyond talk and start contributing to the project tend to get better support, have their opinions taken more seriously, rocket up the Drupal learning curve faster, and attract more Drupal clients.

It's worth pointing too out that "action" doesn't just mean code. There are a plethora of other ways to contribute, including reporting bugs, writing or fixing documentation, creating themes, submitting translations, testing and reviewing patches, creating mock-ups of how an interface can be improved, doing "issue queue housekeeping," and more. And the Drupal community in particular is one where any contribution is seen as extremely valuable -- this is not a geeks-only club.

Others?

Any other Drupal community philosophies you've picked up on out there that you'd care to share? :)

Comments on this post will automatically be closed three months from the original post date.

Comments

APIs everywhere...

One trend, and maybe already a philosophy, amongst contrib modules is the realisation that many things are just too complex and/or have too many use cases to be crammed into a module with a catch-all UI and a distinct approach of doing stuff.

I really like the solution of covering the bases by providing an API for the heavy lifting, then build small modules on top for more specific approaches. It also makes it easier to build a custom module without re-inventing everything from scratch...seems to really have caught on.

The other trend/philosophy seems to be that there is more of a hierarchy of modules, with the larger ones providing their own hooks and APIs for the next level and so on.

In other words, if Drupal core is the Death Star, Views and CCK are Star Destroyers, FeedAPI is a Starfreighter and there's tons of little shuttles and cruisers that swarm around and look for more module<-->spaceship analogies that I don't feel confident enough to provide, but you get my drift...

Darth Drupal

The level of geekery in that analogy is simply mind-boggling, but at the same time I cannot bring myself to disagree with it. :-) (Although I think Views 2 qualifies for Super Star Destroyer status...)

Wait

Where's the Drupal Do Dishes module?

It has to exist, because everything Angie wrote is true.

There's no mercy for not having a period at the end of a comment even if it'll push you over the 80 character limit, which is also enforced.

One matter of terminology:

I would substitute the term do-ocracy (which I owe to this page and community on communitywiki.org) for meritocracy. Having spent a fair share of time in academia where "merit" often equates to test scores, meritocracy is a concept I have come to detest and fear as noble-sounding cover for elitist privilege and unjust inequality.

You aren't recognized in the Drupal community for any unmeasurable intrinsic merit, and the sooner you realize that the better.

You are recognized for what you do.

So some reader out there get on with it and code the Drupal Do Dishes module!

Good call...

I've updated the text. :) I agree that do-ocracy is definitely a superior word to describe the Drupal community's interactions and structure.

Oh. And dishes.module was originally written for Drupal 4.6 but, like most monolithic modules of its day, has since been replaced by a straight-forward CCK and Views recipe. ;)

Also? NicolasH almost cost me a computer when I made the mistake of drinking something and reading his comment at the same time. :D

This post illustrate very

This post illustrate very well the Drupal community. When you said about keeping core simple and removing features, I remembered at first about the others CMSs projects like Plone or Xoops that add more and more features in every release. Not that I think this is a bad concept but the product got so heavier that is impossible to a small business mantain the costs of hosting and etc. There's the maintanability also...

The do-ocracy is something very interesting. I already got caught asking why a module developer don't did some X decision over Y and in almost all the cases, I got myself hacking some code to see the improvements (or not) before start a thread in the project or writing some documentation. I think this makes the difference, and think how many people contribute with small code fixes or with threads that turns into valuable docs.

Well, one thing is certain, there will always rock stars like Bono and a lot of fans (-contributors also!) in any community.

The Human Element

Another wonderful Drupal philosophy is how the community interacts with and helps one another. Users are encouraged to contribute from day one. There are lots of podcasts, tutorials and screencasts created for only one reason; to help others understand how to best use this wonderful framework. Drupal developers seem genuinely interested in what others are trying to do. As questions arise, community members are willing to answer or work together to craft a solution. As each individual become more adept at using the platform, the community as a whole benefits. Win-Win is always a good thing. Blessings! -NP

Solving the greatest number of problems with the least code

You kind of covered this in your second point, but I think Dries observed somewhere that his ambition was never to make the most powerful system, but a system which solves a large number of problems with a small amount of code.

I never cease to be amazed at the concision with which things are done in Drupal. I imagine the real Drupal gurus are people who spend a lot of time reclining with their feet up on their desk, staring at the ceiling, a pencil protruding from one corner of their mouth, waving their arms and muttering to themselves as the flashes of brilliance rain down on them. They don't spend a lot of time tapping keys, because they don't have to.

Spidering your way through api.drupal.org is a far better education for an aspiring programmer than you could get practically anywhere else.

Oh, and transparency is another fantastic feature of Drupal. Say what you like about the deficiencies of the project module versus other systems, but it's simplicity lowers the barrier of entry for people who want to help, or just want to know how active and well-supported a particular module is. In retrospect, I'm really shocked at the way third-party contributions to other systems I've used which shall remain nameless are often (mixed metaphor alert) black-box one-man-shows.

View for lullabot.com admins

Good article, but I chose it to communicate one view to lullabot.com admins. Please mention some copyright information with the articles and others stuff. My apeal is for sharable ones like Creative Commons or whatever you think suitable. So people like me from Drupal Community may share it.

Thanks for such great stuff.

I would also argue part of

I would also argue part of the community is how you are able to ask questions and get answers quickly in the forums. Even if you are brand new. For example I came from a Microsoft background and was using Drupal to create a Microsoft Visual Basic Source site. Even with these two strikes against me I found people were very willing to help and were excited that I was jumping off the Microsoft bandwagon.

It was very helpful :)

A very interesting article, indeed (including the comments!). I have started a recent research on Drupal community and I am having difficulties finding some summary of what the community looks like, including some guiding principles and philosophy. Thanks for this piece!

The "State of Drupal & Drupal Community"

Hi, first thanks for this great Article, that contribute even more for me to clear up the actual State of Drupal & Drupal Community.

@Angie Byron - I have incorporate your personal definition about Drupal on Common Terminology. I hope to get yor OK. That would be great. Of course please review if something its out of topic.

@It was very helpful - We are all providing a great support to structure the Drupal.org Documentation so far that mostly every one will find what it's looking for!
Consider that "Drupal Org Redesign" is an on going unbelievable task!

Kind Regards
Wolfflow

The "State of Drupal & Drupal Community"

Thanks for this article, it's great. So great that we've made it 'sticky' on The Webmaster Forums. Now we don't have to repeat ourselves, just send people to this article! Cheers