Bounties or grants are often suggested as a way companies can pay for work on free software projects.
The GNOME community has had mixed results with bounties and grants, so when Funambol community manager Stefano Maffulli contacted me about a GNOME grant and said they'd had success using grants for Funambol, I thought it'd be interesting to learn more about the program.
People have mixed opinions about grants or bounties as they are sometimes called. What has been your experience?
I consider the Funambol Code Sniper program to be our networked research and development effort. Being a commercial open source project, Funambol needs to respond to customer requests first and at the end of the day there is little time for exploration. Therefore, sometimes it is more convenient to empower teams that are not part of the company to explore environments that are not necessarily going to generate revenue.
For example, under the Code Sniper program, we sponsored a solution to sync contacts with Yahoo! and Google services long before we had any customers ask for it. Now that code is part of the Funambol commercial offering (and we've hired the developers, too).
Another example of this R&D play is the exploration of social networking features that resulted into the development of AvatarGrabber: it's a simple java app that 'scrapes' the web in search of images of people in your addressbook and lets you chose which image to assign to them. The result is a 'pimped' addressbook with your friends' pics from myspace, facebook, gravatar and other sites. We don't know yet if this software will ever go beyond being a cool toy and end up in a product but nevertheless the company has learned something about social networking from it.
We haven't had any backlash about offering cash bounties. We do recognize that free software developers are not really motivated by the money aspect, and that it's something else that makes them tick. However, we view the money as a token of our appreciation for their effort, to recognize them, and they can always donate it to charity or some other cause if they don't really want the money.
Do you attract new developers or existing developers?
The people that participate in the Code Sniper program are mostly young developers willing to learn how to develop for mobile environments. They're not complete newbies, though: mobile software development can get pretty complex.
Do people that work on the grant projects usually stick around and work on other projects, paid or unpaid?
Several of the participants in Code Sniper have been hired. The rest are still maintaining their projects as volunteers.
Do you get a lot of good work this way? Are you able to take the code the grantee gives you and run with it?
For the majority of the projects, we end up with decent code, at least for a proof of concept. But mostly we gain experience as a company: we try to make sure that all projects have an internal mentor that can devote a few hours per week to follow the project so that at least one team member can participate in the development process. Occasionally we don't get good results, mainly because of lack of communication between the code sniper and the company or even the wider community.
Do you close the grant as soon as one person says they are interested or do multiple people work on it at once? If so, how do you decide who gets the money?
We've had cases where more than one person applied at the same time for the same grant. In those cases we try to encourage collaboration with the candidates and split the grant equally. In our experience this is not an ideal solution though.
To improve the Code Sniper process, I'm working to change how the incentives are distributed. The new process will reward the constant effort from the participant and allow for more people to work on one project without conflict.
I'm also thinking of other non-monetary compensations, like kudos or Linkedin recommendations from our lead developers, donations to their favorite .org and so on.
One complaint against grants and bounties is that by the time you finish specifying the requirements, you might as well have written the code. How much work do you spend getting the specifications right?
We do very little of that. Usually the grants are just basic ideas and we leave to candidates the chance to elaborate further and shape their own project.
The candidates need to send a brief resume and a very basic draft project. After approval, they're asked to write the full specifications of the project and discuss it with the Funambol developers on the mailing list. Once the specs are ready, the (fun) development phase can start. When development is done, a first half of the grant is paid and the software is tested by Funambol engineers. If they consider the project done, the other half of the grant is paid.
I'm investigating whether it would make more sense to use a 'leaner' approach to development, with less planning in advance and more coding. Unfortunately I still haven't found the appropriate balance between free software coding habits (unregulated scratch-your-own-itch) and lean development techniques like Agile/SCRUM (that need a management structure and role separation between users, product owner and developers).
If your readers have any pointers to material, I'd be glad to learn more.
How many successful grant projects have you had?
The Code Sniper program was started over 2 years ago and the company is satisfied with the results obtained so far: 4 components developed with these bounties have been integrated into the Funambol product and are shipped to customers, one of these helped acquiring a new customer. A few others are being considered for inclusion in the product (like the Funambol client for Mozilla Thunderbird).
What are you most excited about the Funambol Code Sniper program?
I like two things of this program: one is to see this program as part of a larger free software innovation network, especially useful in the mobile market. But mostly, it's exciting to be able to give back to the free software community.