The most basic definition of open source software is software for which the source code is distributed along with the executable program, and which includes a license allowing anyone to modify and redistribute the software. Source code is the actual instructions which programmers write to create a piece of software, the "recipe" for the program. Once a program has been "compiled" into a form which can be installed and run on a computer, its source code is irretrievable. It is practically impossible to make changes to a program without having a copy of its source code. If a program's license includes the right to modify the program, this right is meaningless unless the source code is readily available.
Actual licenses for OSS vary between different companies and development projects, but they have certain characteristics in common. The Open Source Initiative, a group of developers who disseminate information on the benefits of open source, has posted on its web site a "meta-definition" of basic conditions which they feel should be included in an OSS license.
Any software which is distributed under a license which conforms to these requirements is open source software, according to the Open Source Initiative.
Proprietary software, which makes up the majority of the software we use on a daily basis, is distributed under much different conditions. A proprietary license prohibits modification, copying, or redistribution without the company's permission. It ensures that only one entity -- the company or individual that created the software -- has the right to make changes or even see the software's internal structure.
In addition to its legal definition, another distinction between OSS and proprietary software is the way in which it is developed. Proprietary software is created by a relatively small group of developers within a particular company, often working under deadline pressure. They complete a program and then try to remove as many flaws (software errors or "bugs," and security "holes") as possible before the software goes to market. Any flaws which remain after shipping time become the consumerØs problem, leading to lost work and frustration. Purchasers of proprietary software become involuntary testers. What's more, if users find a flaw, even if they know how to solve it, the software license prohibits them from making the fix themselves.
Open source software, in contrast, is often developed by loosely organized communities of programming enthusiasts, collaborating via the Internet. Anyone with an interest and some requisite degree of ability is welcome to contribute sections of the program or to look for errors in existing sections. Because no one is excluded from the development process, potentially hundreds of people can contribute to a project, providing a diverse group of talents and techniques. If a particular company has a financial interest in the success of an open-source project (through strengthening its brand name, increasing demand for related products, or through sales of technical support), they will often hire programmers to work on the project. Other contributors (and for some projects, all contributors) may be individuals working in their spare time, out of interest rather than for compensation.
Open source enthusiast Eric Raymond describes a successful OSS development project in his essay "The Cathedral and the Bazaar." Good OSS projects, he says, reuse as much code from other projects as possible to avoid duplicated work. They rely heavily on feedback and suggestions from users of the software, operating under the principle of "release early, release often, and listen to your customers." This intense peer review process, shared among a potentially large group of developers and testers, finds and eliminates errors in software faster than any proprietary effort could. In Raymond's words, "Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone. Or, less formally, 'Given enough eyeballs, all bugs are shallow.'"
Open source software is closely connected to open communications standards (or protocols), such as the Internet standards, which allow many types of computer equipment to communicate over networks. Both are developed through widespread informal collaboration. Any communications protocols used in open source software are inherently open, since an implementation of the protocol is revealed in the open source code. The existence of an open source implementation of a communications protocol ensures the openness of the protocol. Conversely, proprietary software allows for proprietary protocols, since details of the protocol can be hidden in the secret source code. The Apache project, makers of an open source web server which serves over half of all World Wide Web pages, explains this relationship well:
To the extent that the protocols of the World Wide Web remain "unowned" by a single company, the Web will remain a level playing field for companies large and small. Thus, "ownership" of the protocol must be prevented, and the existence of a robust reference implementation of the protocol [in the form of working software], available absolutely for free to all companies, is a tremendously good thing.
Though anyone can contribute to them, open source projects often have some form of central authority which collects and combines the changes which others make. These authorities, whether an individual, a corporation, or a nonprofit, work to maintain compatibility and conformance to standards in balance with improvements from the community of developers. This keeps open source software compatible with the Internet and other important standards, and prevents "fracturing," the divergence of several concurrent versions of the same software to the point of incompatibility. An example of this sort of informal coordination can be seen in the Linux operating system: though a large group of developers contribute to new versions, Linus Torvalds, Linux's original creator, has final say over what code is included. Similarly, the Apache web server is overseen by the Apache Group, a self-selected group of programmers.
Open source software is economically viable and presents numerous opportunities for profit. This seems counterintuitive, since the availability of source code allows the user to obtain a piece of software at no cost. But many companies have already realized substantial profit from their OSS efforts. Red Hat Software has become a fast-growing and profitable company selling boxed versions of the Linux operating system, complete with manuals, technical support via telephone, and a simple installer program. Red Hat customers, some 7.5 million by the company's estimate, chose to pay about $50 for the added value which the company provides to Linux users -- even though the company itself gives Linux away for free. As the company says:
"Most of the software is available -- at no charge -- to anyone with the time and inclination to download it. But not everyone has that much time...A company's distribution has its own feature set, and some are geared towards specific types of computer systems. Like many other such groups, our approach is to bundle all the necessary bits and pieces into a cohesive distribution."
Both individuals and businesses are willing to pay for this convenience. Additionally, the software itself retains some economic value even if it is given away for free. The Open Source Initiative web site explains this way: "If having a program written is a net economic gain for a customer over not having it written, a programmer will get paid whether or not the program is going to be free after it's done."
An eloquent testimonial to the effectiveness of OSS comes improbably from one of its opponents, the Microsoft Corporation. An internal Microsoft memo now known as the "Halloween Document," which was leaked to Eric Raymond and subsequently posted on the Internet, says the following about OSS:
"The ability of the OSS process to collect and harness the collective IQ of thousands of individuals across the Internet is simply amazing. More importantly, OSS evangelization scales with the size of the Internet much faster than our own evangelization efforts appear to scale."
Next: History of the Idea