Guidelines for a successful bounty project - **READ BEFORE POSTING A BOUNTY**
Recently we've seen a slew of bounty projects go up and get absolutely no response. Most of these bounty projects had a number of common issues which diminished developer interest in responding to them. In order to help re-kindle the bounty system, here are some useful guidelines to help gain visibility from potential developers:
Does this already exist in a development version?
Many bounty requests come in for features which have already been added to an upcoming version of pfSense. Before posting a bounty for a feature, make sure the feature does not already exist in an upcoming version. If the feature does exist, it may be possible to backport the feature, although this is entirely at the developer's discretion.
Be very specific
Bounty offers must be extremely specific. Provide a detailed description of what the completed feature will look like. This serves two purposes.
- It gives a developer a way to estimate how much work needs to be done so they can determine if they are able to commit to the project.
- It protects you from miscommunication. You may have a very different picture of what the finished product will look like than the developer has. If you don't communicate your vision clearly, you're at the mercy of the developer's vision and you may end up with a completed bounty that isn't what you wanted.
Include in your bounty project are what version you want the bounty applied to. Typically this is going to be whatever version is currently in development which means your bounty project may not see the light of day until that version hits the streets. If your features affect the main pfSense system and are fairly extensive, this may be your only choice. If, however, they're mostly cosmetic, it may be possible for them to be backported to the current release version. This is at the discretion of the developers, but they're usually pretty willing to work with you.
Before posting a bounty be sure to do your research. If you want a package that does XYZ, make sure that software for doing XYZ exist somewhere in FreeBSDland and that you understand what that software can do. Do not assume that because the software exists in Linux, that it will work in FreeBSD. Make sure you understand what the software is, what it does and how you want it included into pfSense. Do not expect a developer to do your research for you as part of the bidding process.
Make sure you include the form of the final deliverable. If the bounty is intended to be for a future version of pfSense and free for all to use, then that is one thing. On the other hand, if you expect to be the only person to be able to use the new functionality, specify the form you want that functionality to come in (ie: custom build of pfSense, patch, etc.). Keep in mind that many developers will charge a premium for work that is not intended to be released back into pfSense for the general good.
Take a look at the bounty projects that have been completed and notice how they were done. Use them as examples for posting your own bounty request.
Setting a reasonable price
Do not fall under the misconception that because pfSense is free software that the pfSense developers will work for pennies. Good software takes a lot of time to design, write and test. Expect to pay a developer a decent rate for his time. This rate can typically be somewhere between $60-$150USD per hour. Doing a piece of software correctly cannot be done in an hour. For simple enhancements to the webGUI, consider estimating 4-6 hours. For more involved projects like creating a new package, consider something closer to 10-20 hours for a moderately complex package.
Configuration help bounties
There are a lot of bounties for people asking for configuration help. For those of you who need help getting your system set up in a specific way, consider paying for a commercial support package. Its a great way to support pfSense and pay the developers for their time, plus you can be assured that you're getting someone who really knows this system to look at your network environment and help you configure pfSense properly.