How to Recognize Your Open Source Contributors and Grow Your Community

Open source software is the backbone of the modern internet. It powers everything from operating systems to web frameworks to machine learning libraries. An estimated 97% of applications contain open source components, and some projections show open source comprising 90% of all software by 2023.

Yet for all its popularity and importance, open source faces a sustainability crisis. A 2021 Tidelift survey of open source maintainers found:

  • 46% are not paid for their work
  • 59% have no more than 5 hours per week to spend on projects
  • 48% want to quit or have considered quitting

Most maintainers work alone or in very small teams. They face an endless stream of demands from users, yet often lack the time, resources, or support to meet those demands. This leads to burnout and maintainer attrition, jeopardizing the projects the software industry depends on.

So how can we make open source more sustainable? A key piece is recognizing and rewarding project contributors. Contributors power open source projects with code, documentation, support, evangelism, design, and more. Acknowledging their efforts is not only the right thing to do – it‘s essential for attracting and retaining the diverse community required to thrive.

As Nadia Eghbal writes in ‘Working in Public‘:

"Attracting contributors is one of open source‘s biggest challenges today, and the communities that understand how to recognize the right contributors…are the ones that will survive."

The question is – what are the most effective ways to recognize open source contributors? I‘ve gathered best practices from top projects and maintainers to highlight proven strategies. Whether you‘re maintaining a project, leading a community, or contributing yourself, these techniques can help you create a vibrant open source ecosystem.

Acknowledge All Types of Contributions

The first step is expanding the definition of contributions beyond just code. While commits are important, a thriving project requires many types of work, including:

  • Answering questions and helping users
  • Triaging and managing issues
  • Improving documentation and tutorials
  • Translating to different languages
  • Designing graphics, logos, and websites
  • Giving talks and writing blog posts
  • Organizing events and meetups
  • Onboarding and mentoring new contributors

A 2017 Linux Foundation survey found that non-code contributions are both time-consuming and highly valued by maintainers:

"As a project grows in size, the number of non-code contributions increases. Managing and organizing a project requires a different set of skills than adding new code or features."

To recognize non-code contributions, you need a system to track them. This could be as simple as a spreadsheet or text file, but larger projects often use bots and automated tools.

For example, the Apache Software Foundation uses a tool called Project Reporter to generate detailed contribution reports. It collects data from sources like mailing lists, issue trackers, and wikis to highlight non-code contributions alongside commits. This helps paint a more complete picture of community activity.

Other popular tools include:

  • all-contributors – A specification and bot to recognize all contributions in your README
  • octohatrack – A CLI tool to generate a list of GitHub contributors including non-code
  • name-your-contributors – A GitHub action to automatically add contributors to your README or website

The key is agreeing on what types of work to recognize, how to track them, and how to display that recognition prominently. Make it clear that your project values more than just code.

Build a Comprehensive Contributor Showcase

Once you‘re tracking a wide range of contributions, showcase them! Create a dedicated contributors page on your project website or repo README to highlight community efforts.

A great example is the React Native Contributors page:

It features three main sections:

  1. Committers – Core team members with merge permissions, along with their photos and titles
  2. Active Contributors – Regular contributors with 5+ commits in the past year, sorted by commit count
  3. Inactive Contributors – Past contributors with less recent activity, sorted alphabetically

This page uses the all-contributors spec to generate the contributor list automatically. The spec defines a standard format for recognizing contributors in your repo‘s README file. You simply add contributor usernames and contribution types to a configuration file, then use the all-contributors CLI or bot to generate the list.

Here‘s what the configuration looks like:

{
  "projectName": "React Native",
  "projectOwner": "facebook",
  "repoType": "github",
  "repoHost": "https://github.com",
  "files": [
    "README.md"
  ],
  "imageSize": 100,
  "commit": false,
  "contributors": [
    {
      "login": "turnerjw",
      "name": "James Turner",
      "avatar_url": "https://avatars0.githubusercontent.com/u/926789?v=4",
      "profile": "https://github.com/turnerjw",
      "contributions": [
        "code",
        "doc"
      ]
    },
    {
      "login": "rickhanlonii",
      "name": "Rick Hanlon",
      "avatar_url": "https://avatars0.githubusercontent.com/u/2440089?v=4",
      "profile": "https://reactnative.dev/",
      "contributions": [
        "code",
        "doc",
        "review"
      ]
    }
  ],
  "contributorsPerLine": 7
}

Using a spec like this ensures consistent formatting and makes it easy to scale recognition as your contributor base grows. You can even add badges to a user‘s individual profile when they make a contribution:

The resulting page becomes a powerful showcase of your community‘s efforts and expertise. Visitors can see the people behind the project and the many ways to get involved beyond coding.

Host Contributor Events and Summits

Recognizing online contributions is important, but don‘t overlook the power of face-to-face interaction. Bringing contributors together for in-person events strengthens bonds and helps your community feel like more than just usernames.

Many large open source projects host annual contributor summits. These multi-day gatherings include keynotes, breakout sessions, and social events. They often coincide with a larger conference relevant to the project.

For example, the Kubernetes project has hosted a Contributor Summit at its KubeCon + CloudNativeCon conference since 2016. It gathers hundreds of contributors to collaborate on the project roadmap, recognize outstanding efforts, and have fun together.

Smaller projects can still host meaningful events at a lower cost and complexity. Some popular formats include:

  • Meetups – Recurring local events to discuss the project, often over food and drink
  • Sprints – Focused multi-day sessions to make progress on specific initiatives
  • Office Hours – Designated times for maintainers to be available for questions and mentoring
  • Community Calls – Video calls open to all contributors to demo work and collect feedback
  • Social Events – Informal gatherings like dinners, happy hours, or game nights to bond

