Difference between revisions of "Bounties"

From BoofCV
Jump to navigationJump to search
m
m
Line 1: Line 1:
Bounties are an opportunity to get a little bit of money while helping out the development of BoofCV and the community as a whole.  Anyone can submit code they own and donate it to the project for one of the tasks below.  If the code is accepted you will get the bounty [1]!  Each bounty is broken up into two amounts, base and bonus.  The base is the amount you will receive no matter what if you complete the task and the code is accepted.  The bonus is a variable amount that is decided based on the quality of the code, if it meet all the requirements, and how much time was needed to integrate it in.
Bounties are an opportunity to get a little bit of money while helping out the development of BoofCV and the community as a whole.  Anyone can submit code they own and donate it to the project for one of the tasks below.  If the code is accepted you will get the bounty [1]!  Each bounty is broken up into two amounts, base and bonus.  The base is the amount you will receive no matter what if you complete the task and the code is accepted.  The bonus is a variable amount that is decided based on the quality of the code, if it meet all the requirements, and how much time was needed to integrate it in.


It's advised that you publicly announce on the BoofCV message board that you're working on a bounty and provide a link to your project page.  This is a collaboration not a competition in the end!
It's advised that you publicly announce on the BoofCV message board that you're working on a bounty and provide a link to your project page.  This is a collaboration not a competition in the end! Feel free to place comments in the Bounty Google Doc description for clarifications.


