Skip to main content

Seven ways to set open source contributors up for success

5 min read Written while I was at GitHub

Summary: Successful open source projects set contributors up for success before they ever open their first issue. Guide users down the contributor funnel, make the project easy to use and contribute to, call out good first issues, and be responsive when people show up.

Table of contents
This is the first post in a series on successfully managing open source communities at scale.

Successful open source projects do everything they can to set users up for success, well before that user ever interacts with their project for the first time. These projects ensure that users can discover and understand the project, that they can contribute constructively, and that everyone (maintainers included) will have a good experience.

If this is your first time managing a popular open source project (congrats! 🎉), or even if it’s not and you could use a quick refresher, the Building Welcoming Communities and Best Practices for Maintainers guides from opensource.guide are an incredible resource.

Beyond those high-level guides, here are a few specific tips to keep in mind when setting up your project for healthy contributions:

1. Guide users down the contributor funnel

My colleague Mike McQuaid has the concept of the contributor funnel. Similar to prospects traveling down a sales funnel, maintainers should market their project to attract users, provide easy opportunities for those users to contribute, and encourage repeat contributors to take on additional responsibilities to help maintain the project through commitment escalation. Just like a traditional sales funnel, your goal should be to maximize your conversion rate at each step, with the end goal of converting users into maintainers to help the project grow and scale.

2. Make it easy for someone to use your project

The first step into the funnel is making it as easy as possible for users to discover and use your project. Not only will this increase the top of your funnel and make using your project a better experience, but the easier it is for users to get started and self-troubleshoot, the less likely they are to require support. At minimum, add topics to your project, so it’s easier to find, and surface user-facing documentation via a readme, docs/ folder, or GitHub Pages site. Assume this is the reader’s first foray into open source. As a simple rule, if I have to answer a question twice, I add it to the documentation so that I never have to answer it again.

3. Encourage community support

You write software so that others can use it, but no software is perfect, and sometimes users have questions or run into trouble. Unless you create the necessary space and resources to support your project, this can easily become one of the most time consuming and often frustrating aspects of being a maintainer. Use a SUPPORT file to better direct users to dedicated support channels (Discourse, Slack, Discussions, etc.) for non-bug, non-feature requests, to keep issue trackers on-track, and most importantly, to encourage community members to support one another.

4. Call out good “first issues”

Bug reports and feature requests can quickly become an overwhelming burden if you don’t have the time to take them on. Encourage commenters, reporters, and requesters to make their first code contribution by adding good first issue labels to bite-size issues. “Be the pull request you want to see in the world”, as I jokingly like to say. In addition to calling out good starting points for the uninitiated, good first issues are also surfaced throughout GitHub’s discovery tools, attracting additional potential contributors to your projects to help further reduce the backlog.

5. Make it easy for users to contribute back

Just as you think through your end user experience, think critically about your developer and contributor experience. The easier it is for users to contribute, and to contribute in the ways you expect, the more contributions you’ll get, and the less maintainers will have to intervene to enforce process or norms. In practice, that means minimizing the friction one must overcome to contribute and documenting how to contribute so that they can.

6. Set up issue and pull request templates

Encourage high-quality bug reports and feature requests and make it easier for users to follow your project’s contributing guidelines by setting up issue and pull request templates. Templates can also help streamline the triage process, by automatically applying labels or assignees. You can even add custom links to the new issue flow (such as to an external support forum or bug bounty program) or disable blank issues entirely. It’s a delicate balance to strike, but be mindful of not introducing too much friction to the process, which might discourage contributions.

7. Be responsive

When you do get a contribution, be responsive. Make a point to welcome and thank first-time contributors so that they feel appreciated and are more likely to contribute a second time. Heck, you can even automate the process. Even better, when you do thank first-time contributors, nudge them in the right direction by suggesting a good next issue to pick up. If you know you’re going to be slow for whatever reason, and can’t ask another maintainer to fill in, be sure to let potential contributors know, to properly set expectations.

If you’re looking for more information on how to put these community management concepts into action, be sure to check out the setting up your project for healthy contributions GitHub documentation.

Keep reading

  • Five best practices in open source: external engagement

    Publishing code isn't enough. Open source means building communities. Five best practices for engaging contributors and growing your project.

  • Everyone Contributes

    Code is just one way to contribute to open source. Projects thrive when they create clear paths for non-technical contributors to participate.

  • Friction

    Friction, the time between wanting to contribute and actually contributing, is the only metric that matters for open source.

Ben Balter

I'm Ben Balter, and I write here about developer platforms, product and engineering leadership, open source, and showing your work. I spent over a decade building developer platforms at GitHub. For five years I was a product manager for trust and safety, shipping 500+ features and the API endpoints behind them to 50M+ developers. I also led a bottom-up rewrite of GitHub Pages and wrote the open source library behind GitHub's license detection, and my open source projects have hundreds of millions of downloads. I wrote Open and Async, the playbook for remote and distributed teams, and shipped a Model Context Protocol (MCP) server alongside it so agents can query it directly. More about the author

Follow along: Bluesky LinkedIn

Originally published May 15, 2020 View revision history

This page is open source Help improve this article on GitHub

Keyboard shortcuts

Search

  • / or ⌘ K Open search
  • ↓ or j ↑ or k Move through results
  • Enter Open the selected result
  • Esc Close search

Go to

  • g then h Home
  • g then p All posts

This page

  • y Copy link to this page
  • ? Show this list