Free Software Versus Open Source Software
Date: Mar 16, 2007
Article is provided courtesy of Prentice Hall Professional.
The Birth of Free Software
In the early 1980s, Richard M. Stallman (RMS) was working at MIT’s artificial intelligence lab. The lab had just bought a new printer from Xerox, and had a few problems with it. With the old printer, they would have been able to fix the driver code themselves, but the new printer didn’t come with source code.
This situation led RMS to found the Free Software Foundation (FSF), an organization dedicated to producing software that granted users four basic freedoms:
- The freedom to run the program, for any purpose.
- The freedom to study how the program works, and adapt it to your needs.
- The freedom to redistribute copies so you can help your neighbor.
- The freedom to improve the program, and release your improvements to the public, so that the whole community benefits.
Let’s examine the Four Freedoms in a bit more detail:
- The freedom to run the program, for any purpose (freedom 0).The first freedom is numbered zero because the idea is that it should be implicit in any software license, Free or otherwise. In fact, however, since the time when the four freedoms were written, freedom 0 has ceased to be the case; some proprietary software comes with a "for noncommercial use only" license, which violates the zeroth freedom.
- The freedom to study how the program works, and adapt it to your needs (freedom 1). The second freedom is perhaps the most commonly discussed. It turns out that most software comes with this freedom. The vast majority of software is written for a specific purpose, either in-house or by contractors, so the customer is always given the ability to adapt it. To a limited extent, this freedom is even granted by some closed-source, proprietary programs that expose scripting and plug-in interfaces, allowing users to extend the functionality. For this freedom to be completely granted, however, a copy of the source code is required. Even with a scripting interface, some adaptations are likely to be impossible.
- The freedom to redistribute copies so you can help your neighbor (freedom 2). The third freedom is the one that most off-the-shelf software violates. This freedom is particularly useful for interoperability. If someone sends you a Microsoft Word document, unless you have a copy of Word you might have problems opening the document. If the sender could send you a copy of Word along with the document, that option would work better. Open Standards help allay this problem, but if you have a particular niche need such standards may not be expressive enough to capture it.
- The freedom to improve the program, and release your improvements to the public, so that the whole community benefits (freedom 3). The final freedom is an extension of freedom 2. If you fix a bug or add a feature to a program, this work can benefit you alone, or all users of the software. If every company that uses a piece of software pays a developer to work on it for a few hours a week, to add the features that the company needs (remember freedom 1?), the total number of improvements in that program can be huge. If everyone releases their changes, the program as a whole can improve a lot faster, since there is less duplication of effort.
The FSF’s GNU project was not the first software to respect these freedoms; 1BSD, released in 1977, had a license that did so. Unlike the GNU project’s General Public License (GPL), however, BSD code could be integrated into non-Free software. The GPL introduced the concept of "copyleft": Code licensed under the GPL, and all derived works of that code, would always respect the Four Freedoms.
Open Source
The definition of Open Source is somewhat longer than that of Free Software. The Open Source Definition states the explicit rules, but these are the 10 basic points:
- The license must allow free or paid-for redistribution.
- The program must include source code.
- Derived works must be redistributable under the same terms.
- The source code may be distributed under a license that doesn’t allow distribution of modified versions only if distribution of patches is allowed.
- The license must not discriminate against any people or groups.
- The license must not discriminate against any activities.
- All rights granted to the original user of the code must also be granted to anyone who receives a copy of the code from that user.
- The license must cover the program in isolation, and may not be dependent on bundling.
- The license may not place restrictions on any software other than that being distributed under the license.
- The license must be technology-neutral.
Now let’s compare these requirements to those of the Four Freedoms:
- The license must allow free or paid-for redistribution. Rule 1 is covered by freedom 2.
- The program must include source code. Rule 2 isn’t stated explicitly by the Four Freedoms, but is a requirement for freedoms 1 and 3.
- Derived works must be redistributable under the same terms. Rule 3 isn’t stated explicitly in the Four Freedoms, but could be thought of as being implied by freedoms 2 and 3. Freedom 2 requires you to be able to redistribute the code, and freedom 3 requires the ability to distribute derived works. Rule 3 doesn’t state explicitly that the distributed copy must also be Free Software, but this stricture can be inferred.
- The source code may be distributed under a license that doesn’t allow distribution of modified versions only if distribution of patches is allowed. Rule 4 is part of freedom 4. You must be able to distribute your improvements. Whether you do this via patches or via a modified copy of the source isn’t stated explicitly.
- The license must not discriminate against any people or groups (rule 5), the license must not discriminate against any activities (rule 6), and the license must be technology-neutral (rule 10) all come under the heading of freedom 0; anyone must be able to use the software, in any way, for any purpose.
- All rights granted to the original user of the code must also be granted to anyone who receives a copy of the code from that user. Rule 7 falls into the same category as rule 3; it’s only implied by the Free Software Foundation’s Four Freedoms.
- The license must cover the program in isolation, and may not be dependent on bundling (rule 8) and the license may not place restrictions on any software other than that being distributed under the license (rule 9) are slightly stricter than the rules of the Free Software definition. Rule 8 could be seen as part of freedoms 2 and 3, but it’s not stated explicitly.
In general, if a program is Free Software, it’s also Open Source, and vice versa.
Differences Between Open Source and Free Software
The biggest difference between the two types of software is their focus. Note that the second requirement for Open Source software is that the source code must be available. The ability to access the source code is a fundamental part of the Open Source concept; in fact, it’s the origin of the name. In contrast, the Free Software movement is interested in source code only as a means to an end.
The defining document for the Open Source movement is Eric S. Raymond’s "The Cathedral and the Bazaar." This text outlines the way in which a distributed development model can be superior to a closed, internal version. The basic idea of Open Source is that the availability of the source code makes for a better product. In contrast, the Free Software movement believes that a program that provides the user with the four freedoms is intrinsically superior to one that doesn’t, irrespective of its other features.
This difference is so fundamental that it’s worth repeating. From the perspective of their related movements,
- Free Software is superior because it’s Free.
- Open Source software will become superior because the development is Open.
Taking this difference into account, it’s worth noting that some projects are not really Open Source, even though they technically meet the definition. Apple’s Darwin, for example, is licensed under terms that meet these conditions, but isn’t developed in an open manner. As such, it only technically counts as Open Source, but is definitely Free Software.
Name Confusion
One of the reasons for the creation of the Open Source "brand" is that the term "Free Software" is easy to misunderstand in English. Unlike some other languages, the word free in English represents two distinct concepts:
- Available at no cost
- Possessing freedom
The second definition is the relevant one in terms of Free Software, but when talking about software it’s easy to expect the first. The term "freeware" is typically used to describe software distributed using the first definition. Much Free Software is also freeware; that is, you can download it and run it without paying anyone. A lot of Free Software isn’t free, however. If you buy some custom software and receive all the rights to it, then it was distributed to you as Free Software, but not freeware.
To attempt to alleviate this confusion, the word open was used instead. Unfortunately, "open" has a lot of meanings in the software world. OpenVMS is one of the oldest examples; it gained the Open designation because it conformed to POSIX, an open standard.
The other part of the name is "source," and this also causes some confusion. By focusing on the availability of the source, rather than the availability of the freedom, programs like Microsoft’s Shared Source Initiative are able to piggyback on the term. To someone unfamiliar with Free Software and Open Source software, it may sound as if Shared Source is Open Source, because you can download and read the source. This isn’t the case, however, since often you’re not allowed to distribute the software or any derived works.
Recently, the term Software Libre has become popular. This Spanish translation of "Free Software" is not as ambiguous, since Spanish distinguishes between "free as in freedom" (libre) and "free as in price" (gratis). Of course, the downside of this term is that it requires a basic knowledge of Spanish for people to understand it.
Favorite License
The Free Software movement is most closely identified with the GNU General Public License (GPL), which was created by the Free Software Foundation. Browsing the list of licenses that the GNU considers Free, you may notice a recurring pattern: Anything that is not the GPL has next to it a suggestion that you should use the GPL instead.
The rationale for this practice is simple: The GPL is a tool for pushing the Free Software movement’s agenda. It protects the Four Freedoms for the end user, and prevents anyone from using code licensed using the GPL in code that doesn’t practice the Four Freedoms. To a true Free Software supporter, code that restricts the Four Freedoms is intrinsically valueless, so the fact that you can’t use GPL’ed code in that software is irrelevant.
The Open Source movement is less fussy. Eric S. Raymond, one of the founders of the Open Source movement, famously said in 2005 that the GPL was obsolete. His reasoning was that anyone who takes Open Source code and produces a closed fork will harm himself, since his new version will wind up being inferior to the open version. But one project in particular shows that this situation isn’t always so clear-cut.
In 2002, Apple forked the KHTML engine used by KDE to render HTML. Apple’s team spent a year working on KHTML internally and then released all of their changes at once. After that, they continued working in the same fashion for a while; a new release would periodically include a huge blob of changes for the KHTML team to integrate. Since Apple was devoting far more programmer time to its fork, WebKit, than the KHTML team could manage, it became very difficult for KHTML to keep up. This problem was worsened by the long gaps between patches, since internal interfaces in KHTML were likely to have changed between the patches. This example seems to counter Eric Raymond’s argument about the GPL; if KHTML had been BSD-licensed, for example, Apple could have kept its changes private, and produced a better product than the open version.
In 2005, however, things changed. Apple opened its WebKit CVS repository to the public. Since then, Apple has accepted a few patches from the community, but gained a significant bonus when Nokia decided to step in. Nokia was interested in a web browser for small-footprint devices, with the idea being to stop paying license fees to Opera for every device that Nokia sold. Having a second company working on the product is likely to benefit both Apple and Nokia.
This example shows that a closed fork of a project can be better than the original if a company is willing to invest more money than everyone else does. On the other hand, if they invest the same amount of money in improving the open version, they’re likely to get an even better result. For this reason, the Open Source movement is less enthusiastic about the GPL, and much more willing to use other licenses.
Conclusion
Overall, the two ideas are remarkably similar. The branding is slightly different, as is the focus. Free Software advocates believe that freedom equates to value, while Open Source advocates believe that freedom leads to value. Both, however, agree that software freedom is very important.