As most people know by now, the Linux operating system has been developed under the philosophy of Open Source software originally pioneered by the Free Software Foundation as “free software”. Nevertheless, many people don’t truly appreciate just what Open Source really is. In this blog post, I’ll offer my perceptions.
Quite simply, Open Source is based on the notion that software should be freely available: to use, to modify, to copy. The idea has been around for some twenty years in the technical culture that built the Internet and the World Wide Web and in recent years has spread to the commercial world.
There are a number of misconceptions about the nature of Open Source software. Perhaps the best way to explain what it is, is to start by talking about what it isn’t.
- Open Source is not shareware. A precondition for the use of shareware is that you pay the copyright holder a fee. Open source code is freely available and there is no obligation to pay for it.
- Open Source is not Public Domain. Public domain code, by definition, is not copyrighted. Open Source code is copyrighted by its author who has released it under the terms of an Open Source software license. The copyright owner thus gives you the right to use the code provided you adhere to the terms of the license.
- Open Source is not necessarily free of charge. Having said that there’s no obligation to pay for Open Source software doesn’t preclude you from charging a fee to package and distribute it. A number of companies are in the specific business of selling packaged “distributions” of Linux.
Why would you pay someone for something you can get for free? Presumably because everything is in one place and you can get some support from the vendor. Of course the quality of support greatly depends on the vendor.
So “free” refers to freedom to use the code and not necessarily zero cost. As someone said a number of years ago, “Think ‘free speech’, not ‘free beer’”.
Open Source code is:
- Subject to the terms of an Open Source license, in many cases the GNU Public License (see below).
- Subject to critical peer review. As an Open Source programmer, your code is out there for everyone to see and the Open Source community tends to be a very critical group. Open Source code is subject to extensive testing and peer review. It’s a Darwinian process in which only the best code survives. “Best” of course is a subjective term. It may be the best technical solution but it may also be completely unreadable.
- Highly subversive. The Open Source movement subverts the dominant paradigm, which says that intellectual property such as software must be jealously guarded so you can make a lot of money off of it. In contrast, the Open Source philosophy is that software should be freely available to everyone for the maximum benefit of society. Richard Stallman, founder of the Free Software Foundation, is particularly vocal in advocating that software should not have owners (see Appendix C).
In the early years of the Open Source movement, Microsoft and other proprietary software vendors saw it as a serious threat to their business model. Microsoft representatives went so far as to characterize Open Source as “un-American”. A Microsoft executive publicly stated in 2001 that “open source is an intellectual property destroyer. I can’t imagine something that could be worse than this for the software business and the intellectual-property business.”
In recent years however, leading software vendors, including Microsoft, have embraced the Open Source movement. Many even give their programmers and engineers company time to contribute to the Open Source community. And it’s not just charity, it’s good business!
So what is an Open Source license? Most End User License Agreements (EULA) for software are specifically designed to restrict what you are allowed to do with the software covered by the license. Typical restrictions prevent you from making copies or otherwise redistributing it. You are often admonished not to attempt to “reverse-engineer” the software.
By contrast, an Open Source license is intended to guarantee your rights to use, modify and copy the subject software as much as you’d like. Along with the rights comes an obligation. If you modify and subsequently distribute software covered by an Open Source license, you are obligated to make available the modified source code under the same terms. The changes become a “derivative work” which is also subject to the terms of the license. This allows other users to understand the software better and to make further changes if they wish.
Arguably the best-known, and most widely used, Open Source license is the GNU General Public License (GPL) first released by the Free Software Foundation (FSF) in 1989. The Linux kernel is licensed under the GPL. But the GPL has a problem that makes it unworkable in many commercial situations. Software that does nothing more than link to a library released under the GPL is considered a derivative work and is therefore subject to the terms of the GPL and must be made available in source code form. Software vendors who wish to maintain their applications as proprietary have a problem with that.
To get around this, and thus promote the development of Open Source libraries, the Free Software Foundation came up with the “Library GPL”. The distinction is that a program linked to a library covered by the LGPL is not considered a derivative work and so there’s no requirement to distribute the source, although you must still make available the source to the library itself.
Subsequently, the LGPL became known as the “Lesser GPL” because it offers less freedom to the user. So while the LGPL makes it possible to develop proprietary products using Open Source software, the FSF encourages developers to place their libraries under the GPL in the interest of maximizing openness.
At the other end of the scale is the Berkeley Software Distribution (BSD) license, which predates the GPL by some 12 years. It “suggests”, but does not require, that source code modifications be returned to the developer community and it specifically allows derived products to use other licenses, including proprietary ones.
Other licenses—and there are quite a few—fall somewhere between these two poles. The Mozilla Public License (MPL) for example, developed in 1998 when Netscape made its browser open-source, contains more requirements for derivative works than the BSD license, but fewer than the GPL or LGPL. The Eclipse Public License (EPL) specifically allows “plug-ins” to remain proprietary, but still requires that modifications to Eclipse itself be Open Source. The Open Source Initiative (OSI), a non-profit group that certifies licenses meeting its definition of Open Source, currently lists 79 certified licenses on its website.
You may tempted to think that the GPL is just an academic exercise. Nobody takes it seriously, right? Wrong! There are people, the “GPL police” if you will, some of whom have way too much time on their hands, and they take the GPL very seriously. They will “out” anyone who doesn’t play by the rules and there are examples of vendors who have been taken to court as a result.
Bottom line; if you’re concerned about keeping your code proprietary, be very careful about where your models come from. Don’t blindly copy large chunks of code that is identified as GPL Use the code as a model and write your own. If your product is going to incorporate Open Source code, you may want to consult an attorney who specializes in intellectual property law related to Open Source.
Well, this has been a brief personal tour through the world of Open Source software. Not surprisingly, there are a lot of other resources out there on the web. Just google “open source software”.
This article by Doug Abbott is on Open Source Software.