Last updated October 19, 2013.
Welcome! Contributing code is both an important and effective way to improve the Drupal project and its capabilities. We're delighted to have you join our global community of developers!
Ways to contribute code: Drupal core, contributed projects, and patches
The Drupal code ecosystem encompasses the core of Drupal (the files that you get when you download Drupal from the Drupal project page), and "contrib" projects, which encompass all contributed code (modules, themes, installation profiles, etc.). You can read more about this distinction on the Core vs. contributed projects page. You can also improve both Drupal core and contributed projects by submitting patches.
More information about helping Drupal core is available on the Drupal Core Contributions page.
Improving existing projects and core with patches
Contributions to existing projects come in the form of patches, which allow you to share modifications you've made to a project with the maintainer and other users in the project's issue queue. To learn more, read:
- What is a patch
- Creating patches (an overview)
- Advanced patch contributor guide (with detailed Git instructions)
- Applying patches (an overview)
- Applying patches with Git (advanced guide)
All project pages on drupal.org have a Version control tab which contains information on how to use Git to create patches for a given project.
Contributing new projects
If you've developed a new module or theme, you can also create your own project to contribute your code to Drupal.org.
There are two types of projects that you can create:
- Full projects, the standard downloadable modules and themes like Views and Zen. Read more about full projects.
- Sandbox projects, which are for experimental code, or code from new contributors who've not been through a vetting process yet. Read more about sandbox projects.
All project pages on drupal.org have a Version control tab which contains information on how to create and maintain your project with Git.
Collaboration rather than competition
The Drupal community holds a strong "collaboration rather than competition" ethos, which values joining forces on improving one awesome project rather than building several sub-standard ones that overwhelm end users with choices. While not outright forbidden, duplicate projects are generally discouraged without good reason (such as a fundamentally different architectural approach). Please remember to search existing modules and themes first before embarking on your quest, or taking over an abandoned project. You could save yourself some time, and earn community karma by helping others!
Communicating with the community
- Issues: The vast majority of communication about Drupal development happens in the issue queues for each project (Drupal itself is a project, and each contributed theme, module, etc. is a project).
- IRC: Many people in the Drupal development community can be found on IRC in the #drupal-contribute channel on irc.freenode.net, as well as other Drupal IRC channels.
- E-mail: The Developer mailing list can be used to ask and answer questions about development with and for Drupal, and participate in discussions about proposed modules, new directions for Drupal core, etc.
- Groups: You can join discussions with geographical and topical Drupal groups on groups.drupal.org.
- The Talk with the community section has information about other options for communicating.
- The Helping with core development page will get you started with ideas of how you can contribute to core Drupal development.
- The Git handbook has the most comprehensive information on Drupal coding. It covers patching, Git, creating modules, and other development topics. A couple of other sections of note:
- The Standards, security, and best practices section contains reference information on coding standards, documentation standards, and best security practices.
- The User interface guidelines section contains reference information on how to make good user interfaces, including user interface text and help text.
- The API Reference site has documentation for all functions and files in the core of Drupal, Drupal's hooks API, and broader developer topics.
- The Theming guide is a comprehensive guide to developing themes for Drupal.
- Commitlog messages show what activity has been happening in the version control repositories.