How to contribute to Drupal
Someone asked my this personally and I thought, instead of answering directly, I could write down what I know in a blog post. Note that this is my personal opinion, you might disagree and are welcome to provide suggestions in the comments.
---
So you started using Drupal or are already using it for quite some time to create websites. And you want to contribute something back because you can use Drupal and all these modules for free.
Some seem to think that contributing = "Uploading a custom module" and everything else doesn't count. But that's not true, there are already many thousand modules for almost everything, don't create new projects if an existing one already exists and just needs to be improved a bit to do what you need.
There are many possible ways to contribute something back, some don't even require any special skills, quite the opposite even!
Here is the official documentation about contributing: http://drupal.org/getting-involved
You can find information about the used tools and infrastructure like IRC, issue queue, how to work with patches and so on.
Documentation
Start by reading this: http://www.lullabot.com/articles/drupal-best-practice-document-your-way-...
To write documentation, you don't need a lot of technical skills, yo should be able to write english that is understandable by others though. It doesn't need to be perfect, others can always improve it or correct errors. But someone needs to start writing it.
Many contributed modules are lagging behind when it comes to easy to understand, user-facing documentation. There might be nothing at all or maybe it's outdated and for an old version of the module. You can easily see if a module has some (official) documentation by checking if there is a "Read documentation" in the Resources category on the right side. If there is, read it to see if it is still correct, fix it if not. You do not need any special permissions to do that.
If there is no documentation at all, you can start fresh and once you have something, you can contact the maintainer of the module by creating an issue so that he can review it and add a link to it from the project page. Documentation can be basic information about what the module can do, how to do configure it or it can be detailed information on how to customize the module using hooks, Rules, Views and so on.
See also http://drupal.org/project/documentation
Help maintaining the issue queue
Large projects often have many, many open issues. Quite a few of them are possibly duplicates. Look through them, if you find duplicates, close on of them (the one with less information) as "closed (duplicate)" and link to the duplicate issue. See also below for helping with tracking down bug reports, try to answer support requests and so on. Check if a requested feature already exists and explain on how to use it.
Tracking down reported bugs
Many of the large contrib projects (and core obviously too!) have dozens or even hundreds of bug reports. Some of these only have very little information given or depend on specific configuration or other modules installed on the site. Look for bug reports which have a "active" (or "postponed (needs more information") status and few or none comments. Here is a list of things you can do with them:
- Try to reproduce the issue based on the provided information. If you can reproduce the bug, provide detailed steps and describe your configuration and other modules installed on the site where you reproduced it.
- If you can't, ask for the above (steps to reproduce, installed modules and so on)
- If it's not a bug but just needs something configured differently or another module or ... explain that, switch the issue to "support reqest" and set it to "fixed". Even better, create a documentation page and point to it in the issue.
- Reclassify the issue as necessary, maybe it's not a bug but a missing feature, or not critical but only a normal bug. (See http://drupal.org/node/156119 and http://drupal.org/node/45111 for information about what status/priority means what)
Review and test patches
Say, a maintainer or someone else uploaded a patch to fix a bug or implemented a desired feature. What is required now is that someone does test and review that patch to make sure that the bug is really fixed, the feature properly implemented. And second, that no new bugs have been introduced by the changes. A more detailed description of these two steps follows below.
If both parts have been done (by you or by multiple persons), mark an issue as "RTBC" (Reviewed and tested by the community". The definition of done depends on the issue/context. A simple bugfix to remove a php notice or warning message might not need more than some basic testing. A patch written by the maintainer himself might not need a detailed review (I'm sure most would love to get one though!). A complex new feature might require extensive testing and reviewing.
And when you don't find anything during testing and reviewing, write that down too, otherwise the maintainer doesn't know that you *did* test the patch ("I tested X, Y and Z with the patch and did not find any issues.").
Test
Required skills: Know how to apply a patch (There are links on that page on how to apply on windows or use git)
This basically involves downloading the patch, applying it and then test everything you can think of to verify that the patch works as advised. Some suggestions:
- Is the reported bug fixed?
- Are there other steps that can still lead to the same bug?
- Are there any new bugs introduced by this patch? (If you discover unrelated bugs which you can reproduce with and without the patch, open a new issue and link to it)
- If there is a new feature, does it work?
- If there is new interface text (for example, a setting), is it understandable? Could it maybe be improved or would a description or help text be useful? Provide actual suggestions if you have any!
- Are there usability or accessability issues?
- Does it work, but maybe there would be a better (whatever that means, for example easier to use) way. Write that down. Maybe the patch author/maintainer hasn't thought of that and likes your suggestion or maybe there is a reason for not doing it like you suggested. But by writing it down, you can discuss and and maybe document somewhere why it is like that.
- Maybe an additional feature on top of that would make it twice as useful. Discuss with the patch author/maintainer if that could be implemented in the same issue or a follow-up issue might be more appropriate.
- Maybe the issue is about fixing a bug, but someone provides a patch that also fixes another bugs or adds a new feature. Note that and ask if that is ok or should be handled in a separate issue. See http://www.webchick.net/please-stop-eating-baby-kittens
- Whatever you can think of..
This is a very important step, don't hesitate to write down suggestions, ideas, bugs you found and so on. But don't expect that anything will be implemented/changed either. Obviously, it depends on the issue, if it is a trival patch that just fixes a Notice, most of the above might not be necessary. And it also depends on the maintainer, but I myself love detailed testing feedback because it tells me that someone actually tested and looked at the patch. As an example, see this comment from BenK. He has done dozens of tests like this one and his help has been invaluable during the process of getting working versions of Privatemsg, Userpoints and other modules out for Drupal 7.
Review
Required knowledge: As much knowledge of Drupal, PHP, ... as possible, but not that much is required for basic reviews.
This is the technical part of the testing process. Dreditor is a very helpful tool for this as it allows to do detailed reviews of a patch directly in your browser (Firefox or Chrome), strongly suggested! Some things to check in a review:
- Does the patch follow the Drupal coding standards? For example using of spaces instead of tabs for indentation, function naming and much more. I suggest to at least skim over the linked page before starting to do reviews to at least know *what the standards cover (You can read the details when you have to).
- Does it follow the security guidelines to protect against SQL Injection, XSS and so on.
- Is there apidoc for new and changed functions? (for example, if a function argument changes, has the documentation been updated)
- Is there inline documentation? Does it follow the standards (see above, e.g. wrap at 80 chars, start with "//[space][Big inital]...", proper english, ...). Are there complicated parts which should be explained?
- Is the code using the API functions correctly?
- Could some parts be simplified by using existing API functions?
- Do you spot any obvious errors just by looking at the code?
Again, this depends on the on the patch, a simple one line patch does usually not need a detailed review (but you should still look at it and report *if* there is something). Also, you do not need to review everything, just doing a part of it can already be a huge help. Just state what you did so that the maintaner knows that you haven't reviewed everything ("I reviewed the coding standards of the patch and it looks good/found this:").
Also, the more you do it, the more used you'll get. I wrote and reviewed hundreds of patches for Drupal core and contributes modules and coding standard violations jump at me when I just skim over a patch. Also, reviewing patches will increase your knowledge of PHP and Drupal, you'll learn new API functions and so on.
Creating patches
So you actually want to write code yourself and provide that as patches. I'll not go too much into the details on this one, just a few hints:
- First, you need to learn the workflow, I suggest doing that by fixing some trivial bugs (E_NOTICE errors, documentation fixes). Every project has a very helpful "Git instructions" tab with detailed instructions on how to check it out with Git and create a patch against it. Make sure you follow the coding standard, write secure code and so on (see Review above). Then, create an issue if there isn't any yet (search first!) and then upload your patch. Wait for feedback and update your patch if necessary.
- Then you can try to fix some more complex bugs or implement basic features following the same workflow as before.
- Don't give up if nobody looks at your patch during a few days. Review other patches/issues in the same issue and ask for a review of your own patch in return! Remember that most maintainers don't just sit around and wait for issues which they can fix or/or review. Most of them maintain their modules in their free time.
- Also don't give up when you get a lot of feedback that needs to be updated in your patch. After working on core for years, I can be very picky about coding standards and so on, and many others are likely similar. After all, most maintainers (I do, if others don't, then provide patches to my modules instead! ;)) love it when users don't just ask for features or report bugs but provide patches too and will gladly answer any questions.
- Be prepared to write tests for your new feature, see http://blog.worldempire.ch/story/writing-automated-tests-drupal-7. Even better when you provide them from the beginning! Some projects also have automated testing enabled which means that your patch is atomatically tested against the existing tests.
That's it for now, looking forward to comments!

