Free Software programmers often cooperate to produce something greater than they could create alone. Our software licenses define and control the ways in which we can collaborate. That's one of the reasons that licenses are so important to the free software community. In this article, I'll present an overview of free software licensing and discuss some of the features of the various licenses as well as the differences between them. This article is an overview; an exhaustive analysis of free software licenses would require an entire book.
Software licenses exist because the government grants you, the author,the "copyright", or the right to control how your work is copied. Software you write is automatically copyrighted, with the default license being "All Rights Reserved". That's a legal way of saying no copying allowed, this means you! An author can sell his or her copyright, or a subset of rights under that copyright, and this is the main way that literary and software authors earn an income. An author's copyright restricts others from copying a program, but not from doing other things with it. For example, a program can be used for any purpose. Users can, however, give up other rights voluntarily when they agree to comply with a software license.
One common form of commercial license is the "tear-open" license. It's called that because some versions are printed on the outside of an envelope, and when you tear open the envelope, that is taken as your voluntary agreement to abide by the terms of the license. More recently, licenses are displayed during the installation of a program, and the user clicks an "I Agree" button to accept the license. The program won't install unless you agree with the license. Thus, most users have little choice but to agree with any license that comes with their commercial software.
The essence of Free Software is that you have many more rights than are granted by the average commercial software license. The generally-accepted list of rights necessary for a program to be called Free Software or Open Source is the Open Source Definition (the OSD), originally called the Debian Free Software Guidelines (DFSG). The complete text of the OSD is reprinted on pp. 78 and 79.
The terms Open Source and Free Software were intended to mean the same thing -- Open Source was supposed to be simply a marketing name for Free Software. We coined the name Open Source to reduce the confusion stemming from the dual meaning of Free in the English language: we mean liberty, but the more common English usage refers to price. However, the Open Source Initiative, the organization behind Open Source,has not been universally perceived as an asset to the Free Software movement. Thus many developers still prefer to call it Free Software, eschewing the Open Source label.
Much Free Software created in the '70s and early '80s was public domain, which is the simplest way of making a program Open Source. Public domain isn't really a license. When an author places a program in the public domain, he surrenders his copyright and gives the general public unlimited rights regarding his work. People can do anything they want with a public-domain program, they can even erase the real author's name and say that they wrote the program. Most software authors want to have just a little more control than that over their creations, and thus they resort to software licenses.
There are a number of software licenses that have already been deemed compliant with the Open Source Definition. These include the X License (which was originally applied to the X Window System when it was developed at MIT), and its derivatives the BSD (Berkeley Software Distribution -- the license applied to Berkeley UNIX) and Apache licenses, the GPL (General Public License) and LGPL (Library GPL) of the Free Software Foundation, the Artistic License originally produced for Perl, the NPL and MPL licenses (Netscape and Mozilla Public Licenses) written by Netscape, and the QPL (Qt Public License) version 2.0, written by Troll Tech for the Qt toolkit used by the KDE GUI for Linux. The original Qt license was not compliant with the Open Source Definition, but version 2.0 is.
Licenses that do not comply with the Open Source Definition include the Sun Community Source License, (SCSL), IBM's original Jikes license (IBM might have changed their license to be fully Open Source by the time this article is published), the Alladin license used on GhostScript, and the Non Consultant's License, an experimental license that allows a royalty fee for software distribution.
The major inspiration for the Open Source Definition is Richard Stallman's GNU General Public License, also known as the GPL or Copyleft. Stallman elucidated the tenets of the Free Software movement in 1984, when he first announced the GNU Project to create a free version of AT&T's pioneering Unix system. Ten years after Stallman's announcement, Linus Torvalds' contribution of the Linux kernel provided the last component necessary to create an entirely free system.
The GPL guarantees that no one will be able to take away various rights and freedoms that all programmers should be entitled to. For example, it guarantees that the source code for any program released under the GPL must be redistributed with the binaries. You are permitted to make any modifications that you wish to the source code, but you must then make those modifications available under the terms of the GPL. Although you are free to sell your software to others, You are prohibited from charging a royalty for the right to distribute the program or its source code. You also may not restrict any other party from redistributing the code. When added together, the terms of the GPL insure that software released under its protection will always remain free (not necessarily in terms of price, but in terms of freedom of use).
Many consider the GPL itself to be as important a contribution to the Free Software community as any of the software that has been placed under the license. Programmers use the GPL when they want their software, and any variations that others might produce, to always remain free. Examples of important GPL'ed software are the Linux operating system kernel, the GNU C Compiler, and the Emacs text editor.
Some programmers would simply not write Free Software unless they were assured of the protection that comes with a license like the GPL. As one programmer described: "With the GPL, anyone can add new features to my software and I'll be sure to get the changes back if I want them. I don't mind if Red Hat sells my program and makes some money, as long as Red Hat's competitors and I are all free to sell the same software or just give it away. We can circumvent Red Hat if we want to; because of the GPL, they can't corner the market. If there wasn't a level playing field for everyone, if I had to let companies run away with my work without returning anything, I'd not want to write Free Software, because I'd feel like an unpaid employee being taken advantage of by someone else who made all of the money: I'd just feel stupid. The GPL assures me that my contribution will be used fairly, and thus it creates a climate in which I will contribute."
Aside from the GPL, the other widely used Open Source licenses are the X license (with its variants the BSD and Apache licenses). The main difference between the GPL and the X-derived licenses involves their policies on whether or not software can be taken private. A Free Software program is taken private when someone makes useful modifications and then doesn't contribute those modifications back to the public as Free Software. Such programs are called non-Open-Source, Non-Free, and Proprietary. Proprietary programs are usually sold under restrictive licenses that allow no copying, and the source code for them is rarely released. A person who takes Free Software private is taking advantage of the original software author's generosity without being equally generous about his own work. If a developer doesn't want their work taken private, they choose a license like the GPL. If they want to encourage others to take their work private, they use an X license (or BSD or Apache) or some other licenses we'll discuss later.