At our team retreat six months ago, we decided to test out a Bounty program. We were inspired by Collectives on our platform who are successfully using bounties to support more contributions from their community, like Jhipster.
Our engineering team is small and it's difficult to achieve everything we would like to. We have a ton of open issues—bugs, enhancements, technical debt, and also small-scale projects and features.
Our goal was simple: find someone to take care of them. We have two great assets to achieve this, our code is 100% open source and we also have a fantastic community who wants to contribute.
Our mission is all about using funding to make contributing to open, collaborative projects sustainable. So while we weren’t attempting to match market rates, it was important to us to compensate people. We want to value everyone’s time, and make it more accessible to those who aren’t able to work unpaid.
We started with some simple guidelines. We use a “bounty” label on GitHub to identify issues that can be worked on as bounties, and another label to indicate complexity and pay level.
💰$100 for "simple complexity issues" (~1- 2 hs average estimated completion time)
💰$300 for "medium complexity issues" (~1 day average estimated completion time)
💰$1,000 for "complex issues" (~1 day average estimated completion time)
And we gave it a go!
Bounty Program Results
So after roughly 6 months, these are the results:
🚀36 issues completed
🤗15 new contributors
Not bad for a start! You can see a detailed breakdown of all the bounties completed so far here. We have learned a lot along the way and iterated on the initial design of the program. We updated the rules based on what we discovered:
📃We worked on better, clearer, in-depth documentation. We were assuming a lot of knowledge of our environment from our contributors which wasn’t helping them achieve the bounties.
✔️Bounty contributors first comment on the issue they’re interested in, to ask a core contributor to assign them to it. This ensures that multiple people aren’t unknowingly working on the same bounty simultaneously, and gives our core team the chance to check everything’s in order.
⏳We set a time limit based on the complexity of the issue, so that if an initial bounty contributor doesn’t deliver it can be opened up to others (though we’re generous about extending deadlines as long as progress is being made).
✅Before claiming a bigger issue, contributors must complete a simple one first. This helps us assess their skill level and avoid frustration and lost time.
🌱We found that complex issues don’t really work as bounties, because they usually require a lot of back and forth and are hard to scope accurately in advance. So we’ve drop them in favor of larger issues split into small bounties. We are also engaging frequent contributors on a project or hourly basis for them.
🏷️We started using a “bounty candidate” label so other team members could bring potential bounty issues to the attention of the core dev team and they could be assessed for suitability.
📑We learned a lot about the importance of making sure bounty issues were fully specced out and didn’t require more design before starting implementation.
Open Source Community Africa
We’ve also learned a lot from our collaboration with Open Source Community Africa. As part of their events in Nigeria and Kenya, they ran hackathons where participants worked on our bounties. These events involved up to 60 people working simultaneously, without us present on the ground to provide support.
We’ve found what works best for these events is to prepare a large number of small, achievable issues, at an even smaller rate than our normal simple level, so contributors don’t end up tackling more complexity than they can handle and can come away having a good experience.
Where to from here: the Contributor Ladder
Our goals for the next 6 months:
🚀More issues available and completed
🚀Attract an even more diverse group of people to the program
🚀Develop our relationships with recurring contributors
To achieve this, we’ve decided to double down on bounties and double their value!
- $100 for "minimal complexity issues" (<1 hour average estimated completion time)
- $200 for "simple complexity issues" (~1 or 2 hours average estimated completion time)
- $500 for "medium complexity issues" (~1 day average estimated completion time)
We want to help developers grow their skills and develop our relationships with them.
To facilitate this, we’ve come up with the Contributor Ladder:
🌱First Time Contributors
- Have access to minimal or simple complexity issues
- Contributors are not part of the Open Collective GitHub organization
- Fork our projects on GitHub and push changes on their forks
- Should comment on bounty issues to get assigned (limited to one at a time)
🌿 Contributors (at least 1 completed issue)
- They get added to the Open Collective GitHub organization
- Can assign themselves bounty issues (limited to one at a time)
- Have access to minimal, simple or medium complexity issues
🌲Recurring Contributors (3 or more completed issues)
- Added to the "Recurring Contributors" group on the Open Collective GitHub organization
- Can assign themselves bounty issues (limited to two at a time)
- Have access to minimal, simple or medium complexity issues
🎄Confirmed Contributors (3 completed issues including at least 2 with medium complexity)
- Added to the "Confirmed Contributors" group on the Open Collective GitHub organization
- Become candidates to work on complex issues or projects on a negotiable per-project or hourly rate
We're re-launching the bounty program with these changes today and we're looking forward to your contributions!
How the Contributor Ladder works with hiring
But that’s not all. We’re currently hiring for a full time senior engineering position, and have decided to map our hiring process to the Contributor Ladder.
Instead of an unpaid take-home assignment, we are asking every candidate to do a first contribution to our codebase by completing a bounty issue. We will compensate their contribution with the bounty amount.
If that’s successfully merged, we’ll ask them to tackle a more complex issue, compensated at a higher rate. After reviewing and discussing their work, we’ll decide together whether to move to the next steps of a call with our CEO and a short trial period, which can lead to an offer to join the team full time.
We know this is an unusual process, but we’re an unusual company. This process reflects our culture of transparency, and making contributions to open source financially sustainable. It’s important to us to compensate developers, whether we end up hiring them or not.
We are looking forward to having you all with us!