
Lee RowlandsSenior Developer
How and why we contribute influences our impact on the Drupal community and ecosystem. So, how can we become positive, long-term contributors?
Ok, so joke link-bait titles aside, this is actually a pretty serious topic. There was a Talking Drupal podcast episode about it and a lot of chatter on Twitter that was nicely summarised in this Drop Times article.
As someone with a long history of contributing to Drupal, I want to wade in on the topic in a constructive fashion to try and help achieve the best outcome for the project and contributors. So, here's some advice from a long-time contributor. Feel free to take it with a grain of salt.
Both individuals and companies need to determine their reasons for contributing. If your reason is to increase your contribution credits and improve your position in the marketplace, then stop. You're doing yourself and your employees a disservice and likely creating additional work for others.
If you're an organisation, your motivations should be something like this:
Co-founder of PreviousNext, Kim Pepper, gave an excellent presentation on the benefits to an organisation that encourages contribution. His talk might be four years old; however, it's still relevant.
PreviousNext has always encouraged contribution, making us an attractive employer for developers. Our average staff tenure is more than five years, which is unheard of in the tech industry. Additionally, it helps when you're pitching for new projects if you have RFQ line items asking you to demonstrate you understand a feature and someone in your team is a maintainer or significant contributor to that feature.
If you're an individual, your motivations should be something like:
Whether you're an individual or an employer, it helps to define your contribution goal. Use it to guide your contributions and view each contribution through the lens of your goal. If it doesn't bring you closer to your goal, is it worthwhile? Is there some other way you could contribute?
Some forms of contribution are like a sugar hit. Sure, you get a credit, but do you get anything else out of it? Does it bring you closer to your goal? Some examples here include:
Now don't get me wrong. I'm not saying that all of these aren't valuable contributions. Some of them are valuable contributions and move the project forward. The reroll might breathe life into a stale issue, the coding standards violation fix might result in the issue passing tests for the first time, and a new README improves our documentation.
These are useful contributions for a new contributor getting used to the mechanics of creating patches or merge requests. However, once you have mastered that skill are you advancing your contribution goals from above if you continue to do it? Are you learning anything new? Are you robbing other newcomers of an opportunity to get started contributing?
So if you're beginning, these type of tasks could easily be what helps you achieve your first contribution goal–but set a limit, acknowledge that you've achieved that goal, and then set a new goal and leave this to other newcomers.
Core committer, security team member and release manager Jess (xjm) (side note, she's looking for work, you should consider hiring or sponsoring her to continue her work on core)once wrote
Even if I ... never visited Drupal.org again, and threw my laptop in Lake Monona, I would continue to get commit mentions for work I did in the past.
And she is 100% right. For the last 11 months, I've been busy on a major client project, but I've continued to receive commit mentions for investments I made in issues in the past. Contribution is a long-term investment, and so you need to wait for that investment to mature. Things can happen slowly at times.
Drupal is a huge and complex project run mostly by volunteer effort. It has a reputation for stability, which sometimes means things take a bit longer in order to consider all the possible side-effects, which leads me into my next tip.
The best way to improve your contribution 'investment' yield is to get into a regular habit. Set yourself a target for regular contribution. But to be 100% clear, the target should be for 'acts of contributing' rather than 'contribution credits'.
Back when Drupal 8 was nearing release, I started the patch a day challenge. Little did I know it would be a further two years until Drupal 8 came out. But I kept up the challenge and uploaded at least one patch a day on average for those two years. When Drupal 8 came out, I wound up close to the top ten contributors. To further illustrate xjm's point above, some of these investments continue to result in commit mentions even now, nearly seven years later.
Now, I realise this isn't something everyone can do. At the time, I was working part-time and caring for two school-aged children, so I had some spare time every afternoon as well as an employer willing to give me sponsored contribution time of around 6 hours a week. The luxury of time is something only some have. But getting yourself into a regular habit lets you build up an investment that will mature with time.
Former colleague Donna Benjamin (@kattekrab) once said something along the lines of, "A website is like a garden, not a house, you need to continually tend to it" (sorry if I'm paraphrasing incorrectly, Donna). Contribution is similar; a little bit each day or week, and your investment will bear fruit.
The Drupal mentoring team's website slogan was once 'We've got issues'. It's a fun play on the number of tasks in the Drupal issues queues that's still true today. There are over 60,000 open issues for Drupal core alone (9 and 10 only). And the number of open issues for contrib would easily be just as many. So, there are plenty of opportunities for contribution.
My advice would be to find your niche. You could:
For me (@larowlan), my introduction to core development was to find something no-one cared about: the forum module.
For my colleague Mohit Aghera (@mohit_aghera) it was the Needs tests tag (2500 issues in core alone). Through this effort, Mohit gained a deep understanding of writing tests for Drupal core, a highly valued skill–so much so that we asked him to come and work for us.
For Stephen Mustgrave (@smustgrave), it is the Needs review queue status (2700 issues in core alone). By reviewing other people's work, Stephen achieves his contribution goal of learning the inner workings of Drupal and gives back to something he uses every day. Reviewing is an under-appreciated contribution task that allows you to learn from and teach other developers by reviewing and suggesting changes to their code, all whilst steadily increasing the areas of core you understand. Stephen is now a maintainer of the Block Content module in core and (at the time of writing) proposed as maintainer for both the Telephone and Text modules. In addition, he has built relationships with several core contributors who know him by name and recognise his value to the community.
The health of Drupal relies on contributions from the community. If contributions don't benefit the long-term health of the ecosystem, does Drupal continue to be relevant and innovative? Contributions that actively move the project forward are more likely to have a greater velocity.
Think of helpful contributions like:
Suppose you're an organisation looking to increase your contribution but are unsure how to start. In that case, one approach could be to sponsor an existing experienced contributor to establish, grow or maintain your team's capabilities. As mentioned above, Core committer, security team member and release manager Jess (@xjm) is looking for work, as is Core Javascript Maintainer Théodore Biadala (@nod_).
Here at PreviousNext we sponsor V Spagnolo (@quietone) to work on Drupal core. When announcing this sponsorship, we described it as a new and exciting way for PreviousNext to give back to the project as well as the community.
In this scenario, @quietone works solely on Drupal contribution, but there are other models where organisations can bring in an experienced Drupal contributor for a mix of contribution and client work. For example, Kristen Pol (@Kristen Pol) is employed by another Australian agency to work on client projects and to help turbo-charge company Drupal contribution efforts. With her existing network of contacts and experience contributing to Drupal, Kristen can help her colleagues navigate the issue queues and contribute. With Kristen on the team, they get the dual benefit of Kristen applying her expertise on client projects and her contribution experience to help their team maximise the impact of their contributions.
What do you think? Let me know in the comments, or feel free to reach out to me on the shiny new Drupal Community Mastodon Instance. And of course, if you want to get more involved with contributing to Drupal, say hi in the Drupal community slack on any of the many general or specialist channels we have dedicated to co-ordinating contribution such as #contribute, #d10readiness or #bugsmash.