This answer summarises many of the answers to the following questions, along with some additional research and opinion.
Open source can be a viable primary or auxiliary business model, both directly through specific project work and indirectly through the acquisition of skills, experience and reputation. There may also be additional, motivations; the satisfaction of producing software that is useful to others, the "scratching of one's personal itch" (the first step towards any good piece of open source software, according to Eric S. Raymond), or philosophical reasons, normally based around the notion of free software, either the copyleft approach advocated by Richard Stallman, or the more permissive approach of the BSD licenses.
Ways to earn money through Open Source
1. Sponsorship by a company
This can happen in several ways.
- Permanent job to continue work on high-profile project. This is probably the rarest case. If you are a senior member of a major open source project, someone like Linus Torvalds, Guido van Rossum or Theo de Raadt, then you will probably be able to continue working on your project while being financially supported by a major company such as Google or IBM. Although this mode of support is relatively uncommon, you don't necessarily have to be an open source superstar to secure this type of funding; many Linux kernel developers are partially or wholly funded by companies like Red Hat.
- Paid for specific features or extensions. Some companies offer bounties to have specific features implemented in open source software that they use for business functions. Often there is no need for the feature to remain closed source, so significant code is contributed back to the community. This has been described as the beekeeper model of open source development. In some cases the additional features are required to remain proprietary, but are based upon an open source codebase. In both cases, open source expertise is a clear advantage for a developer.
- Your day job code can be open-sourced. A related case is where aspects of the code you write for a company in the course of your day-to-day job may be open-sourced without harm to the company. The code may or may not be based on an existing FOSS project. Generically useful tools and libraries may often be released in this way, and anecdotal evidence suggests such projects can often accelerate once they become volunteer-driven.
2. Add value to existing projects
An individual or company can position themselves as a primary provider that adds value to an existing open-source project or projects. There are many examples of companies who provide a service by packaging, layering, combining or extending existing projects. They broadly fall into two categories.
- Support. Enthought adds value by packaging a custom Python distribution focusing on scientific libraries. Redhat and the other Linux distributions add value by collating and testing many disparate open source projects, and providing easy-to-use install and upgrade mechanisms. These companies sell support services in the same way as many proprietary providers do.
- Freemium model. Under this model, a basic version of the software or service is free; additional 'premium' features normally cost extra. Sleepycat software provided extra features for the Berkeley DB under a proprietary license. Cedega provides a reimplementation of the Windows API under Linux, released as a mixture of free and proprietary code. This model need not be open source; Gmail for organizations is one example of a service that offers both free (as in beer) and premium options.
3. Offer code under a dual-licensing model
A powerful approach is to offer software under two alternative licenses, a copyleft license requiring modifications to be released back to the community if the software is distributed, and a commercial license allowing the use of the software without open-source restrictions. This approach has been successfully applied by large projects such as Qt and Open Office, as well as to small one-off projects.
Open-source work can provide a way to gain valuable community visibility.
- Showcasing of abilities. Being able to verify a developer's work and competence by looking at open source projects they have been involved in is a powerful draw for prospective employers.
- Reputation building. Having a high profile reputation in an open source community can lead to speaking engagements, training requests or book writing offers based on your expertise.
- Being the expert. Being a significant player in a technology that companies need, means being in demand for custom consulting, support and training in that technology. This can lead to the creation of a specific job niche in your area of expertise.
5. Auxiliary channels
Finally, income can be derived through auxiliary channels such as advertising (as Stackoverflow does), donations, or through the use of nagware techniques in the software itself that aim to annoy a user into providing financial contributions to the author. These techniques are not specific to Open Source development models. For example, they are often used by non-free shareware products.