Announcing the OBS Project Bounty Program
When we first announced that the OBS Project would begin accepting sponsorships over two years ago, our primary goal was to promote the sustainability of OBS development for its contributors. Through your generosity, we’ve grown to be able to support two full-time developers, as well as give back to several contributors from the community in appreciation of their work. And for that, we are extremely grateful!
However, for some time now, we’ve wanted to make our sponsorship funds go even farther. That’s why, today, we’re announcing the OBS Project Bounty Program. This new program allows us to share our highest priorities with the developer community and provide compensation for the developers who offer their time and expertise to meet those needs.
Bounties have long been a staple tool of open source projects to help focus community development efforts on a project’s most pressing needs. By assigning bounties to select features and bugs with well-defined completion parameters, we will be able to effectively fuel development in a manner that both aligns with the project’s goals and supports the developers who put in the work to make it happen. We are (and continue to be) immensely grateful for the work of our community contributors, and we hope that bounties will be a way that we can support those contributors as they continue to give their time to the project.
To start out, we have published a small list of features which we have already set a bounty on. While not all of these features are at the very top of our current priority list, they are manageable and impactful enough that they can serve as a useful test bed for the bounty program in order to iron out any issues we might have in the bounty program’s implementation.
To see the list of currently-open bounties, click here.
Meeting the Challenges of a Bounty Program
Bounty programs are not a new concept in open source projects, but their implementations have had mixed results. We spent a great deal of time considering how we might avoid most of the common problems encountered by other projects, which lead us to the following principles:
- Curated: Instead of maintaining an open bounty submission process, bounties will be defined and published by the OBS development team in an effort to ensure that development efforts are directed toward the project’s current goals and priorities. Bounty amounts will be set according to the estimated difficulty of the feature, as well as the general utility/demand for the feature.
- Well-defined: Bounties will be written such that the criteria under which the bounty will be considered complete are made as explicit as possible. We want to remove as much ambiguity as possible in the development process to reduce the chance of conflict between bounty developers and the OBS development team during the development process.
- Non-competitive: We want to avoid a situation where the release of a bounty kicks off a race where multiple developers compete to be the first to submit a pull request that meets the bounty requirements, as we believe that would foster an unhealthy community atmosphere, waste developer time, and produce lower-quality code. Instead, we will be following a request for proposals process. Essentially, the bounty posting itself will serve as a general specification, and will solicit proposals from would-be developers to describe how they would implement the bounty. One of these proposals will be selected, and we will guide that developer to ensure that the development of the feature or bugfix is executed in a timely and maintainable manner.
For more details on the processes and procedures we will be following for this bounty program, please see the documentation here.
Bounty Program FAQ
Q. Where does the money come from to pay for these bounties?
A. Bounties will be funded through the project’s Open Collective fund, which is paid for by our generous community of financial supporters and sponsors. We have set up a “OBS Project Bounty Program” project on our collective page that is explicitly set aside to compensate developers who are completing bounties and other community development projects.
Q. How can I contribute money to increase a specific bounty’s payout?
A. Inside the “OBS Project Bounty Program” project on Open Collective, when you make a contribution, you may select which bounty you wish to earmark the funds for, or simply contribute to the general bounty fund instead. While this is not ideal, as it’s not possible to see in real-time how much money is currently allocated to a specific bounty, it should suffice for the time being until the Open Collective platform supports such features.
Q. I want to contribute toward the development of a specific feature, but I don’t see a bounty for it. How can I contribute toward it? Can I set my own bounty?
A. We are curating the features that we choose to set bounties on for the time being, as we want to ensure that development efforts are put toward the items that we are prioritizing as a project right now. Furthermore, for the initial bounty period, we are limiting the features for which we are setting bounties so that we can iron out any issues with the process before we begin work on expanding the list of available bounties. In the meantime, you can contribute directly to the general bounty fund instead, if you wish.
Q. How does the bounty program and the idea of Requests For Proposals (RFPs) relate to the current Request For Comments (RFCs) system that is already in place?
A. The RFC system is largely a place for contributors to propose changes to the program and solicit feedback before starting work on a project. As such, by its very nature, it has an open submission process that allows anyone to author an RFC. The bounty program, instead, serves as a place for the core developers of the OBS Project to explicitly solicit proposals for development on specific features that we want to prioritize, rather than maintain an open platform for feature submissions. It’s entirely possible that, in the future, we may issue grants to people who develop RFCs so that they can work on the implementation of their feature ideas. However, that prospect is something to consider for the future as we attempt to keep the system as simple as possible while it gets off the ground for now.