Last updated May 2, 2010.

A lot of people have a lot of suggestions for how the Drupal community could be improved. This is fantastic, as it shows that people genuinely care about Drupal, and want to see it improve.

However, it is unrealistic to expect every request to be implemented. Drupal is a community of volunteers, and since there are more things to be done than there are people to do them, those volunteers are forced to pick and choose their battles. Changes also take time; even changes which are "technically" simple (such as enabling a module or two on Drupal.org) need to be given consideration in terms of how useful they will be to the community as a whole, whether there are any adverse effects to doing so, and whether or not effort is best spent there or in another area which may have a greater long-term benefit.

Therefore, a much better and more effective approach than merely asking for change is to take steps to enact change yourself. "Own the problem" -- if you see something you don't like, resolve that you will do what you can to help fix it. Drupal's community provides countless ways in which to do this: participating directly in development discussions, adding or submitting corrections to handbook pages, submitting modifications to modules, and so on.

The success of how your ideas are received depends a lot on your approach. While there is no guarantee that an idea will be adopted into the project, here is an outline of steps detailing the best practice method that more experienced members of the community tend to follow in order to get their ideas heard:

1. Inquire
Ask "why is this like this?" Don't make assumptions; maybe there's a good reason. Try to find out who the people are behind the decision-making process for your particular issue, and talk with them to see if there's a way to create a solution that both meets your own needs and satisfies the existing requirements.

2. Research
See what other solutions are out there that you might be able to extend to meet your needs. See how other people are handling the problem you're currently facing. Talk with other community members to see if they see merit in your idea, or if they have an alternate approach.

3. Propose
In as much detail as possible, outline the steps to fix the problem. Do a mock-up of what you think the solution would look like, and describe how it would work. Anyone can propose an idea. "I think Drupal should do this." Great! But an idea that has been researched, that is backed up with a plan, and which is able to quantify its purpose and effectiveness is far more likely to get attention and to later be implemented.

4. Refine
Get feedback from the community, as this can often improve upon your original idea. Consider the feedback that you receive and either address issues or incorporate helpful suggestions into your plan.

5a. Be patient
Depending on how well you've written your proposal, you might catch the eye of a developer who says, "Yes! I know exactly what you mean, and I want that very thing too!" You might catch the eye of someone with money who says, "Yes! I will pony up $500 to put into a pool for that feature!" which will in turn attract a developer.

However, bear in mind that change in the Drupal community is evolutionary rather than sudden and immediate. Change occurs over weeks and months rather than days and hours. Discussion tends to occur in a time lagged fashion on the forums and through email over time. It's not just one person that makes the decision, it's generally a group consensus. Keep in mind that while your proposal makes sense to you, it may not make sense to a majority of others at first.

5b. Be willing to do-it-yourself
Sometimes the best option is to take matters into your own hands, and Drupal.org gives you literally dozens of opportunities to do so. You can:

  • Submit a patch via the projects system to improve modules
  • Engage in discussion with developers via the mailing lists to improve infrastructure
  • Submit documentation with the handbook system to improve documentation
  • Put forward money to hire a developer who would otherwise be working on something else to address your issue.

By contrast, here are some things that will NOT help enact change:

  • Accusations: Some people take the approach of talking in a very accusatory manner toward developers, implying that they are lazy, selfish, uncaring, and worse. Nothing will make people less sympathetic to your cause than taking this kind of attitude toward them.
  • Demands: No one from this community is being paid by "Drupal" to do work, so they tend to go after issues that interest them, or issues that they're being paid by their employers to address. That may mean that no one has the interest or the time to fix your specific issue. Either accept that, or take steps to fix the issue yourself, as outlined above. Demanding that it be done only makes people less willing to help.
  • Impatience: Things take time in order to be properly thought-out, planned, and implemented. Accept this, do not be frustrated by it. If every idea was thrown in willy-nilly, we would not have the stability of a system which we all know and love.

Does this sound like a lot of work? You're right, it is. While none of these steps need take a ridiculous amount of time and preparation individually (an "inquiry" could be a 5 minute conversation on IRC, and a "proposal" could just be a forum post), it requires free time, energy, patience, commitment, and skill to see changes through. And even after all of this work, sometimes ideas *still* aren't implemented for various reasons (read more on the decision-making process at http://drupal.org/node/10261). So try to realize that it is really pretty unreasonable to expect other people both to have all of these qualities, AND to be willing to drop everything and work on your specific issue, all at no cost to you. Have some compassion for the fine folks leading and participating in the Drupal community, and take responsibility to do what you can in order to make it easier for your ideas to see the light of day.

Welcome to the community!