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.
Tip 1 - Work out why you want to contribute
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:
- To improve your reputation in the Community
- To ensure Drupal's long-term livelihood
- To align Drupal with you and your client's strategic goals - Drupal is a do-ocracy
- To improve your staff members' reputations in the Community
- To grow your staff skillsets with mentoring from the brightest Drupal minds in the world
- To enhance your reputation as an employer of choice for members of the Community
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:
- To improve your skillset or learn a new concept. You will be amazed by how encouraging and helpful our community is for people who are helping move issues forward. If you come to an issue without an ego and with a willingness to ask for assistance, you are more likely to leave with a new concept/skill under your belt.
- To increase your reputation in the community. People follow Drupal.org issues and get emails of activity. They may not have time to participate in every issue they follow, but they keep abreast of what is happening and who is driving the issue forward. Your username is your individual brand. If folks see a name popping up time and again, it builds recognition of your individual brand.
- To widen your professional network. This gives you the ability to approach community members to ask for help. If you've worked on an issue with someone who maintains a key module and you have trouble with that module, that individual is more likely to be receptive to a request for help. The shared experience of working together to improve Drupal builds that relationship. Karma is something you can spend as well as earn.
- To make friends all over the world. One of the true joys of contribution is the ability to work with amazing people all over the world. You will hear many tales of lifelong friendships people have formed with people on the other side of the world through contribution
- To improve your resume and employment options. This one is kind of obvious, but if your personal brand value is on the ascent, this obviously makes you a recruitment or promotion target, or perhaps it gives you some justification for a pay rise. And employers shouldn't fear this. You want your people to be their best because when their value rises, so does yours.
- To have fun. Because if it's fun, everything else is easy.
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?
Tip 2 - Treat contribution as a long-term investment
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:
- Rerolling an issue that doesn't apply. Then not sticking around to help address remaining tasks, like getting tests passing.
- Fixing coding standards violations and nothing else.
- Adding a README to a project.
- Fixing the capitalisation of a module name in an info file.
- Attaching screenshots to an issue that already has them.
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.
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.
Tip 3 - Get into a regular habit
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.
Tip 4 - Find your niche
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:
- Find something you care about.
- Find something no-one cares about.
- Find something to fix/change that would make your day job easier.
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.
Tip 5 - Contribute in ways that help the ecosystem
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:
- Contributing to the readiness of the next major release - (Drupal 10 readiness at the time of writing) issues in this space get a lot of focus as we're working towards a given release date with set objectives. These issues move faster. They're also where innovation occurs, which keeps your skills up to date. Helping port contrib modules to the next major version also applies here, as you keep up-to-date with new changes, help the ecosystem and get faster results.
- Joining an initiative - groups working towards a common goal generate a much faster turnaround on issues. There's nothing worse than working on an issue and uploading a patch only to see it sit in 'needs review' for a long time. Working in a team will increase your network in the project (see goals above) but is also more likely to lead to a faster outcome. If you need help determining where or how to contribute, folks in these teams will definitely be able to point you towards places to help. There are strategic initiatives and community initiatives to choose from.
Tip 6 - Bonus tip for organisations
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.
Thoughts and comments?
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.