You are here

Chapter 2: What is FOSS?

Chapter 2: What is free and open source software and how is it developed?

The FOSS model of software developmentIn the past decade, computer and Internet technologies have caused radical changes in the way organizations carry out their missions. The existence of more powerful hardware is certainly significant. Even more important is the software installed on these machines - the technology that allows computers to communicate over the Internet, and accomplish mission-specific tasks. And further changing the this has been the explosion of Web 2.0 – tools used over the web such as Google documents, Flickr, and others, that replace large amounts of work that used to be done either on one machine, or within an organizational network, as well as promote collaborative content generation and peer connections.In the past, the primary model for acquiring desktop software was to obtain it at the time of your computer purchase, or as an add-on purchased later. The software might come pre-installed or on a separate installation CD, but in no case would you have access to the source code. The software vendor would retain the exclusive right to make changes, and thus you would be at their mercy for updates. Quite often, enhancements and technical support for products you used would be discontinued after a time, possibly to encourage you to purchase newer products.For server-based software (software with shared data that relies on a server such as case management, member databases, or CRM) an organization could choose to buy expensive software, or have it built for them. In either case, it was rare that this software would come with a license that allowed for modification or re-release.Free and open source software is a different model of software development, one that the nonprofit sector is just beginning to embrace. The key advantage of the open source model over the proprietary model is that everyone has access to the source code of an application. This may not seem very significant to most nonprofits; after all, few organizations can afford a software developer on staff. In practice, the fact that a program is open source makes a difference, because in many cases, it enables hundreds of technical people, many working as volunteers with no commercial incentive, to collaborate on continual enhancements to software. Eric Raymond, in a seminal paper on the FOSS model entitled The Cathedral and the Bazaar, wrote: 'open-source software [is] the process of systematically harnessing open development and decentralized peer review to lower costs and improve software quality.' In addition, unlike many proprietary products, FOSS is often based on open standards, which enhance the potential interoperability of software that organizations need to use, and also enhance the ability of different software to communicate with each other. The use of open standards can help to prevent 'lock-in,' a common problem where organizations are forced to continue using the same product because data migration would be too expensive.Who creates free and open source software?The movement toward open source software was originated by computer science researchers as early as the 1970s. Early open source projects were concentrated in academia, where developers popularized the idea of copyrighting one's computer programs with a statement mandating that the software would always be open to the public. This made a lot of sense, as much of the initial research in the field was funded with public tax dollars.As a result of this movement the practice of 'giving back to the community' by writing FOSS was adopted by many software developers. Many organizations (primarily academic institutions) followed suit, agreeing to release the source code of software developed for internal use. In the early 1990s, a Finnish researcher named Linus Torvalds built upon previous work (by the Free Software Foundation and others) to create what is now known as Linux to replace the proprietary Unix operating system.In the mid 1990s web sites like SourceForge.org arose to serve as clearinghouses for open source development efforts, so that open source programmers would be less likely to reinvent the wheel. The body of software that has resulted from this process is such that most medium and large for-profit corporations are now using FOSS to carry out some of their IT needs, and some have chosen to replace proprietary software entirely. Many large and medium-sized nonprofits, such as Greenpeace and Amnesty International, depend on FOSS. Some of the largest web services companies, such as Google, Yahoo and others completely rely on open source software for their infrastructure.In addition, there has been an evolution of support for FOSS, that we will talk about later in this primer - from organizations depending on volunteers to support FOSS, to hiring consultants and vendors to install, maintain and support FOSS in their organizations.The Development ProcessDespite the many differences from proprietary software, it is important to note that FOSS development generally goes through the same stages as a proprietary product.Some key differences are:

  • In open source project development, this process may happen much more organically – starting with a single developer doing a relatively small project, then having the project involve more developers, and attract institutional support as it develops.
  • The pace of open source development is sometimes slower, due to the voluntary nature of many development projects. However, if there is a very large developer community the pace of development can be faster.
  • The quality of open source software can be better than proprietary software, because programmers learn from each other, the additional 'sets of eyeballs' viewing the code tend to catch potential bugs, and there is less commercial deadline pressure to rush the software out the door in an unfinished state. In particular, security vulnerabilities can be brushed under the rug if a limited number of developers are able to look at the source code. However, if the developer community is very small, that can decrease the quality of the code.

LicensesA software license is basically an agreement between the user and the developer on how the software can be acquired, used and shared. Whenever you install software, and click on the 'I Agree' button, you are accepting a EULA (or End User License Agreement). The most popular open source license is called the GNU Public License (or GPL). The GPL stipulates not only that the source code needs to be available, but also that the program can be modified and re-distributed, as long as that re-distributed program is also governed by the GPL.By contrast, most proprietary or commercial licenses explicitly limit the number of allowed users and prohibit modifications to the software. Unlike proprietary or commercial software, one of the hallmarks of FOSS is that there are no unit or per-seat licenses - you can install the software on as many machines as you want, with no added licensing cost. You don't have to track licenses, worry about whether you are running 12 copies of a software package you have 10 licenses for, and as your organization grows, you don't have to budget for new licenses to add new staff to software you rely on. FOSS enables nonprofits to avoid resource-scarce thinking due to license constraints; in some cases, organizations get around proprietary licensing limitations by asking users to share accounts and passwords, compromising the security and often the usefulness of the software, and making it very difficult to address misuse when it does arise.How is the development of FOSS supported?Because the development of free and open source software is not funded directly by license fees, the ways in which development happens is quite varied. It has never been true that all FOSS projects depend completely on volunteer labor, although it is true that the majority of projects have volunteer developers somewhere along the way. Some FOSS projects are entirely supported by the work of volunteers, and others are entirely supported by for-profit companies, and projects exist in the entire spectrum in between.It is quite common for commercial companies, universities, and nonprofit groups to provide resources, usually in the form of developer time, to FOSS projects that they can use internally. The range of people involved can be broad, from volunteers who report bugs and write documentation, to professional QA staff that might perform end-user testing. Almost all developer communities are open to providing user support (more on support in the Administration and Support section below).The Apache project, which produces the most widely used program for powering web sites, formed a nonprofit foundation to raise funds for future development of their project in 1999. Since then, a number of projects have followed suit, including Mozilla, which develops email clients and web browsing software, and Joomla (a FOSS content management system or CMS).Open source projects have also spawned for-profit companies, whose primary goal is to develop and support the open source software project. Examples of these include MySQL (a popular database program), Zope (a tool for building interactive web-based applications), as well as many companies that package and support the Linux operating system, such as RedHat (more on Linux distributions in the appendix) and Canonical (responsible for the Ubuntu Linux distribution). In these examples the development work done by a mix of volunteers and the employees of these companies. Very often these companies gain revenue by providing fee-for-service technical support for a cost (or selling an 'enterprise' version of their project which includes support.)Another, more recent development is companies who have some proprietary products and some released as free and open source, and others who have free and open source versions of some of their software (an example of this is SugarCRM). This is a hybrid model, where there are some versions, or some specific packages that remain closed source, and have license fees is a way to support software that is free and open source. A further example is FOSS projects that are hosted applications, or 'Software as a Service' - revenues from this model can be used to fund the further development of the source code, that anyone can use.In cases where a number of non-profit organizations could benefit from a particular tool, foundations funding those organizations may devote some resources to developing or documenting the software, or to providing technical assistance that helps groups take advantage of the tools while providing developers with consistent and thoughtful use cases and bug reporting.