5 Steps to Start Interacting with Drupal.org Issues: Practical Tips for Beginners

The word "community" comes from the Latin communis, which means "what is common and shared by many individuals." From the Drupal perspective, the community is nothing more than a group of people looking for the mutual exchange of knowledge about the technology (the detailed definition can be found here).

But how to participate and contribute to this community? If you're already involved with Drupal in any way, you're already part of it! Now, if you want to get more involved, be aware that there are several ways to contribute, such as participating in support forums, writing/reviewing project documentation, translating the Drupal CMS interface, or developing and implementing improvements in modules/themes (or even in the core, for the adventurers ones).

In this article I will detail how to contribute to existing Drupal.org projects, such as modules and themes. The development takes place in what we call "issues," which represent reported bugs or ideas for improvement, for example. We attach the patches - code snippets containing the proposed implementation - to these issues. This issue flow, and the resolutions, are not intuitive to anyone who is starting a journey at the Drupal community.

Keeping this in mind, I’ve prepared 5 essential tips that will help you get involved:

Understand the issue flow

The status of various issues are detailed here. Understanding their flow is essential, because each interaction will depend totally on the current issue status. An example: if the issue status is "needs review," your contribution will be to apply and review the patch previously submitted by another user. If the same issue had another status, another contribution would be appropriate.

Another important point: the current issue flow must go ahead, and for this, it is very important that you know the next status to be placed. The status also serves as communication between the individuals in the community and getting it up to date. If you incorrectly update an issue status, a contribution chain can be broken or messed up, since other users will interpret the issue cycle in a different way.

Find issues more easily

Issues can be found here. You are free to work on any one, and the filters allow you to search issues by your criteria. You should keep in mind that in most cases, the issues related to the modules that are most used or have active maintainers will be updated and answered faster than the others, making your contribution more effective in a shorter period of time. A module’s popularity can be found on its own page (eg: https://www.drupal.org/project/metatag) through the "reported installs" label.

For modules with active maintainers, there is no specific indicator. So, to simplify this, the best approach is to go back to the issues page and filter them by the "Fixed" status, ordering the result by the "last updated" date. Then, you’ll find the issues that were recently finalized by the project maintainers. In short, you will know if the current module is really active, which would mean that your contribution will go ahead more easily.

Another interesting trick for beginners: the community usually points out simple issues with the novice tag. In these cases, the reported problems are simpler and faster to solve. It's worth starting with these issues.

Work on the correct branch

Each issue has a header containing its basic information. The version field is one example of this kind of information. For example, if it’s a bug, this field is populated with the module’s version in which the problem was found. Before starting the fix, it’s necessary that you also verify if the reported bug exists in -dev branch. This is really important because another user may have solved the defect previously.

In other words, any bug fix or improvement is usually implemented in -dev branch, where there must be the most recent (not necessarily published) project code.

And how to download the branch? Just remember the module’s version (displayed by the issue) and access the module’s page. There will be a “version control” tab below the main title. By selecting it, you can determine the module’s version. Finally, click on "show" option. The git command below the "setting up repository for the first time" label will be updated. The last step is to copy and execute this command on your local machine, which will result in the download of the module repository.

Understand how to create and apply a patch

Patches are snippets of code that represent a change - this can be a bug fix or even a new feature. In a bug case, the problem that it proposes to solve disappears after applying the patch. A better explanation can be found on this page. In other words, it is important that you know how to create and apply a patch.

Another important point is to follow the patch’s nomenclature standardization. This step is essential because it simplifies patch management by the maintainers.

Start practicing!

The above tips should help you to interact with Drupal.org issues. Now it's up to you to start practicing! One suggestion: adopt a module with an active maintainer.

In order to maintain a good organization, and to allow a good flow of your collaborations, you should know how to distribute your contributions in multiple issues and in an appropriate way. Common sense prevails. Tracking is also important because just as you want a quick interaction with other community members, other individuals may be waiting for your response. Another caution: do not assign issues to yourself if you are not actually solving them. This may inhibit others from contributing because they believe you are already fixing it. And remember that commenting your progress in an issue, even if it is not finished, is also a valid contribution!

One last observation: in Drupal.org you can attribute contribution credits to a certain person or organization. These credits can be seen in your profile and in the profile of the organizations involved.

So get involved. As the creator of Drupal says, "come for the software and stay for the community!"