Free software is defined by the permissions it grants over source code, not by its price. The Free Software Foundation lists them as four freedoms, numbered 0 to 3: to run the program for any purpose, to study how it works and adapt it, to redistribute copies, and to distribute modified versions. For the last three to be genuinely exercisable, one condition is needed: access to the source code. Everything else — the licences, the development models, the disputes over names — follows from a single question: how to make these freedoms non-revocable.

The problem copyleft solves

A permissive licence, like the one used by the BSD systems, grants the four freedoms to whoever receives the code but imposes nothing on whoever redistributes it. Someone who takes a BSD source file may modify it, compile it, and distribute only the binary, under a proprietary licence. The end recipient receives a useful program and none of the four freedoms. The freedoms are there at the first hop and lost at the second.

The GNU General Public License steps in exactly here. Version 2, published in June 1991, places a condition on redistribution: anyone distributing a work derived from GPL-covered code must make it available under the same licence, and must provide or make available the corresponding source. This is the mechanism Richard Stallman called copyleft, a play on copyright. The author does not waive their copyright: they use it to require that the freedoms granted propagate to every subsequent redistributor.

So the four freedoms become inherited. A GPL program may pass through any number of modifications and redistributions, and at each hop the recipient receives the same permissions as the first. A permissive licence guarantees the freedoms as an initial state; the GPL guarantees them as an invariant along the whole distribution chain.

What “derivative work” means

The delicate point of the GPL is the definition of a derivative work, because that is where it is decided how far the copyleft obligation reaches. GPL version 2 ties that obligation to the copyright notion of a derivative work, not to an explicit technical criterion. So a very concrete grey area remains: a proprietary program that links to a GPL library becomes, on the FSF’s reading, a derivative work of it, and the library becomes unusable by non-free software.

For system libraries the effect was undesirable. A basic C library released under the full GPL would have imposed the GPL on any program compiled for that system. For this reason, in 1991, alongside GPL version 2, the FSF publishes the GNU Library General Public License version 2, a licence with weaker copyleft: the library’s own code stays free and any modification to it stays under the same licence, but a program that merely links against the library may carry any licence, including a proprietary one. The distinction between GPL and LGPL is a boundary choice: where to draw the line beyond which copyleft does not propagate.

Two names for the same thing, two different reasons

Since 1998 the same software has been called by two names, free software and open source, and the difference is not technical but one of stated motivation. The Open Source Initiative, founded in February 1998 by Eric Raymond and Bruce Perens, adopted the Open Source Definition, drawn from the Debian Free Software Guidelines written by Perens. The ten criteria of the Open Source Definition and the four freedoms of the FSF classify almost the same set of licences: GPL, LGPL, BSD, and MIT satisfy both lists.

The choice of open source was deliberate, and argued on pragmatic grounds: in English the adjective free swings between “at liberty” and “at no cost”, and the OSI judged the discourse on freedoms a hard sell in front of businesses. It helps to keep two levels apart, classification and argument. On classification the two definitions almost coincide. On argument they diverge: the FSF justifies free software as a matter of permissions owed to the user, the OSI as a more effective development method.

The OSI’s argument about method is stated precisely in Eric Raymond’s essay The Cathedral and the Bazaar, presented at the Linux Kongress in May 1997 and republished as a book in 1999. The central thesis — “given enough eyeballs, all bugs are shallow” — makes the availability of the source the variable that speeds up the discovery of defects. It is a claim about the development process, independent of the question of freedoms, and it explains why many projects adopt free licences for reasons that have nothing to do with copyleft.

What to check before adopting a licence

When reading a licence, the distinction that really matters is one: what happens when you redistribute. Three concrete things to check. First, whether the licence requires you to make the source of your modifications available — this is the difference between copyleft and permissive. Second, whether the obligation covers only the modified file, the whole program, or also software that merely links against it — this is the difference between GPL and LGPL. Third, whether the licence is compatible with the others already in the project, because combining code with different obligations can yield a result that cannot be distributed.

These three questions come before any discussion of community, development model, or terminology. They decide what is permissible to do with the code once integrated, and that is the one part of the choice that cannot be deferred.


Cover image: Richard Stallman, founder of the GNU project, during a talk at Wikimania 2005 — photo by Fafnir~commonswiki, public domain — https://commons.wikimedia.org/wiki/File:Wikimania2005_Richard_Stallman_2005-08-07.JPG