Open source is a relatively new term created by an organization spear-headed by Eric S. Raymond called the Open Source Initiative (OSI) to clear some of the ambiguity of the informal term "free software".
The concept of free software, however, is not new. Since the earliest days of UNIX, most software development was done by Universities and research labs that released their source code for other programmers and institutions to use, modify, and improve.
All right, if free software has existed for years, then why the sudden name
change? Well, with commercial software companies distributing shareware and
free binaries (and even limited distribution source), it has become important
to distinguish between software for which there is no monetary exchange, and
software that is truly free: open source.
To this end, the OSI has published a standard, called the Open Source Definition, that licenses must meet if they are to be OSI Certified and programs licensed under them are to be considered open source. The main criteria include free redistribution, complete access to source code, and the right to create derived works (or patches to the original work).
In this article, we will discuss only those licenses that have been OSI
Certified.
The popularity of open source has caused scores of different licenses to spring up, along with very heated debates regarding which license is more favorable. With the myriad of licenses available to the open source programmer, it is important for him to be knowledgeable about the different nuances of each one.
Basically, licenses can be divided into two classes: 1. Those that
ensure that derivative work remains open source, and 2. Those that allow
derivative works to become proprietary. The differences within the classes
arise in how each license chooses to define derivative work.
The first group of licenses consists of those that ensure all derivative works will remain as open and free as the programmer's original work. This idea of ensuring complete access to a program is considered to be the exact opposite of the traditional copyright (which restricts access), and thus has been dubbed "the copyleft".
The most famous license in this category is the GNU General Public License, or GPL. Written by Richard Stallman, the President of the Free Software Foundation, the GPL has the strictest concept of derivative work out of all the open source licenses. The GPL was written to provide programmers with a means of ensuring that code they write and distribute would remain free.
The meat of the GPL can be found in sections 0 through 3. Section 0 defines the notion of a derivative work: any program containing or based on parts of the original program, including translations to different languages and linking to proprietary object files and libraries. A common source for confusion is program output. Programs such as flex and bison (and gcc) produce human readable source code. If you read Section 0 closely, it is apparent that these outputs are considered derivative works (translations) of the inputs, should the inputs be GPL'ed, and not derivative works of the program that generates them. So to clarify, the outputs of GPL'ed programs are only GPL'ed if the inputs are GPL'ed. Likewise by Section 0, even using a non-GPL'ed translator or compiler program on GPL'ed code produces output code (considered a translation) that is still GPL'ed.
Section 1 simply allows for redistribution of the program and derivative works, while Section 2 describes the proper form for modifying the program, and differentiates between a derived work and the mere aggregation of two independent works (the latter of which is not covered by the GPL). Section 3 states that you may provide executable forms of the program or derivative work only if you provide means for obtaining all the source code needed to build the program (excluding code to libraries and utilities that are shipped with the operating system).
The rationale behind this strict definition for derivative work is to ensure that software that programmers intended to be free remains free. People at the Free Software Foundation grew tired of watching others profit by making their free software proprietary, and no longer distributable. Their priority is that software remain free for all to use and modify. This is also the reason why linking to commercial libraries is forbidden. Programmers wanted to ensure that their software couldn't be crippled and rendered unusable to many by being modified to depend on an expensive commercial library.
The GNU Lesser General Public License, or LGPL, follows the same sentiment as the ordinary GPL, with one exception: it allows linking to proprietary programs. The definition of derivative work is altered, and programs that link to the library are explicitly determined distinct works (and thus exempt from LGPL coverage). An additional proviso not found in the GPL is that derivative works must also be libraries.
It is recommended in the preamble of the LGPL that libraries for which there are no commercial equivalent be GPL'ed, while libraries that are intending to replace a commercial equivalent be LGPL'ed. This is done to promote the idea of open source software. It is the feeling of the members of the FSF and many others that commercial companies always have the choice (and resources) to re-implement the GPL'ed library on their own, should they be that vehemently opposed to releasing an open source product.
The Q Public License, or QPL, was written by Troll Tech for distribution of the free version of their Qt library. In practice, it is almost identical to the GPL. It forbids linking with commercial programs (to encourage purchase of the otherwise identical Qt Professional edition), and modifications must be made available. In spirit, however, it it much different. Troll Tech is the only party allowed to distribute complete modified versions of the Qt source. All others must distribute modifications as patches against an "official" Troll Tech version. This is much different than the mentality of the GPL, where everyone has the freedom to compose a complete derived work, should they choose.
The Mozilla Public
License, or MPL, was written by the Mozilla
organization. At first glance, it is similar to the LGPL, but closer
inspection shows that derivative works only consist of modifications to
existing source files. Proprietary object files may be added to create a larger
work, so long as those object files do not contain any of the original code.
The MPL also grants programmers limited rights to patented material owned by the
licensor for purposes of modifying the source code.
In contrast with the above licenses, which attempt to ensure that derivative works remain free for everyone, licenses in this class are more concerned with getting as many sheer numbers of people to use the product as possible. People who use these licenses tend to believe that software isn't truly free unless you allow people to do whatever they see fit with the software (be it modify it, distribute it, sell it, etc). To this end, they allow almost unconditional redistribution, in source or binary forms, usually with the only proviso being the retention of a copyright notice.
The most famous license of this class is definitely the BSD License. The BSD license allows for redistribution in source or binary with or without modifications, as long as the license is included or displayed along with a copyright notice. The license also forbids using the name of the organization or contributors to endorse the software. Up until July of 1999, the license also required that in all advertisements of derived works, a short blurb be included that states that a product uses code derived from the original program.
The MIT/X license is almost identical to the BSD license, except that it is in paragraph form instead of bulleted form.
IBM also created a public license for their Jikes compiler. The IBM Public License is essentially the same as the BSD and MIT licenses except, much like the MPL, it grants limited rights to IBM patents in order to legally modify the code.
The Artistic License is very similar to the BSD style licenses, except that if you intend on making proprietary modifications, you must rename your modified executables as well as provide the original executables. Libraries linked to an Artistic licensed program are not considered part of the program.
The rationale behind these relatively lose licenses is that free software
should provide users with complete freedom over the software, including the
right to resell the software in any form they chose. People who support this
class of licenses tend to feel that licenses from the other class (most
notably the GPL) actually limit the freedom of users to do what they wish with
the software.
At this point, the average commercial software advocate is becoming very concerned about where the money is going to come from. The Open Source Definition allows people to charge a "reasonable" distribution fee, usually to cover the cost of media and packaging. However, companies involved in the production of open source software have a myriad of revenue possibilities. Documentation and technical support are among the most obvious. Sendmail, Inc. (the makers of sendmail) and Artifex Software (the makers of ghostscript) release old versions of their software as open source. Before being bought by Redhat, Cygnus capitalized on first mover advantage by providing embedded systems companies with an initial port and continual support of the GNU development tools for their architectures. Troll Tech and TransVirtual both follow a strategy of releasing separate identical versions of their libraries under both a commercial and an open source license. Redhat operates under the idea of branding. Their market strategy is to be the name most people associate with Linux. Therefore they most often turn to Redhat to purchase a Linux distribution, and for certification.
But perhaps bigger than all this is the fact that most software written in the world isn't even sold! In many companies, software is just a means to an end. In some cases, it's developed at corporations internally to help them do a particular job. This is how perl got its start. In other cases, companies that aren't in the software business per-se may benefit indirectly from open source software running better. Companies like SGI, Compaq, and Intel are eager to pay programmers to improve open source operating systems on their respective architectures.
So you see, there are plenty of opportunities to pursue monetary gain while
still preserving your karmic alignment.
Open source software can be a wonderful thing. It promotes collaboration, rapid development and bug fixing, and above all, knowledge.
When writing a piece of free software, it is important to consider which license you release it under. Picking the wrong license could lead to disastrous consequences regarding the future use of your software. Choosing GPL-style licenses may limit adoption of your software by commercial software companies, but you ensure that your software will be publicly available for all generations of programmers to peruse. Choosing BSD-style licenses may put your work in danger of becoming part of someone else's property, but they will allow for largest distribution of your program in any form.
Also remember that as long you are the only copyright holder to the code, you may change the licensing scheme at any time, but once other people begin to contribute modifications under a certain license, you are stuck with that license until you obtain every contributor's permission to change it, or you remove their contributions.
Hopefully I have provided you with enough material to make an informative
decision about which license to choose. Now go write some open source software!
-- Mike Perry <mikepery@fscked.org>
This article originally appeared in the September 1999 issue of the
Banks
of the Boneyard, the ACM@UIUC newsletter.
It has since been updated and cross-refrenced for web viewing.