1 April 21, Funding Open Source Software Projects William Cohen NCSU CSC 591W April 21, 2008
2 2 Free vs Libre ● People assume free implies no cost ● Free in the software refers to the license ● Open Source Software has costs associated with it
3 April 21, Developer Resources Needed to Develop Software ● People's time: ● To write software ● To test software ● To write documentation ● To translate output text and documentation
4 April 21, Infrastructure Resources Needed to Develop Software ● Bandwidth and Space for: ● Code repository ● archive ● Bug tracking system ● Source files of software ● Pre-built releases ● Processing power for: ● Building software ● Creating pre-built executable ● Running test and performance suites
5 April 21, Informal Support ● Companies realize benefit of OSS model: ● Improvements from outside developers ● Software adaptable for their own use ● Company allows employees to work on OSS project: ● Release initial work as OSS project ● Contribute to existing OSS project ● Company subsidizes work on OSS project
6 April 21, Types of Involvement ● Sharing the burden ● Augmenting services ● Supporting hardware sales ● Weaken competitor ● Marketing ● Dual-licensing ● Dontations
7 April 21, Sharing the burden ● Pool resources to create or maintain open source project ● Cost of development divided ● Fixes by one developer useful to all people ● Avoid doing redundant work ● Some projects are too large to do alone, in-house: ● Linux kernel ● GCC (Gnu Compiler Collection)
8 April 21, Augmenting Services ● Company has business that dependent on a particular OSS project: ● Consulting services using software ● Software used as part of product offering ● Company has interest in making sure that the OSS project continues to work well
9 April 21, Supporting Hardware Sales ● Hardware vendor realizing that OSS support needed to sale devices (e.g. customer requires device compatible with Linux) ● Many device drivers now being developed by hardware vendors ● May make hardware available to developers to ensure that OSS software works on hardware ● Have contract for developers add support for particular hardware (e.g. profiling support for Arm embedded processor)
10 April 21, Alternative for Competitor's Product ● Find that customers pick a product because of a competitors offering ● Develop an OSS alternative for the competitor's product ● Have customers decide to use the OSS alternative ● Example: Open Office
11 April 21, Marketing ● Being involved in developing popular OSS to improve company's brand ● Which company would a customer prefer to be involved with? ● The company that is actively involved in development and maintenance of the software. ● The company that just downloads the bits and maybe files bug report for upstream maintainers to fix?
12 April 21, Dual-licensing ● Copyright owner license software under two licenses: ● Open Source license ● Proprietary license ● Dual license allows: ● Software to be used in open source projects ● Input from the community about issues with the software ● Most appropriate for embedded software (e.g. libraries)
13 April 21, Donations ● Contributions to help pay for resources ● May be direct donations of equipment (e.g. servers and storage space) ● If project accepts donations, have a plan on how to spend the money before it is available
14 April 21, Money vs. Credibility ● Can pay someone to work on Open Source Project ● Person getting paid for work does not guarantee that the work is accepted into the project ● Person need time to build credibility: ● Understand structure of project ● Understand the standard operating procedures of project ● Reputation of fixing problems and implementing features ● Existing developers give reviews and comments on public mailing list on new developers
15 April 21, Apprenticing Paid Developers ● Someone might be hired to work on a project without previous experience on that project ● Avoid giving paid developers special treatment because the paid to work on project ● Have new developer submit patches like any other new volunteer developer ● Existing developers give them write access to code repository in the same process as volunteer developers
16 April 21, Monolithic Company vs. Individual Developers ● Have the individual company developers discuss things in public ● It is okay to have developer in the same company to have differences of opinion ● Developers working for same company should not vote as a block ● Don't try to figure everything out in internal mailing list and post the “company's” opinion on the external mailing list ● Developers may still work together to form a consensus
17 April 21, Avoid Hidden Agendas ● Give others an understanding why a goal is desirable: ● They can become advocates for the goal ● They may provide better ideas on implementation ● Be open as possible about your goal ● There may be some details cannot discuss: ● Customer confidential information in bug report ● What customer desires a particular feature ● Provide data to back up your point
18 April 21, Contracting ● Often companies see a need for a specific feature in an OSS project ● The company may not have the expertise to implement the work ● Company has a contractor do the implementation
19 April 21, Contract Estimating ● Estimates often rough guesses of amount of work ● Divide the into smaller more estimable chunks ● Cost of contract: ● Time and material (unknown duration scale) ● Fixed cost ● Estimate should cover cost of work ● Estimate may take into account the expertise of the person doing the work: ● New person might take longer to do work
20 April 21, Contracting with Existing Project Developer ● Existing developer on OSS project may be best choice: ● Has understanding of project ● Has credibility on the project ● Developer should be as open as possible about contract: ● May seem odd to sudden push for particular features or bug fixes ● Need to get consensus from other developers ● May get useful feedback for better implementation
21 April 21, Funding Non-Programming Activities ● Not all work on OSS projects is developing new code: ● Quality assurance ● Legal advice and protection ● Documentation and Usability ● Providing Hosting/Bandwidth
22 April 21, Quality Assurance ● Proprietary software has teams of people doing QA: bug hunting, performance and scalability testing, interface and documentation checking ● Open Source Project may not have volunteers working in those areas ● Hopefully, project has made it easy for people to maintain high quality: ● Nightly testing ● Easy to run testsuites ● Companies may dedicate resources to address QA: ● Group that focus on measuring performance ● Group that tests code to catch regressions ● Group that writes documentation
23 April 21, Legal Advice and Protection ● Developers might not be versed in copyright, trademark, and patent law ● Legal department may assist OSS project ● Help enforce license, e.g.: ● Software Freedom Legal Center (SFLC) help with BusyBox
24 April 21, Documentation and Usability ● Some software projects may be lacking appropriate documentation ● Company may see the need for better documentation for the software ● Company support writing tutorials and other materials
25 April 21, Providing Hosting and Bandwidth ● Some companies provide hosting and bandwidth for OSS projects: ● Google, ● Intel, ● IBM, ● Red Hat, ● Sun Microsystems, ● There are also many canned hosting solutions ● The company generally providing more than just hosting and bandwidth to make this worthwhile
26 April 21, Marketing ● Being involved in successful OSS projects can be good for a company ● May make a point of talking about the involvement ● Avoid over stating claims: ● Other developer can be offended by mis-statements ● Things are relatively easy to verify in OSS ● Commits logs to find out who contributed ● Bug list show activity on bug fixes
27 April 21, Further Reading ●