Open source software (OSS) is becoming more prolific, but while many people are using it, I think few understand the motivations and reasons behind it. Most non-developer folk I've come across who use OSS, other than fellow die-hard enthusiasts, just download this "free" software but don't understand why it is free. I've written this article to help those folks who have heard about OSS to understand why developers make their software open source, and why the open source community as a whole is so enthusiastic about it.
On top of this lack of understanding, there are several different terms floating around which reference OSS and they can be confusing. I'll talk about these terms and the differences between them, and then I'll explain more about the OSS movement.
The first term is "open source" itself. This refers to programs whose source code (the instructions that programmers write) is open for anyone and everyone. Distribution of this software should also be unhindered, and the source code should be distributed with the compiled version of the software. This differs from most free programs in that while they are free, their source code is not available. In order to be labelled "open source" however, the software needs to conform to the open source definition. The term, "open source" was created to market this type of software to businesses, and to emphasize the openness.
The other term that is used often is, "free software." This term is actually synonymous with "open source" but the emphasis of this term is on the freedom that the software license gives. The Free Software Foundation, founded by Richard Stallman (the guy who pioneered the movement), as their name implies, prefers the term, "free software." The FSF says that the term, "open source" does not emphasize the freedom aspect.
The last term which is used on occasion is, "libre software." Once again, this term is synonymous with the two above, and is sometimes used with the above term to indicate the "liberty" aspect, "free libre software."
Personally, the term, "free software" irritates me as it very often is confused with "freeware", that is, software which is free but whose source code is unavailable. Users see the word, "free" and think of the software as freeware. They do not understand the freedom aspect. For this reason I specifically use and advocate the term, "open source." It invites non-technical people to ask what it means.
A Very Brief History
In the late 70's and early 80's Richard Stallman encountered the first bits of proprietary software, that is, software whose source code was witheld by the company who wrote the software. This proprietary software prompted him to start the Free Software Foundation, and create the GNU General Public License. Stallman's goal was to write a completely free (as in open source) operating system to replace the proprietary UNIX operating system in use those days. He and a couple of other developers started writing some of the tools of this new operating system, which he called GNU (which stands for GNU's Not UNIX).
In the early 90's Linus Torvalds, a student at the University of Helsinki in Finland, independently wrote a UNIX replacement, so that he could do his homework on his computer at home. It actually started out as a terminal emulator so that he could connect to UNIX on the university's computers, and ended up as the kernel of an operating system. His first release of his kernel was in 1991, which he wanted to call "Freax," but which the friend who uploaded it to his server renamed "Linux".
Since Linus' operating system was just a kernel and didn't have any software to allow the user to interact with it, he compiled some of the GNU tools to make it usable. Later, as more and more people started using his kernel and needed some of the "standard" UNIX tools, more of the tools from the Free Software Foundation's GNU project were used with the Linux kernel to form a complete operating system, and Linux distributions were born.
From there, open source really took off...
The Open Source Community
Most open source projects are not backed by a company, with the result that if anyone needs support for using that application, they need to ask the developers. Most open source projects have a set of mailing lists, where people can e-mail questions and others on the mailing list will try to help answer those questions. However, because most mailing lists require a subscription, many people remain subscribed after they have been helped, and end up helping others with their problems.
These mailing lists often spill over into IRC channels devoted to the projects. It is in IRC that people can chat in realtime with developers and other users of the software. With the combination of the mailing lists and the IRC channels, and occasionally forums too, communities start forming around the projects as friendships start building between the members of these like-minded communities.
As these communities grow they often overlap with other communities when users of different applications spend time in each application's community. This overlapping of communities creates a type of a mega-community of open source software. People become loyal to these communities and these projects due to the friendships forged in them, which culminates in loyalty to the mega-community and open source software in general.
The Open Source Philosophy
But it is not community alone that causes the open source movement. Richard Stallman, as much as he is a developer, is also a philosopher. He established the ideals of open source software, and it is these ideals that draw people into the open source movement. Richard Stallman fights for software freedom. Freedom from being held ransom by one particular software company, freedom to spread the software to your friends and family, freedom to use the software as you please.
In particular, Richard Stallman established four freedoms which the software must grant the user in order to be recognised as open source software. The Free Software Foundation lays out these freedoms in their Free Software Definition.
- The freedom to run the program for any purpose.
- The freedom to study how the program works, and change it so that it works for you.
- The freedom to redistribute copies, so that you can help others with this program.
- The freedom to distribute copies of your modified versions of the program, so that others can benefit from your changes.
The Open Source Definition
As time went on, businesses started getting interested in using this open source software, but were unsure of the licenses that accompanied these software applications. When Netscape wanted to open source their browser, Eric Raymond and Bruce Perens decided to establish a foundation to promote the use of OSS in business, and put together something called the Open Source Definition.
The open source definition is based on the four freedoms laid out by the Free Software Foundation and determines whether or not a software license can be considered an open source license. It is more clearly defined than the four freedoms in order to gain favour with businesses, but outlines the very same concepts. The aim of the open source definition is to create a standard for licenses, so that licenses that guarantee the above freedoms can be truly called open source.
- Free Redistribution The license shall not restrict any party from selling or giving away the software as a component of an aggregate software distribution containing programs from several different sources. The license shall not require a royalty or other fee for such sale.
- Source Code The program must include source code, and must allow distribution in source code as well as compiled form. Where some form of a product is not distributed with source code, there must be a well-publicized means of obtaining the source code for no more than a reasonable reproduction cost preferably, downloading via the Internet without charge. The source code must be the preferred form in which a programmer would modify the program. Deliberately obfuscated source code is not allowed. Intermediate forms such as the output of a preprocessor or translator are not allowed.
- Derived Works The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.
- Integrity of The Author's Source Code The license may restrict source-code from being distributed in modified form only if the license allows the distribution of "patch files" with the source code for the purpose of modifying the program at build time. The license must explicitly permit distribution of software built from modified source code. The license may require derived works to carry a different name or version number from the original software.
- No Discrimination Against Persons or Groups The license must not discriminate against any person or group of persons.
- No Discrimination Against Fields of Endeavor The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.
- Distribution of License The rights attached to the program must apply to all to whom the program is redistributed without the need for execution of an additional license by those parties.
- License Must Not Be Specific to a Product The rights attached to the program must not depend on the program's being part of a particular software distribution. If the program is extracted from that distribution and used or distributed within the terms of the program's license, all parties to whom the program is redistributed should have the same rights as those that are granted in conjunction with the original software distribution.
- License Must Not Restrict Other Software The license must not place restrictions on other software that is distributed along with the licensed software. For example, the license must not insist that all other programs distributed on the same medium must be open-source software.
- License Must Be Technology-Neutral No provision of the license may be predicated on any individual technology or style of interface.
The Open Source Movement
This loyalty to OSS and the understanding of what open source software is about is what makes this a movement. Those involved in OSS often become really passionate about it, even if they are not involved in development. This is often because they have benefitted greatly from using OSS and their gratitude toward the software and the community for the help makes them want to recommend it to others. So people start to advocate open source software over proprietary solutions and often help to install open source software on their friends' and family's computers, propogating open source software and spreading the movement even further.
All of these factors - the history, the community, the philosophy and the definition - lead toward open source software becoming a movement, rather than just a set of free applications.