Contributing to Drupal from a Junior Developer’s Perspective
Here at FFW, we are acutely aware that Drupal is an open-source environment, and as such, we appreciate the many thousands of hours that volunteers have put into its development. So, when developers at FFW are between projects, we are encouraged to do "contrib" work, meaning we find open issues in the Drupal issue queue, solve them, and get them pushed out into the community. Until very recently in my year at FFW I was on a single project for one of our largest clients. When I finished my engagement on that project, and before I started another one, I found myself with some free time and the opportunity to work on my first Drupal commit! This is a fantastic company culture and policy, everybody wins because of it, and I feel lucky to work here. At any given time, we always have someone doing contrib work, mainly with Drupal 8 core. It helps us learn as individuals, helps the presence and reputation of our company, and of course helps Drupal, which is the reason we’re all here, and the reason you’re reading this blog series.
That being said, this will be a post about how to contribute and the process involved. There will no (or very few) code examples. There are plenty of resources online for that. Rather, this is for the novice to intermediate Drupal developer who’s ready to give back to Drupal for the first time and doesn't quite know where to start.
The thing that's so great about open source software, and the way Drupal contrib in particular works, is that anyone can contribute, regardless of past experience. Take me for example, I've made a career of Drupal for the past five years, but have never given back until now. Shame on me! There's no certification you need in order to contribute, no permissions, just an account at drupal.org and a willingness to learn. And don't worry – like I did at first – you can't break anything. The contrib and approval process is sophisticated enough that only correct, community-approved patches will get committed. There's nothing to fear, so…
Let’s Get Started
First I'll summarize the steps you go through to contribute, then I'll dive into each one, pointing out tips and gotchas along the way. So, at its most basic level, contributing goes like this:
- Find an issue you would like to, and are able to, contribute to.
- Download the latest Drupal core to your local machine. I’ve been working on Drupal 8 core issues, so that's where we’ll start.
- Create a new branch, and download and apply patches that already exist for the issue, so you're working from the most recent version of the code.
- Complete your work locally.
- Create a patch and an interdiff (more on that later) and upload them to the issue.
- Await the automated testing results and recommendations or approval from the community.
- Repeat steps 4 through 6 until your work is approved and your patch is ready.
- Get a commit in Drupal core!
I know it sounds like a lot, but once you do it a few times it will become easier and faster. Put it this way: my first patch took me almost a day to complete. Now I can create and upload one in a few minutes. Like anything else, the more you do it the faster (and more confident) you get. And it is so worth it to learn this process. I can’t overstate how excited I was when I got my first commit into core! In Monday’s post I’ll get deeper into each step of this process.