Contributing to Open Source Development with Bounties
If you want to support Open Source projects, it couldn't be easier! Simply sign up to Bountysource, find the project and the issue you want to support. Then just pledge money for that issue. When the issue is closed, the reward will be paid to the developer.
Bountysource administer all the details, for that they take a 10% fee. If you pledge $110, the developer will receive $100. Other Open Source bounty sites are available, if you wish to use an alternative.
How Does Bountysource work?
From the Bountysource FAQ
There are two main functions: Fundraisers and Bounties.
How Bounties work:
- Users fund bounties on open issues or feature requests they want to see addressed.
- These users spread the word about the bounty, enticing developers to create a solution.
- Developers create solutions and claim the bounty on Bountysource.
- Backers can accept or reject the claim
- If accepted, Bountysource pays the bounty to the developer.
How Fundraisers work:
- Anyone can come to Bountysource and create a Fundraiser. Open-source fundraisers are typically used to raise money for new projects, big updates to existing projects, or to raise money for bounties.
- The Fundraiser creator spreads the word about the Fundraiser to the appropriate communities.
- Anyone can come to Bountysource and make pledges to a Fundraiser, helping it reach its funding goal in time.
Popular RepRap projects at Bountysource
Project exists, but is not listed
Ask the developer if they will add their projects to a bounty site. Note, the project may need to have an acceptable Open Source licence to qualify.
Issue not listed
If a project does not have the issue that you want, you can raise an issue. Before raising a new issue, it is best to try to discuss with the developers first, as your request may already be in work, or unfeasible, or needs clarifying as to what the request is. If you decide a new issue, you will need to sign up to Github, or wherever the project is hosted, and create a new issue in their issues tracker. Mark it "Feature Request" as appropriate.
Request for a new project
It may be that the development you want to support is a new project. In which case, you will need to find a developer to create a project.
Perhaps the way to support creation of new projects is to create a RepRap Meta-project, where people can raise issues which are new projects in themselves.
Does a project have to use Github or git?
No, but using the github Issues tracker is the best way for Bountysource to track issues for you. The project files do not need to be stored in git or github, but they must be hosted at a web site that is compatible with Open Source projects.
The Prototype RepRap Project Tracker
The purpose of the Meta Project is to track project requests for RepRap related development.
- To suggest a project that does not already exist, raise an issue.
- To place a bounty, go to bountysource and select the issue.
- Any person who wants to claim a bounty should propose a solution to the issue, if the solution is satisfactory then the issue will be closed and then the bounty can be claimed
It is not a requirement that people use the Meta Project to track requests, but it can be a very convenient means to do so, especially for people who are not so familiar with the workings of Git and Github. The Meta Project allows anyone to raise an issue and open a bounty for an interesting project, while minimizing the effort they need to put in to manage a Github project.
An Example Open Source Hardware Project
Creating the Bounty
Here is a complete example of how to create a bounty for a hardware project using the RepRap bounty tracker. We chose the simplest possible hardware project (putting together a nut and bolt) as a "Hello World" demonstration to illustrate how the whole process works. The specific link for the issue related to the nut and bolt project is: https://github.com/bobc/RepRap-meta-proto/issues/2.
- Go to the github page of the bounty tracker at this link: https://github.com/bobc/RepRap-meta-proto. You will see a page something like this:
- Click on the "Issues" button to raise a new issue. In the boxes to describe the issue, give a description of the project and the criteria for completion:
- Once the New Issue has been created, you will have to wait until it shows up at Bountysource. This seems to take a matter of minutes or even up to an hour. Once Bountysource has detected the new issue, a link will appear on Github that allows anyone to place a bounty on the issue. (please note: the name of the issue in this screencap is "Gizmo" which is different from the original "Nuts and Bolts" issue - Matt forgot to take a screencap of "nuts and bolts" at this stage and so had to make a new issue (gizmo) just for the screencap...)
- After you click on the link to open a bounty, you will be taken to Bountysource where you can place the bounty. You can use Google Wallet or Paypal. You can post anonymously. IMPORTANT: Bountysource will take your money as soon as you place a bounty. Once you have placed the bounty, it will appear on the RepRap project tracker on Github and on Bountysource.
Claiming the Bounty
Suppose you have found an open bounty and decided to do the work. In this case, Matt did the work for his own bounty (which is kind of silly of course), but the procedure would work the same if the backer and developer were different people. In order to claim the bounty, Matt has to release his design files with an open source license and provide sufficient instructions such that someone else can replicate his work. He documented the Nut and Bolt project on the RepRap wiki here: Nut_and_bolt_example. IMPORTANT: Many hardware developers seem to have trouble knowing where to start with the wiki. There is a tutorial here to help get them going.
- Once you have completed the project and documented the work in a suitable medium, add a comment to the project's issue on the RepRap bounty tracker. If the backer(s) are satisfied, they will close the issue:
- When the Bountysource page detects that the issue has been closed, the decision now moves to the backers as to whether the project was completed satisfactorily. The issue shows as closed:
- And the developer (the person who did the work) can now claim the bounty. The developer writes a short description of what they did and a link to where they have posted the source files:
- And the backer (again, this is kind of confusing because in this example the backer and the developer are the same person) votes on whether the project is completed or not:
- After the claim is accepted by the backer, the developer gets paid!!