Last updated June 29, 2011.

The core of Drupal encompasses all of the files that you get when you download Drupal from the Drupal project page. Generally, there is one version of Drupal in active development at any time, and two past versions that are maintained with bug fixes and security updates. See http://drupal.org/documentation/version-info for more information about versions of Drupal.

There are several ways that you can help out with development of the core of Drupal, and all are very valuable. Your help is welcome in any of the following areas. The suggestions below assume that you are familiar with the Drupal issue queue.

What you can do

Testing and reviewing patches
If you are new to Drupal development, a great way to get started is by testing and reviewing patches. The process used to test and review patches is described in more detail on the Patch review page. Also in the Git Handbook section of this guide, the Getting started with git on Drupal.org page has information on how to get set up to review patches. It is especially helpful to review patches on the in-development version of Drupal.
Writing tests
Drupal has a module called SimpleTest, which is used to write automated unit and functionality tests. In Drupal 6, this is a contributed module, while in Drupal 7 and beyond SimpleTest is known as "Testing" and is part of the core of Drupal.
You can help improve Drupal by writing more tests. The SimpleTest documentation has information on how to write tests, and you can search the Drupal issue queue for issues tagged with "Needs test", to find places in Drupal core that people have identified as needing tests. It is mostly helpful to write patches for the in-development version of Drupal.
Patching issues
As people find issues in Drupal's in-development and in-production versions, they file issues. You can help with development by "patching" (i.e. submitting fixes for) these issues. The Patching section of the Handbook describes this process in more detail.
One note on patching: Development of Drupal is a process, and Drupal is open to certain types of changes at certain times during the process of developing a new version. For instance, relatively early in the development cycle for a new version, there is an "API freeze"; after the API is frozen, generally changes to the Drupal API are not accepted unless they are bug fixes. Later in the development cycle, there is a functionality freeze, at which point changes to the user-facing side of Drupal are not accepted unless they are bug fixes. These are just two examples, but it's best to inquire about whether a patch to a certain issue is appropriate for where Drupal is in its development cycle, before spending time patching an issue. A good place to ask is the #drupal-contribute channel on IRC.
After patching an issue, in order for it to become part of Drupal, it needs to be reviewed by other members of the Drupal community. One common practice is to ask on the #drupal-contribute channel on IRC for someone to trade patch reviews ("I'll review your patch if you review mine"). Another possible course of action is to contact the maintainer of the Drupal sub-system that your patch pertains to; a list of sub-system maintainers can be found in the MAINTAINERS.txt file in the in-development Drupal version's top-level directory.
Documentation
Coders can also help the core of Drupal by working on documentation. You can search the Drupal issue queue for issues in the "documentation" component or tagged with "Needs documentation", to find out what the current needs are in that area.

Choose an area to specialize in

Drupal core has quite a large code base, encompassing some core functionality, several required modules, and quite a few optional modules. Most contributors to core Drupal development specialize in one or two areas, rather than trying to contribute to all parts of Drupal.

  • The Drupal issue queue is divided up into components, so if you have interest in working on a particular area of Drupal, you can search for the component related to that area to find out what issues have been identified.
  • There are specific people who maintain each component in the issue queue. You can find an up-to-date list of these people in the MAINTAINERS.txt file in the in-development Drupal version's top-level directory to find out who maintains the area you are interested in, and find those people on IRC (#drupal-contribute) or via the contact page on their Drupal.org user profile (see links in MAINTAINERS.txt file).