We’ve been sharing software since computers were invented. Significant portions of the early IBM operating systems, such as HASP (a print spooler), were developed in the field by users sharing and improving the software. IBM happily accepted that informally shared software, called it “field development,” and then included it in the operating system that helped run the huge mainframes that were the company’s vehicle for making money.
Today, this would not even be considered open source by its strictest definition. Many believe that software can be defined as open source only if it meets the 10 criteria in the “Open Source Definition” that is published and maintained by the Open Source Initiative (OSI; http://www.opensource.org/).
In the academic and scientific community, sharing software has always been a routine part of research and teaching activities. Many books tell the story of Arpanet, and how the Internet was developed and improved by sharing code over the network, with hardly a thought about licensing.
When PCs proliferated, starting in the early 1980s, a thriving exchange of software developed. This evolved into
, software that was available for use at no charge, and
, software that was available to try, but with the proviso that if you used it regularly, you should send in a small licensing fee. Extremely popular programs such as PKZIP, a file compression program created by Phil Katz, grew at amazing rates under this model.
Here we get to the key difference between open source and all other forms of software sharing. Open source is not just about giving away useful tools. It is about sharing source code and keeping it sharable. Remember that in open source, unlike in shareware or freeware, all of the source code used to build an application is shared, not just the executable version that allows you to run the program but not see how it works or be able to improve it. At its core, open source is about a cycle of innovation in which those who have the skills share ideas and build on each other’s work.
The freedom to run the program, for any purpose (freedom 0).
The freedom to study how the program works and adapt it to your needs (freedom 1). Access to the source code is a precondition for this.
The freedom to redistribute copies so that you can help your neighbor (freedom 2).
The freedom to improve the program and release your improvements to the public, so that the whole community benefits (freedom 3). Access to the source code is a precondition for this.
It takes a lot of work to create software, and programmers, while eager to share, are not generally eager to share and then have someone else decide to take their work and sell it. One key innovation that contributed significantly to the growth of open source software was the development of software licenses that prevented corporations from simply taking open source software and embedding it into their products. These
open source licenses
ensure that software developers can control the terms under which others can reuse the software they contribute to open source projects. Richard Stallman published the first open source license, known as the GNU
General Public License (GPL). The GPL is a software license in which Richard specified licensing terms that he believed embodied the spirit of his Four Freedoms. Linux, among many other open source applications, is distributed under the GNU GPL.
The innovation of open source is the creation of the legal structures that were first used to define a way to share software, and to keep contributions to it shareable as well. This avoids what is known as the
Free Rider Problem
, whereby freely shared work is appropriated for commercial gain.
So, the first definition of open source has to do with licensing:
Open source software is distributed under a type of license that promotes sharing by preserving public availability of source code and preventing restrictions on the software’s use and distribution.
Literally hundreds of licenses are now considered to be open source in some form or another. The OSI, as mentioned earlier, approves licenses as “open source” based on conformance to a set of criteria known as the Open Source Definition (OSD). Currently, more than 50 licenses are approved as open source by the OSI.
Copyleft is a license that permits people to freely copy, modify, and redistribute software so long as they do not keep others from also having the right to freely copy, modify, and redistribute the software. Copyleft provisions in a license require that anyone modifying the software can distribute only their modified versions under the terms of the open source license they originally received with the software. You can actually sell Copyleft software (haven’t you seen box sets of Linux at the computer store?), but you must also offer the source for free, either with the product or available for free (or for the cost of copying/shipping) to anyone on request. Not all open source licenses contain Copyleft provisions (from http://c2.com/cgi/wiki?CopyLeft).
The zeal with which some people have taken up the cause of open source has created another definition of open source:
Open source is a social and political movement that promotes the idea that all software should be made available under terms that embody the Four Freedoms initially defined by Richard Stallman.
Richard Stallman is famous for saying that the word
Free Software Foundation is meant to be like free speech, not like free beer. But one can make excellent use of open source without joining this movement and adopting its attitude toward information and private property.
open source itself is an attempt
to remove the emphasis from
free--as in “no
cost"--and also to draw a distinction between Stallman’s orthodoxy and
those who were less strident politically but wanted to promote the
idea of collaborative development with guaranteed access to source
code. The term was coined in January 1998 by Christine Peterson, then
president of the Foresight Institute in Santa Clara, California, in
the wake of Netscape’s announcement that it would publish the source
code of its browser. Eric Raymond’s essay, “The Cathedral and the
Bazaar,” which later became a book (see upcoming The Cathedral and the Bazaar), about the power of collaborative, community-based development, was mentioned by Netscape as having influenced its decision.
For the user of open source in the enterprise, it is important to understand how open source evolves, sometimes in a lurching manner, through a collaborative process that is long on communication and short on planning.
As the number of open source projects has grown, and higher-quality software projects have emerged and have had a significant impact on the market, engineers have noticed the benefits of the loosely structured way in which open source software is created. This leads to the third definition of open source:
Open source is a community-based, iterative, incremental, and evolutionary software development methodology that emphasizes experimentation and experience over planning and formal design.
As we will discuss later in this chapter, little centralized planning governs the development of open source software, yet the result is frequently profoundly better than approaches that emphasize up-front design. In this sense, open source can be thought of as evidence in favor of some of the principles behind so-called “Agile” development methodologies such as eXtreme Programming, which emphasizes rapid iterations. For the purposes of this book, understanding the nature of how open source development takes place is key to making effective use of open source software.
Companies such as VA Software and CollabNet have sprung up to provide this open source development methodology to enterprises, packaged as a set of services.
The final definition of open source is one that arrived only after open source became a successful way of forming communities and creating a safe environment for cooperation:
Open source is a collaboration and marketing technique that can bring people and organizations together.
The Python-based Zope application server, which was initially commercial software but found more success as an open source project, is one example of this trend. MySQL, a popular database program, is marketed as open source and as commercial software simultaneously. IBM’s Eclipse project is perhaps the most prominent example of this aspect of open source. After pouring more than $40 million into the development of the Eclipse framework for creating software development tools, IBM decided to convert the project to open source. This meant that anyone could copy the source code it had cost IBM so many millions of dollars to create. Why would IBM do such a thing?
Here is one analysis that explains IBM’s behavior: IBM needs a development environment to support its Java?-based development platform. That’s why the Eclipse project was started in the first place. But IBM realized that it was never going to make any money by selling development tools. IBM also saw that it would benefit greatly if other companies used its development tools and joined the development of Eclipse. There were two reasons for this. First, the more companies that signed on, the more credibility Eclipse would have. Second, having outside companies work on improving Eclipse would lower the cost of development. Finally, making Eclipse open source had a devastating effect on everyone else—including IBM’s competitors—who was trying to sell the same tools.
IBM explains the decision as an attempt to build trust in the Eclipse project among vendors, partners, and users, improve code quality, and encourage innovation. (Visit http://www.ibm.com/developerworks/linux/library/l-erick.html for details.)
As it turns out, releasing Eclipse as an open source project achieved all the goals mentioned earlier. The Eclipse Foundation (http://www.eclipse.org/) now governs Eclipse development, many companies have joined the project to help with development, and the platform is rapidly becoming one of the most popular integrated development environments, excelling not only at Java (which it was originally created for) but also across a diverse range of languages—an awesome example of the power of open source collaboration at work.
These definitions help describe the context in which open source exists. Now, let’s examine the way in which open source projects get started and how they grow.