The History of the GPL
The GPL (The GNU General
Public License), created by Richard
Stallman, serves as the de facto constitution for the Free Software
movement. It covers the majority of Free Software/Open Source software
and has become the legal and philosophical cornerstone of the Free Software
community. Because of its fundamental nature, it is useful to document
the historical evolution of the GPL.
First, the GPL comes from the philosophy of Richard
Stallman and the GNU Project. The
general history of GNU is covered here.
In this page we will be focusing on the specific events in the creation
of the GPL.
In the early years (1984 to 1988), the GNU Project did not have a single
license to cover all its software. What led Stallman to the creation
of this copyleft license was his experience with James
Gosling, creator of NeWs and the Java
programming language, and UniPress,
over Emacs. While Stallman created the first Emacs in 1975, Gosling wrote
the first C-based Emacs (Gosling Emacs) running on Unix in 1982. Gosling
initally allowed free distribution of the Gosling Emacs source code, which
Stallman used in early 1985 in the first version (15.34) of GNU
Emacs. Gosling later sold rights to Gosling Emacs to UniPress,
and Gosling Emacs became UniPress
Emacs. UniPress threatened Stallman to stop distributing
the Gosling source code, and Stallman was forced to comply. He later replace
these parts with his own code. (Emacs version 16.56). (See the Emacs
Timeline) To prevent
free code from being proprietarized in this manner in the future, Stallman
invented the GPL. Detailed description of this event can be found in Stallman's
1986 speech at the Royal Institute of Technology, Sweden:
"While I was thinking about what to do about these
problems and wondering whether I should try to fix them or write entirely
new compiler, in a roundabout fashion I began working on GNU Emacs. GNU
Emacs is the main distributed portion of the GNU system. It's an extensible
text editor a lot like the original emacs which I developed ten years ago,
except that this one uses actual LISP as its extension language. The editor
itself is implemented in C, as is the LISP interpreter, so the LISP interpreter
is completely portable, and you don't need a LISP system external to the
editor. The editor contains its own LISP system, and all of the editing
commands are written in LISP so that they can provide you with examples
to look at for how to write your own editing commands, and things to start
with, so you can change them into the editing commands that you really
want.
In the summer of that year, about two years ago now,
a friend of mine told me that because of his work in early development
of Gosling Emacs, he had permission from Gosling in a message he had been
sent to distribute his version of that. Gosling originally had set up his
Emacs and distributed it free and gotten many people to help develop it,
under the expectation based on Gosling's own words in his own manual that
he was going to follow the same spirit that I started with the original
Emacs. Then he stabbed everyone in the back by putting copyrights on it,
making people promise not to redistribute it and then selling it to a software-house.
My later dealings with him personally showed that he was every bit as cowardly
and despicable as you would expect from that history.
But in any case, my friend gave me this program, and
my intention was to change the editing commands at the top level to make
them compatible with the original Emacs that I was used to. And to make
them handle all the combinations of numerical arguments and so on that
one might expect that they would handle and have all the features that
I wanted. But after a little bit of this, I discovered that the extension
language of that editor, which is called MOCKLISP, was not sufficient for
the task. I found that that I had to replace it immediately in order to
do what I was planning to do. Before I had had the idea of someday perhaps
replacing MOCKLISP with real LISP, but what I found out was that it had
do be done first. Now, the reason that MOCKLISP is called MOCK, is that
it has no kind of structure datatype: it does not have LISP lists; it does
not have any kind of array. It also does not have LISP symbols, which are
objects with names: for any particular name, there is only one object,
so that you can type in the name and you always get the same object back.
And this tremendously hampers the writing of many kinds of programs, you
have to do things by complicated string-manipulation that don't really
go that way.
So I wrote a LISP interpreter and put it in in place
of MOCKLISP and in the process I found that I had to rewrite many of the
editor's internal data structures because I wanted them to be LISP objects.
I wanted the interface between the LISP and the editor to be clean, which
means that objects such as editor buffers, sub-processes, windows and buffer-positions,
all have to be LISP objects, so that the editor primitives that work on
them are actually callable as LISP functions with LISP data. This meant
that I had to redesign the data formats of all those objects and rewrite
all the functions that worked on them, and the result was that after about
six months I had rewritten just about everything in the editor.
In addition, because it is so hard to write things
in MOCKLISP, all the things that had been written in MOCKLISP were very
unclean and by rewriting them to take advantage of the power of real LISP,
I could make them much more powerful and much simpler and much faster.
So I did that, and the result was that when I started distributing this
program only a small fraction remained from what I had received.
At this point, the company that Gosling thinks he sold
the program to challenged my friend's right to distribute it, and the message
was on backup tapes, so he couldn't find it. And Gosling denied having
given him permission. And then a strange thing happened. He was negotiating
with this company, and it seemed that the company mainly was concerned
with not having anything distributed that resembled what they were distributing.
See, he was still distributing, and the company where he worked, which
is Megatest, was still distributing the same thing he had given me, which
really was an old version of Gosling Emacs with his changes, and so he
was going to make an agreement with them where he would stop distributing
that, and would switch to using GNU Emacs, and they would then acknowledge
that he really had the permission after all, and then supposedly everyone
would be happy. And this company was talking to me about wanting to distribute
GNU Emacs, free of course, but also sell various sorts of supporting assistance,
and they wanted to hire me to help do the work. So it's sort of strange
that they then changed their mind and refused to sign that agreement, and
put up a message on the network saying that I wasn't allowed to distribute
the program. They didn't actually say that they would do anything, they
just said that it wasn't clear whether they might ever someday do something.
And this was enough to scare people so that no one would use it any more,
which is a sad thing.
(Sometimes I think that perhaps one of the best things
I could do with my life is: find a gigantic pile of proprietary software
that was a trade secret, and start handing out copies on a street corner
so it wouldn't be a trade secret any more, and perhaps that would be a
much more efficient way for me to give people new free software than actually
writing it myself; but everyone is too cowardly to even take it.)
So I was forced to rewrite all the rest that remained,
and I did that, it took me about a week and a half. So they won a tremendous
victory. And I certainly wouldn't ever cooperate with them in any fashion
after that. "
The first version of the copyleft license for Emacs seemed to be called
the Emacs General Public License. Other
similar licenses, with references to particular packages, also existed,
such as the Nethack General Public License.
The name GNU General Public License
first appeared in the June
1988 issue of the GNU Bulletin:
"The copyleft used by the GNU project is made from
a combination of a copyright notice and the GNU General Public License.
The copyright notice is the usual kind. The General Public License is a
copying license which basically says that you have the freedoms we want
you to have and that you can't take these freedoms away from anyone else.
(The actual document consists of several pages of rather complicated legalbol
that our lawyer said we needed.) A copy of the complete license is included
in all GNU source code distributions and many manuals, and we will send
you a printed copy on request. "
The January 1989
issue of the GNU Bulletin described the changes to make the GPL
appliable to any applications, without references to specific package names:
"The General Public License as a Subroutine
We are about to make a sweeping, revolutionary change
in the General Public License. The terms for copying will be essentially
unchanged, but the architecture of the legalbol framework used to embody
them will make a quantum leap.
In the past, each copylefted program had to have its
own copy of the General Public License contained in it. Often it was necessary
to modify the license to mention the name of the program it applied to.
Other people who wanted to copyleft programs had to modify the text even
more, to replace our name with theirs.
To make it easier to copyleft programs, we have been
improving on the legalbol architecture of the General Public License to
produce a new version that serves as a general-purpose subroutine: it can
apply to any program without modification, no matter who is publishing
it. All that's needed is a brief notice in the program itself, to say that
the General Public License applies. Directions on doing this accompany
the General Public License, so you can easily copyleft your programs.
We've also taken the opportunity to make it explicit
that any subsequent changes in future versions the General Public License
cannot take away the rights you were previously given, if you have a program
that you received under an earlier version.
The new version will appear soon; new GNU programs
and new versions of existing GNU software will refer to it to specify their
copying conditions. "
The result was the GNU
General Public License, version 1.
The GPL may be too strict for libraries. The June
1990 issue of the GNU Bulletin mentioned possible new license
terms for GNU libraries. The January
1991 issue also described the upcoming library license and the GPL
version 2, which was claficiations of version 1:
"New library license We should by now have finished
a new alternative General Public License for certain GNU libraries. This
license permits linking the libraries into proprietary executables under
certain conditions. The new library license actually represents a strategic
retreat. We would prefer to insist as much as possible that programs based
on GNU software must themselves be free. However, in the case of libraries,
we found that insisting they be used only in free software tended to discourage
use of the libraries, rather than encourage free applications. So, while
we hope the new library license will help promote the development of free
libraries, we have to regret that it was necessary. We will also be releasing
a version 2 of the ordinary GPL. There are no real changes in its policies,
but we hope to clarify points that have led to misunderstanding and sometimes
unnecessary worry. "
The GNU General Public
License, version 2, and the GNU
Library General Public License, version 2, were released in June 1991.
GPL version 2 is the current version. The Library General Public
License (LGPL) was renamed in a minor update to the
GNU Lesser General Public License, version 2.1 in early 1999.
The GPL has become a powerful force in the information age. A
hack on the copyright system, it turns the concept of copyright upside down,
creates a whole community cooperating around the world and enables the
development of software by the people, of the people and for the people.
Many new licenses were modeled after or influcenced by the GPL.
The recent attacks on the GPL by Bill Gates and Microsoft demonstrate how
far the GPL's influcences have come, but we may not have seen the full
impact of the GPL yet.
(A good question for Microsoft: how come it takes ten years for Microsoft
to sound the "alarm" on the GPL?)
page created by Li-Cheng (Andy) Tai, [email protected],
July 4, 2001