For virtual events, tools like Zoom, Google Meet, and Discord make it easy to connect face-to-face from anywhere. For in-person events, you‘ll need to consider costs like venue rental, catering, and travel support.

Sponsorships can help cover these costs. Many companies are eager to support the open source projects they depend on. They can contribute venue space, food and beverage, swag, or direct financial support.

The important thing is to create a welcoming environment for contributors to connect with each other and with maintainers. Use events to celebrate their efforts, gather feedback, and build a shared sense of purpose and community.

Offer Rewards and Incentives

Open source contributions are driven by intrinsic motivations like learning, creativity, and purpose. But that doesn‘t mean you can‘t add extrinsic rewards and incentives to sweeten the deal.

Some popular rewards for open source contributors include:

  • Swag – T-shirts, stickers, plushies, mugs, and other branded items
  • Badges – Digital badges for a user‘s GitHub profile or personal website
  • Points and Leaderboards – Gamified point systems and leaderboards to track contribution activity
  • Achievements – Unique rewards for hitting certain milestones like a number of commits or issues resolved
  • Personal Feedback – Detailed code reviews, shout-outs, or handwritten thank-you notes
  • Conference Invites – Free or discounted tickets to relevant conferences and events
  • Training and Certification – Access to online courses, workshops, or certification programs
  • Résumé and Job Support – Help polishing a résumé, introductions to hiring companies, or references

Your goal is to make contributors feel valued and inspired to make a bigger impact. Rewards can help spark some initial motivation. But don‘t overdo it – too many incentives can crowd out intrinsic motivation and reduce long-term contribution quality.

A good model is the Drupal project‘s Drupal Rewards program. It offers incentives aligned with Drupal Association‘s mission and top community needs. These include:

The program emphasizes rewards that help contributors grow their skills and careers while also strengthening the Drupal project and community. It avoids expensive items in favor of high-impact benefits that scale.

Think about what your project and community need most. How can you structure rewards to incentivize those beneficial behaviors? Focus on rewards that will excite contributors and drive meaningful, sustained participation.

Invest in Maintainer Support and Sustainability

As an open source project grows, its maintainers face mounting pressure and demands. They often lack the time, resources, or expertise to manage a large project while also continuing to code. This can lead to burnout, resentment, and maintainer turnover – destabilizing the project.

Investing in maintainer support and sustainability is crucial for the long-term health of an open source community. Happy, energized maintainers are better equipped to lead the project, mentor contributors, and foster a positive culture.

Some ways to support maintainers:

  • Maintainer Funding – Provide direct financial support through platforms like Tidelift, Open Collective, GitHub Sponsors, or Patreon
  • Paid Time – Allow maintainers to work on the project as part of their salaried job responsibilities
  • Mentorship – Offer mentoring and coaching to help maintainers develop leadership and management skills
  • Conferences and Travel – Cover travel costs for maintainers to attend relevant conferences and events
  • Recognition – Increase public recognition of maintainers through awards, PR, and speaking opportunities
  • Contributor Support – Recruit and empower contributors to take on additional leadership responsibilities
  • Foundations and Grants – Create a foundation or seek grant funding to put the project on a more sustainable footing
  • Licensing and Monetization – Explore alternative licensing and monetization options to fund maintainer work

As a project scales, it may need to evolve its governance model and finances to support a larger maintainer team. The Apache Software Foundation and Linux Foundation offer strong templates for governance, IP management, and fundraising.

The key is being proactive about maintainer sustainability. Don‘t wait until a maintainer is already burned out and ready to quit. Have honest conversations early and often about what support they need. Work together to put the right systems in place.

A great example is the Babel project‘s Babel Maintainer Handbook. It defines clear expectations and support structures for maintainers, including:

  • Paid work on the project underwritten by sponsors and crowdfunding
  • Private channels for maintainer discussion and collaboration
  • Expected time commitments and vacation policies
  • Decision making processes and conflict resolution
  • Maintainer onboarding and offboarding processes

By codifying this information in a public handbook, Babel makes its maintainer experience more transparent and sustainable. It helps manage the community‘s expectations while giving maintainers the support they need to avoid burnout.

Every project will have different maintainer needs. But making maintainer support a priority is non-negotiable for long-term sustainability. Treat your maintainers well and they‘ll be the engine that powers your open source project to new heights.

Conclusion

Open source has become the default way to build software. But its ongoing success depends on creating sustainable communities. Only by attracting, engaging, and retaining passionate contributors can open source projects thrive.

Recognizing the efforts of your open source community is not just a nice thing to do. It‘s essential for combating maintainer burnout, incentivizing participation, and building a collaborative culture. The strategies outlined here are a starting point. But there‘s always more to learn from other projects, maintainers, and contributors.

The most important thing is to start. Begin tracking both code and non-code contributions. Create a prominent space to recognize those efforts. Celebrate your community with events, rewards, and public appreciation. And don‘t forget to support your maintainers so they can keep moving the project forward.

Open source thrives on a virtuous cycle of contribution and recognition. The more you recognize the hard work of your community, the more they‘ll want to contribute. And the more they contribute, the more your project can grow and evolve.

You have the power to create this positive feedback loop in your own community. Use this article as a guide to build a sustainable engine of open source contributions. Your contributors – and your project – will thank you.

Similar Posts