Last updated 19 October 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

If you'd like to make improvements (bug fixes, new features, and so on) to existing projects, such as Drupal core, or one of our contributed modules or themes, this section is for you.

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:

All project pages on 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

There are two types of projects that you can create:

  1. Full projects, the standard downloadable modules and themes like Views and Zen. Read more about full projects.
  2. 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.

In order to contribute new code, you must obtain Git access on and, in order to promote sandbox projects to full projects, go through a one-time approval process.

All project pages on 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, 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
  • The Talk with the community section has information about other options for communicating.

Related resources

  • 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 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.