Comments
Gast (not verified)
Sun, 03/13/2011 - 18:53
Permalink
Perfect !
Awesome post Sascha!
It answers all my questions. Thanks!
The best thing is was each step was written chronologically. I will begin with documentation, helping maintain the issue queue and so on.
It will be great if this post comes in Planet Drupal or in the documentation section. So that, everyone knows about it.
-Nikhil
Berdir
Tue, 03/15/2011 - 21:08
Permalink
It doesn't necessarly need to
It doesn't necessarly need to be chronologically, I was just trying to focus on ways to contribute *other* than writing patches.
akfvenatir (not verified)
Wed, 01/18/2012 - 02:26
Permalink
merasaPassingJuarez
Clindamycin shipped c.o.d sensitive
Ambien
buy online prescription soma godoylackland
Lorazepam
ambien free consultation minutesResearching
Tramadol
viagra overnight Thread
cheap Prednisone cod free fedex dimensional
Diazepam
acyclovir
bvfenaraw (not verified)
Wed, 01/18/2012 - 15:21
Permalink
engineSocietyAllowed
buy cheap ativan c.o.d. crossed
Prednisone
buy discount generic viagra MMETC
Trazodone
cheap cialis canada Forum
cialis
phenergan
valium online without presciption AfricaThe
levitra
Viagra
ultram for sale journal
fvteihar (not verified)
Mon, 01/23/2012 - 04:32
Permalink
technologyinsignificantaddmessage
buy valium free shipping STARTING
Ultram
adderall online no prescription trosterlackland
Acyclovir medicine emotional
Soma
Amoxicillin
ambien without a prescription whittling
online ordering Trazodone RIVERATINKER
Ultram
Clonazepam
ofenaraw (not verified)
Fri, 01/27/2012 - 08:35
Permalink
accessibilityMORLEYQuestion
buy soma on line no prescription
Prednisone WITHOUT SCRIPT next day delivery
order prescription free Klonopin plentiful
valium ups diagnose
cheap soma saturday delivery
Ambien WITHOUT SCRIPT next day delivery
buy vicodin from mexico permitting
30 ambien CONSTANTINE
Ambien online overnight delivery cod
Diflucan no prescription overnight
next day delivery on Viagra
order Fluoxetine without rx
Order Tramadol no prescription
Adderall overnight no prescription
buy Xanax online cod no prescription
order Valium cod next day delivery
vaokfirn (not verified)
Sat, 01/28/2012 - 00:24
Permalink
KeypunchProposalgalactic
Soma With No Prescription Overnight Shipping
Medrol online
soma no prescription next day
diazepam fedex cod WScript
Soma No Script Overnight
xanax overnight delivery pharmacy Tietz
Viagra WITHOUT SCRIPT next day delivery
viagra canada purchase SUBMIT
next day delivery Ritalin with no script
next day delivery Amitriptyline
buy Doxycycline without prescription
buy Colchicine overnight
Prednisone overnight online
buy Zithromax no doctor
buy Trazodone without prescription
Lisinopril ordering without dr
buy Lamictal online with overnight delivery
orateihar (not verified)
Sun, 01/29/2012 - 18:48
Permalink
LuretteInspectionincident
cod delivery Prednisone inspiration
cialis generic cheap Machismo
Diflucan and cod saturday delivery renegade
cheap soma 70000000
tramadol substitutions plural
ultram order cully
tramadol overnight changed
buy Acyclovir online recognised
buy cheap discounted Prednisone stanleygoodfellow
tramadol hcl aceta drain
ultram online delivery baffling
buy Doxycycline rx hjtu
Doxycycline same day fairing
Lisinopril online
buy now Trazodone aboriginal
nextday Acyclovir DISPLAY
tramadol 120 cod Lists
onaakorit (not verified)
Tue, 01/31/2012 - 08:08
Permalink
managingJohnsontinkerswearing
get Prednisone online konspekts
cheap cialis canada Lordy
Diflucan buy Suddenly
online soma cod contests
an627 tramadol J316Savioraol
what is ultram 0800TacyIve
tramadol chlorhydrate supply price impairments
buy cheap Acyclovir Dynamic
Prednisone overnight delivery fed ex rudolfo
tramadol hcl aceta costs
overnight ultram saturday shoes
buy Doxycycline online without prescription sebagi
purchase Doxycycline COD HofferRandolph
Lisinopril online
buy Trazodone cash on delivery processing
online Acyclovir cod taylorrobins
tramadol cod orders Mendham
gardoguiday (not verified)
Wed, 02/01/2012 - 22:06
Permalink
Hello world.
You could now start a race championship for disabled drivers, they could all race using hand controls, but it would have to be for male drivers only
Lets go now! this better to be safe than sorry
Student portal ashford university
Very interesting.
navbakorit (not verified)
Wed, 02/01/2012 - 22:43
Permalink
ticketsDOMAINUSERPurkises
Ritalin Online
online Buspar smoke
Fluoxetine no prescription next day delivery Variable
zithromax shelf life derided
ambien buy cheap Lowell
purchase Amoxicillin cod cleft
Doxycycline cod shipping steady
valium for sale cod Dynamic
cod ultram inhibit
Accutane prescription online ambushed
cheap zithromax without prescription revising
diazepam pharmacy umbrella
buy Amoxicillin online without rx findings
buy Prednisone prescriptions stakeholders
Ritalin Online
vakbovlor (not verified)
Thu, 02/02/2012 - 19:43
Permalink
Gladysfibrosisdeclared
cialis generic india prizeJudge
cialis online sale Movie
buy Nolvadex next day delivery outage
buy generic viagra pills Watch
adhd adderall plant
no prescripton Fluoxetine Standardized
buy xanax us online mediaart
order Klonopin no prescription Loved
buy cod online Lamictal placeInternet
buy online rx Nolvadex without round
buy ativan from online pharmacy with saturday delivery sv
Amitriptyline medication online American
Valtrex buy online Decision
online Acyclovir fedex next day delivery attendees
soma cod overnight paradigm
order adderall online no prescription leotards
ovabkavero (not verified)
Fri, 02/03/2012 - 08:45
Permalink
contracthernandezcen1940s
Klonopin overnight no prescription parameters
generic Nolvadex online interpreter
xanax overnight delivery regularly
buying Nolvadex online established
cheapest xanax online appeals
Lortab overnight delivery no prescription mr1505hotmail
Lortab ups cod delivery gaining
addicted to adderall letterhead
diazepam free saturday delivery MAUDE
xanax bars without prescription olivahqafcee
Valtrex ups cod delivery hardest
buy Buspar money order bonds
buy Accutane online cheap digest
Accutane shipped c.o.d Retrieved
xanax bar prescriptions perpetrate
adderall dosage Chorus
Ritalin Online
vofbevakidof (not verified)
Mon, 02/06/2012 - 09:24
Permalink
Okinawatestersschnurbrooks
adderall cost Yourself
cheap discount Lortab vivid
Ritalin Online
Ritalin Online
purchase soma COD critical
Prednisone cod delivery Buenteo
buy discount prescription Prednisone misjustice
Trazodone fedex cod Resendez
soma order ESTIMATE
buy ambien online no rx hackett54yahoo
Amoxicillin fedex Schedule
no perscription ambien thorough
next day Prednisone delivery stock
vet perscribed tramadol hydrochloride partly
adderall xl Everything
buy viagra c.o.d sufficiently
abviwmele (not verified)
Wed, 02/08/2012 - 08:30
Permalink
DenotingpoemsSchedulingUse
order Medrol online Next Day
Cheap Doxycycline No Prescription Next Day
Buspar no doctor hates
buy online Amitriptyline without prescription alsways
generic viagra cheap online no prescription
medrol
order Lamictal cod overnight delivery BAPPENAS
Soma next day no prescription
Ambien No Prescription Overnight Cod
cheapest diazepam available online executives
Lisinopril Online
buy Trazodone overnight Dynamo
order Nexium online Next Day
abeviwmele (not verified)
Thu, 02/09/2012 - 00:27
Permalink
martinpapwehzdistribute
Zithromax Online With No Prescription
buy generic online viagra
Accutane online ordering
Klonopin Next Day Cash On Delivery
Ritalin Online
Acyclovir same day
buy cheap ativan no prescription
Acyclovir next day no prescription
tripak zithromax
cheap order prescription valium
Doxycycline and online overnight delivery
Prednisone overnight
Klonopin next day no prescription
Lamictal overnight delivery without dr
Valtrex next day no prescription
fbevadkedof (not verified)
Fri, 02/10/2012 - 22:35
Permalink
guillenpostingsinsignia
Lortab Online Without Prescription
Ritalin Online
buy generic india viagra
buy xanax 2mg online
cod no online prescription Trazodone
adderall buy online
Percocet online overnight
how to get nexium without
buy diazepam online medication
purchase Lamictal online
Prednisone online ordering
nexium no prescriptions needed cod
buy ativan drug
Amitriptyline overnight delivery fed ex
cheap Klonopin with cash on delivery
anomdateir (not verified)
Sat, 02/11/2012 - 05:57
Permalink
forresterhotmailARGUELLORamen
cheap Nolvadex saturday delivery
online Klonopin and fedex
Valium without a prescription
nexium no doctors consult
buy discount drug viagra
Buy buying carisoprodol online
buy adderall drug
buy generic tramadol
generic xanax 2mg tablets
buy Lortab next day
buy ambien online no rx
viagra overnight shipping
order accutane
buy online Acyclovir prescriptions
cheap viagra online
kedemvorit (not verified)
Mon, 02/13/2012 - 08:23
Permalink
SEASONmemorableenlargement
carisoprodol watson online mortality
cheap diazepam online dignified
Prednisone Overnight No Prescription
Fluoxetine next day no prescription
buy Valtrex next day rotated
buy zithromax overnight free delivery stream
free prescription Amoxicillin authenticate
cheap Accutane online painter
Lamictal delivered cod fedex Weaver
buy Acyclovir online Ceremonyrevised
Ritalin Online Without Prescription
Lortab cod delivery MajRet
Percocet addiction withdrawal ofparameter
buy online pharmacy Lortab Basketball
nomedateir (not verified)
Mon, 02/13/2012 - 20:32
Permalink
VolunteersettlingsiteText
saturday delivery Nolvadex overnight no prescription menyatakan
buy Amitriptyline free fedex shipping Commission
Medrol Fedex No Prescription
purchase cialis on line requirements
ativan sale Dester
online ordering Diflucan messy
cheap phentermine next day Exhibit
Valtrex free overnight fedex delivery serie
Lisinopril Online Without Prescription
buy adderall xr FOREVER
nextday valium cash on deliver cod language
discount Buspar eternal
Where To Buy Zithromax No Prescription
Accutane order Achievements
ovlnedemor (not verified)
Tue, 02/14/2012 - 20:21
Permalink
honestlysebagaiBlackboards
diazepam online sale launch
buy Percocet online uk Brothers
cheap Valtrex cod Nondestructive
discount carisoprodol online Corbin
tramadol 537 chant
buy Nolvadex cheap cod adherents
buy Fluoxetine online overnight LarzelereLackland
buy Lamictal online medication coxnandsaaol
tramadol 300ct 50mg 118 no prescripion lawyers
buy Lortab no prescription carefully
Klonopin cash on delivery overnight savilaidworld
cialis order tiohye
Klonopin c.o.d. composed
Swiss Watches R... (not verified)
Wed, 02/15/2012 - 10:21
Permalink
good article
TAG Heuer Watches For Sale
TAG Heuer Watches replica
TAG Heuer Watches outlet
TAG Heuer Watches For men
TAG Heuer Watches women
Cheap TAG Heuer Watches
Discount TAG Heuer Watches
edenemvorit (not verified)
Fri, 02/17/2012 - 02:12
Permalink
subweblistcheeringtremendous
purchase soma lenise
tramadol without a prescription online with overnight delivery brotherhood
buy cheap Trazodone overnight BernathHill
cheap overnight Trazodone appeared
cheap prescription tramadol diperlukan
debt negotiation buy tramadol fiance
buy nextday Prednisone cash on deliver cod numero
Diflucan shipped c.o.d TextStream
tramadol hydrochloride ultram KNOWN
Amoxicillin on line demonstration
tramadol 89 realtions
Lisinopril Online
tramadol without a prescription upHearing
Prednisone pharmacy LeoLeospursokaol
pharmacy tech job buy tramadol interview