THIS HASN'T STARTED YET
THIS HASN'T STARTED YET
Line 14: Line 14:
!style="width: 15%; text-align:center;"| Max Bonus
!style="width: 15%; text-align:center;"| Max Bonus
|-
|-
| Generate Webpage Javadoc with Gradle
| [https://docs.google.com/document/d/1_v7HNDXJnwp5dO9Y6ZE5r-6EIb3SUIssWT_9IuilZKw/edit?usp=sharing Generate Webpage Javadoc with Gradle]
| $75
| $75
|  
|  
Line 92: Line 92:
== Rules ==
== Rules ==


Definitions
''Definitions''
* Awardee, refers to the person receiving the bounty
* Awardee, refers to the person receiving the bounty
* Award, refers to the amount of money award for completing a bounty.
* Award, refers to the amount of money award for completing a bounty.
* Internal Submission, A bounty which involve submitting and donating new code for integration into BoofCV
* External Submission, A bounty which does not involve adding code to BoofCV


Submission
''Internal Submission''
* These bounties involve adding new code to the BoofCV project
* To qualify for a bounty you must submit a pull request on [http://github.com GitHub] against the latest [https://github.com/lessthanoptimal/BoofCV/tree/SNAPSHOT SNAPSHOT] of BoofCV with your code
* To qualify for a bounty you must submit a pull request on [http://github.com GitHub] against the latest [https://github.com/lessthanoptimal/BoofCV/tree/SNAPSHOT SNAPSHOT] of BoofCV with your code
* The pull request must specify which bounty it is for and who will receive the award
* The pull request must specify which bounty it is for and who will receive the award
Line 109: Line 112:
** The license can only be changed to an open source license approved by the [https://opensource.org/licenses Open Source Initiative] in the future
** The license can only be changed to an open source license approved by the [https://opensource.org/licenses Open Source Initiative] in the future


Awarding of a Bounty
''External Submissions''
* Submissions that do not involve donating code to BoofCV please see the Google Doc description for how to complete the task
* Examples:
** Fixing code in another project and getting the patch accepted
** Creating and hosting a website while making the code publicly available
** Creating your own project and releasing it as an independent open source project hosted publicly
 
 
''Awarding of a Bounty''


* All bounties are specified in US dollars
* All bounties are specified in US dollars
Line 117: Line 128:
** If multiple individuals contributed it is up to them to decide who will receive the payment
** If multiple individuals contributed it is up to them to decide who will receive the payment
* After code has been accepted an individual qualifies to receive the award
* After code has been accepted an individual qualifies to receive the award
** The award is specified on the wiki Bounties page by Peter Abeles
** The award is specified on the wiki Bounties page and was set by Peter Abeles
** If the award amount on the page changes then the largest award after the following events will be used
** If the award amount on the page changes then the largest award after the following events will be used
*** Announcement of awardee on BoofCV message board
*** Announcement of awardee on BoofCV message board
*** Submition of the pull request with qualifying code
*** Submition of the pull request with qualifying code
** Mistakes happen and type-os may or may not be honored. Please let us know if you see any!
** Mistakes happen and type-os may or may not be honored. Please let us know if you see anything that looks suspicious!
** The final award amount will be the base award plus the bonus
** The final award amount will be the base award plus the bonus
** The amount of bonus will vary between $0 and the maximum specified on the bounties webpage
** The amount of bonus will vary between $0 and the maximum specified on the bounties webpage

Revision as of 22:13, 23 December 2016

Bounties are an opportunity to get a little bit of money while helping out the development of BoofCV and the community as a whole. Anyone can submit code they own and donate it to the project for one of the tasks below. If the code is accepted you will get the bounty [1]! Each bounty is broken up into two amounts, base and bonus. The base is the amount you will receive no matter what if you complete the task and the code is accepted. The bonus is a variable amount that is decided based on the quality of the code, if it meet all the requirements, and how much time was needed to integrate it in.

It's advised that you publicly announce on the BoofCV message board that you're working on a bounty and provide a link to your project page. This is a collaboration not a competition in the end! Feel free to place comments in the Bounty Google Doc description for clarifications.

THIS HASN'T STARTED YET

[1] Read the rules below. There are rare exceptions.

Bounties: Infrastructure

Task Base Max Bonus
Generate Webpage Javadoc with Gradle $75
Improvements to Example/Demonstration Application $100 $50
Website for Generating Fiducials and Calibration targets $100 $100
Improve 3D Point Cloud Viewer $50 $150
Assisted Calibration in ROS $50 $50

Bounties: Algorithms

Task Base Max Bonus
AruCo markers in BoofCV Leveraging Existing $100 $100
Improve Supervised Watershed $50 $50
Improved Image Stitching $100 $100
GMM Based Background Model $50 $50
People Detector $100 $200
Face Detector $100 $200

Code Requirements

To qualify for the award you must meet all the minimum requirements specified in the project description and when applicable the following is also required. Code might be accepted even if it doesn't meet all of the "requirements". If that does happen then the bonus amount is likely to be reduced or removed completely.

  • All submitted code must have unit tests
  • Unit tests should take at most 50ms to complete each
    • Current unit tests take on average 10ms each
    • You should shoot for 2ms or less
  • You must provide a usage example with example data
  • Algorithms must be integrated into existing regression tests in ValidationBoof or have new ones created
    • Regression tests for speed and stability will be required
  • No merge conflict with latest SNAPSHOT

Suggestions:

  • Use of existing internal functionality is highly encouraged
    • Don't reinvent the wheel unless there is a good reason
    • Ask if you don't know if that capability exists already!
  • Adding new external libraries is discouraged and will need to be justified
    • We like to keep BoofCV as small as possible
    • Getting external developers to fix bugs is often a tedious procedure and slows down development
  • Code shoukd minimize the creation of new memory and should recycle memory as much as possible
    • Ask for examples if you aren't sure how to do this

Rules

Definitions

  • Awardee, refers to the person receiving the bounty
  • Award, refers to the amount of money award for completing a bounty.
  • Internal Submission, A bounty which involve submitting and donating new code for integration into BoofCV
  • External Submission, A bounty which does not involve adding code to BoofCV

Internal Submission

  • These bounties involve adding new code to the BoofCV project
  • To qualify for a bounty you must submit a pull request on GitHub against the latest SNAPSHOT of BoofCV with your code
  • The pull request must specify which bounty it is for and who will receive the award
  • All of the code included with the pull request must be owned by you
  • Before it can be accepted the copyright/ownership of the code must be transferred over to the BoofCV project
  • The code is considered accepted once it has been merged into the master repository on GitHub
  • Transferring of ownership over to BoofCV project involves the following:
    • The code will be released publicly under the open source licensed used by BoofCV at the time
      • Which is Apache 2.0 at the time of this writing
    • Since BoofCV is not a legal entity the code will be owned by Peter Abeles
    • In the future the code may be transferred to another individual or group (e.g. BoofCV becomes a registered non-profit)
    • The license can only be changed to an open source license approved by the Open Source Initiative in the future

External Submissions

  • Submissions that do not involve donating code to BoofCV please see the Google Doc description for how to complete the task
  • Examples:
    • Fixing code in another project and getting the patch accepted
    • Creating and hosting a website while making the code publicly available
    • Creating your own project and releasing it as an independent open source project hosted publicly


Awarding of a Bounty

  • All bounties are specified in US dollars
  • No bounty will be awarded more than once
    • If multiple qualified bounties are received then time stamp on GitHub will be used to decide who gets the award
  • Only one individual can receive a bounty
    • If multiple individuals contributed it is up to them to decide who will receive the payment
  • After code has been accepted an individual qualifies to receive the award
    • The award is specified on the wiki Bounties page and was set by Peter Abeles
    • If the award amount on the page changes then the largest award after the following events will be used
      • Announcement of awardee on BoofCV message board
      • Submition of the pull request with qualifying code
    • Mistakes happen and type-os may or may not be honored. Please let us know if you see anything that looks suspicious!
    • The final award amount will be the base award plus the bonus
    • The amount of bonus will vary between $0 and the maximum specified on the bounties webpage
  • Bounties will be awarded to an individual when it is legal to do so within the US and their home country
  • A bounty will be award using PayPal
  • The awardee has 30 days from the date of pull request acceptance to fix any issues with receipt of award
  • If a bounty cannot be sent to an individual a donation will be made in their name to a charity from the list below for amount of the award