The GNU Operating System and the Free Software Movement
by Richard Stallman
The First Software-Sharing Community
When I started working at the MIT Artificial
Intelligence
Lab in 1971, I became part of a software-sharing community that had
existed for many years. Sharing of software was not limited to our
particular community; it is as old as computers, just as sharing of
recipes is as old as cooking. But we did it more than most.
The
AI Lab used a time-sharing operating system
called ITS (the Incompatible Timesharing System) that the Lab's staff
hackers[1] had designed and written in assembler language for the
Digital PDP-10, one of the large computers of the era. As a member of
this community, an AI Lab staff system hacker, my job was to improve
this system.
We did not call
our software "free software," because that term did not yet exist, but
that is what it was. Whenever people from another university or a
company wanted to port and use a program, we gladly let them. If you
saw someone using an unfamiliar and interesting program, you could
always ask to see the source code, so that you could read it, change
it, or cannibalize parts of it to make a new program.
The Collapse of the Community
The situation changed drastically in the
early 1980s when Digital discontinued the PDP-10 series. Its
architecture, elegant and powerful in the 60s, could not extend
naturally to the larger address spaces that were becoming feasible in
the 80s. This meant that nearly all of the programs composing ITS were
obsolete.
The AI Lab hacker
community had already collapsed, not long before. In 1981, the spin-off
company Symbolics had hired away nearly all of the hackers from the AI
Lab, and the depopulated community was unable to maintain itself. (The
book Hackers, by Steve Levy, describes these events, and gives a clear
picture of this community in its prime.) When the AI Lab bought a new
PDP-10 in 1982, its administrators decided to use Digital's non-free
timesharing system instead of ITS.
The
modern computers of the era, such as the VAX or the 68020, had their
own operating systems, but none of them were free software: you had to
sign a nondisclosure agreement even to get an executable copy.
This meant that the first step in using a
computer was to promise not to help your neighbor. A cooperating
community was forbidden. The rule made by the owners of proprietary
software was, "If you share with your neighbor, you are a pirate. If
you want any changes, beg us to make them."
The
idea that the proprietary software social
system--the system that says you are not allowed to share or change
software--is antisocial, that it is unethical, that it is simply wrong,
may come as a surprise to some readers. But what else could we say
about a system based on dividing the public and keeping users helpless?
Readers who find the idea surprising may have taken the proprietary
social system as given, or judged it on the terms suggested by
proprietary software businesses. Software publishers have worked long
and hard to convince people that there is only one way to look at the
issue.
When software publishers
talk about "enforcing" their "rights" or "stopping piracy," what they
actually say is secondary. The real message of these statements is in
the unstated assumptions they take for granted; the public is supposed
to accept them uncritically. So let's examine them.
One assumption is that software companies
have an unquestionable natural right to own software and thus have
power over all its users. (If this were a natural right, then no matter
how much harm it does to the public, we could not object.)
Interestingly, the U.S. Constitution and legal tradition reject this
view; copyright is not a natural right, but an artificial
government-imposed monopoly that limits the users' natural right to
copy.
Another unstated
assumption is that the only important thing about software is what jobs
it allows you to do--that we computer users should not care what kind
of society we are allowed to have.
A
third assumption is that we would have no usable software (or would
never have a program to do this or that particular job) if we did not
offer a company power over the users of the program. This assumption
may have seemed plausible, before the free software movement
demonstrated that we can make plenty of useful software without putting
chains on it.
If we decline to
accept these assumptions, and judge these issues based on ordinary
common-sense morality while placing the users first, we arrive at very
different conclusions. Computer users should be free to modify programs
to fit their needs, and free to share software, because helping other
people is the basis of society.
There
is no room here for an extensive statement of the reasoning behind this
conclusion, so I refer you to the web page,
http://www.gnu.org/philosophy/why-free.html.
A
Stark Moral
Choice
With my community gone,
not continuing as before was impossible. Instead, I faced a moral
choice.
The easy choice was to
join the proprietary software world, signing nondisclosure agreements
and promising not to help my fellow hacker. Most likely I would also be
developing software that was released under nondisclosure agreements,
thus adding to the pressure on other people to betray their fellows too.
I could have made money this way, and
perhaps amused myself writing code. But I knew that at the end of my
career, I would look back on years of building walls to divide people,
and feel I had spent my life making the world a worse place.
I
had already experienced being on the
receiving end of a nondisclosure agreement, when someone refused to
give me and the MIT AI Lab the source code for the control program for
our printer. (The lack of certain features in this program made use of
the printer extremely frustrating.) So I could not tell myself that
nondisclosure agreements were innocent. I was very angry when he
refused to share with us; I could not turn around and do the same thing
to everyone else.
Another
choice, straightforward but unpleasant, was to leave the computer
field. That way my skills would not be misused, but they would still be
wasted. I would not be culpable for dividing and restricting computer
users, but it would happen nonetheless.
So
I looked for a way that a programmer could do something for the good. I
asked myself, was there a program or programs that I could write, so as
to make a community possible once again?
The
answer was clear: what was needed first was an operating system. That
is the crucial software for starting to use a computer. With an
operating system, you can do many things; without one, you cannot run
the computer at all. With a free operating system, we could again have
a community of cooperating hackers--and invite anyone to join. And
anyone would be able to use a computer without starting out by
conspiring to deprive his or her friends.
As
an operating system developer, I had the right skills for this job. So
even though I could not take success for granted, I realized that I was
elected to do the job. I chose to make the system compatible with Unix
so that it would be portable, and so that Unix users could easily
switch to it. The name GNU was chosen following a hacker tradition, as
a recursive acronym for "GNU's Not Unix."