Free Software. Freedom and Cooperation.
Don Saklad
dsaklad at gnu.org
Mon Jun 4 23:56:27 EDT 2001
read a transcript
http://www.gnu.org/events/rms-nyu-2001-transcript.txt
Transcript of
Richard M. Stallman's speech,
"Free Software: Freedom and Cooperation"
New York University in New York, New York
on 29 May 2001
URETSKY: I'm Mike Uretsky. I'm over at the Stern
School of Business. I'm also one of the Co-Directors
of the Center for Advanced Technology. And, on behalf
of all of us in the Computer Science Department, I
want to welcome you here. I want to say a few
comments, before I turn it over to -- Ed, who is going
to introduce the speaker.
The role of a University, is a place to foster debate,
and to have interesting discussions. And the role of
a major university is to have particularly interesting
discussions. And this particular presentation, this
seminar falls right into that mold. I find the
discussion of open source particularly interesting.
In a sense, [Laughter]
STALLMAN: I do free software. Open source is a
different movement. [Laughter] [Applause]
URETSKY: When I first started in the field in the
'60's, basically software was free. And we went in
cycles. It became free, and then software
manufacturers, in the need to expand their markets,
pushed it in other directions. A lot of the
developments that took place with the entry of PC
moved in exactly the same kind of a cycle.
There's a very interesting French philosopher --
Pierre Levy -- who talks about movement to this
direction, and who talks about the move into
cyberspace as not only relating to technology, but
also relating to social restructuring, to political
restructuring, through a change in the kinds of
relationships that will improve the well-being of
mankind. And we're hoping that this debate is a
movement in that direction; that this debate is
something that cuts across a lot of the disciplines
that normally act as solace within the University.
We're looking forward to some very interesting
discussions. Ed?
SCHONBERG: I'm Ed Schonberg from the Computer Science
Department at the Courant Institute. Let me welcome
you all to this event. Introducers are usually, and
particularly, a useless aspect of public
presentations, but, in this case, actually, they serve
a useful purpose as Mike easily demonstrated. Because
an introducer for instance, told him, by making
inaccurate comments, can allow him to straighten out
and correct and [Laughter] sharpen considerably the
parameters of the debate.
So, let me make the briefest, possible introduction to
somebody, who doesn't need one. Richard is the
perfect example of somebody who, by acting locally,
started thinking globally from problems concerning the
unavailability of source code for printer drivers at
the AI Lab many years ago. He has developed a
coherent philosophy that has forced all of us to
re-examine our ideas of how software is produced, of
what intellectual property means, and what the
software community actually represents. Let me
welcome, Richard Stallman. [Applause]
STALLMAN: Can someone lend me a watch? [Laughter]
Thank you. So, I'd like to thank Microsoft for
providing me the opportunity to [Laughter] be on this
platform. For the past few weeks, I have felt like an
author whose book was fortuitously banned somewhere.
[Laughter] Except that all the articles about it are
giving the wrong author's name, because Microsoft
describes the GNU GPL as an open source license, and
most of the press coverage followed suit. Most
people, of course just innocently don't realize that
our work has nothing to do with open source; that, in
fact, we did most of it before people even coined the
term "open source".
We are in the Free Software Movement, and I'm going to
speak about what the free software movement is about,
what it means, what we have done, and because this is
partly sponsored by a School of Business, I'll say
some things more than I usually do about how free
software relates to business, and some other areas of
social life.
Now, some of you may not ever write computer programs,
but perhaps you cook. And if you cook, unless you're
really great, you probably use recipes. And, if you
use recipes, you've probably had the experience of
getting a copy of a recipe from a friend who's sharing
it. And you've probably also had the experience --
unless you're a total neophyte -- of changing a
recipe. You know, it says certain things, but you
don't have to do exactly that. You can leave out some
ingredients. Add some mushrooms, 'cause you like
mushrooms. Put in less salt because your doctor said
you should cut down on salt -- whatever. You can even
make bigger changes according to your skill. And if
you've made changes in a recipe, and you cook it for
your friends and they like it, one of your friends
might say "Hey, could I have the recipe?" And then,
what do you do? You could write down your modified
version of the recipe, and make a copy for your
friend. These are the natural things to do with
functionally useful recipes of any kind.
Now a recipe is a lot like a computer program. A
computer program's a lot like a recipe. A series of
steps to be carried out to get some result that you
want. So it's just as natural to do those same things
with computer programs. Hand a copy to your friend.
Make changes in it because the job it was written to
do isn't exactly what you want. It did a great job
for somebody else, but your job is a different job.
And, after you've changed it, that's likely to be
useful for other people. Maybe they have a job to do
that's like the job you do. So, they ask, hey can I
have a copy? Of course, if you're a nice person,
you're going to give a copy. That's the way to be a
decent person.
So imagine what it would be like if recipes were
packaged inside black boxes -- You couldn't see what
ingredients they're using, let alone change them --
And imagine, if you made a copy for a friend, they
would call you a pirate, and try to put you in prison
for years. That world would create tremendous outrage
from all the people who are used to sharing recipes.
But that is exactly what the world of proprietary
software is like. A world in which common decency
towards other people is prohibited or prevented.
Now, why did I notice this? I noticed this because I
had good fortune, in the 1970's, to be part of a
community of programmers who shared software. Now,
this community could trace its ancestry, essentially
back to the beginning of computing. In the 1970's
though, it was a bit rare for there to be a community
where people shared software. And, in fact, this was
sort of an extreme case, because in the lab where I
worked, the entire operating system was software
developed by the people in our community, and we'd
share any of it with anybody. Anybody was welcome to
come and take a look and take away a copy, and do
whatever he wanted to do. There were no copyright
notices on these programs. Cooperation was our way of
life. And we were secure in that way of life. We
didn't fight for it. We didn't have to fight for it.
We just lived that way. And, as far as we knew, we
would just keep on living that way. So there was free
software, but there was no free software movement.
But then, our community was destroyed by a series of
calamities that happened to it. Ultimately it was
wiped out. Ultimately, the PDP-10 computer which we
used for all our work was discontinued. And you know,
our system -- the Incompatible Timesharing System --
was written starting in the '60's, so it was written
in assembler language. That's what you used to write
an operating system in the '60's. So, of course,
assembler language is for one particular computer
architecture; if that gets discontinued, all your work
turns into dust -- it's useless. And that's what
happened to us. The 20 years or so of work of our
community turned into dust.
But before this happened, I had an experience that
prepared me, helped me see what to do, helped prepare
me to see what to do when this happened, because at
certain point, Xerox gave the artificial intelligence
lab, where I worked, a laser printer, and this was a
really handsome gift, because it was the first time
anybody outside Xerox had a laser printer. It was
very fast, printed a page a second, very fine in many
respects, but it was unreliable, because it was really
a high-speed office copier that had been modified into
a printer. And you know, copiers jam, but there's
somebody there to fix them. The printer jammed and
nobody saw. So it stayed jammed for a long time.
Well, we had an idea for how to deal with this problem.
Change it so that whenever the printer gets a jam, the
machine that runs the printer can tell our timesharing
machine, and tell the users who are waiting for
printouts, or something like that, you know, tell
them, go fix the printer. Because if they only knew
it was jammed, of course, if you're waiting for a
printout, and you know that the printer is jammed, you
don't want to sit and wait forever, you're going to go
fix it.
But, at that point, we were completely stymied, because
the software that ran that printer was not free
software -- it had come with the printer, and it was
just a binary. We couldn't have the source code --
Xerox wouldn't let us have the source code. So,
despite our skill as programmers -- after all, we had
written our own timesharing system -- we were
completely helpless to add this feature to the printer
software.
And we just had to suffer with waiting -- it would take
an hour or two to get your printout because the
machine would be jammed most of the time. And only
once in a while -- you'd wait an hour figuring "I know
it's going to be jammed, I'll wait an hour and go
collect my printout," and then you'd see that it had
been jammed the whole time, and in fact, nobody else
had fixed it. So you'd fix it and you'd go wait
another half hour. Then, you'd come back, and you'd
see it jammed again -- before it got to your output.
It would print three minutes and be jammed thirty
minutes. Frustration up the whazzoo... But the thing
that made it worse was knowing that we could have
fixed it, but somebody else, for his own selfishness,
was blocking us, obstructing us from improving the
software. So, of course, we felt some resentment.
And then I heard that somebody at Carnegie Mellon
University had a copy of that software. So I was
visiting there later, so I went to his office and I
said, "Hi, I'm from MIT, could I have a copy of the
printer source code?" And he said "No, I promised not
to give you a copy." [Laughter] I was stunned. I was
so -- I was angry, and I had no idea how I could do
justice to it. All I could think of was to turn
around on my heel, and walk out of his room. Maybe I
slammed the door. [Laughter] And I thought about it
later on, because I realized that I was seeing not
just an isolated jerk, but a social phenomenon that
was important and affected a lot of people.
This was -- for me -- I was lucky, I only got a taste
of it, but other people had to live in this all the
time. So I thought about it at length. See, he had
promised to refuse to cooperate with us -- his
colleagues at MIT. He had betrayed us. But he didn't
just do it to us. Chances are he did it to you too.
And I think, mostly likely, he did it to you
too. [Laughter] And he probably did it to you as well.
He probably did it to most of the people here in this
room -- except a few maybe who weren't born yet in
1980. Because he had promised to refuse to cooperate
with just about the entire population of the Planet
Earth. He had signed a non-disclosure agreement.
Now, this was my first, direct encounter with a
non-disclosure agreement, and it taught me an
important lesson -- a lesson that's important because
most programmers never learn it. You see, this was my
first encounter with a non-disclosure agreement, and I
was the victim. I, and my whole lab, were the
victims. And the lesson it taught me was that
non-disclosure agreements have victims. They're not
innocent. They're not harmless. Most programmers
first encounter a non-disclosure agreement when
they're invited to sign one. And there's always some
temptation -- some goody they're going to get if they
sign. So, they make up excuses. They say, "well,
he's never going to get a copy no matter what, so why
shouldn't I join the conspiracy to deprive him?" They
say "this is the way it's always done. Who am I to go
against it?" They say "if I don't sign this, someone
else will." Various excuses to gag their consciences.
But, when somebody invited me to sign a non-disclosure
agreement, my conscience was already sensitized. It
remembered how angry I had been, when somebody
promised not to help me and my whole lab solve our
problem. And I couldn't turn around and do the exact
same thing to somebody else who had never done me any
harm. You know, if somebody asked me to promise not
to share some useful information with a hated enemy, I
would have said yes. You know? If somebody's done
something bad, he deserves it. But, strangers -- they
haven't done me any harm. How could they deserve that
kind of mistreatment? You can't let yourself start
treating just anybody and everybody badly. Then you
become a predator on society. So I said, thank you
very much for offering me this nice software package.
But I can't accept it in good conscience, on the
conditions you are demanding, so I will do without it.
Thank you so much. And so, I have never knowingly
signed a non-disclosure agreement for generally useful
technical information, such as software.
Now, there are other kinds of information which raise
different ethical issues. For instance, there's
personal information. You know, if you wanted to talk
with me about what was happening between you and your
boyfriend, and you asked me not to tell anybody -- you
know, I could keep -- I could agree to keep that a
secret for you, because that's not generally useful
technical information.
At least, it's probably not generally
useful. [Laughter] There is a small chance -- and it's
a possibility though -- that you might reveal to me
some marvelous new sex technique, [Laughter] and I
would then feel a moral duty [Laughter] to pass it
onto the rest of humanity, so that everyone could get
the benefit of it. So, I'd have to put a proviso in
that promise -- you know. If it's just details about
who wants this, and who's angry at whom, and things
like that -- soap opera -- that I can keep private for
you, but something that humanity could tremendously
benefit from knowing, I mustn't withhold. You see,
the purpose of science and technology is to develop
useful information for humanity to help people live
their lives better. If we promise to withhold that
information -- if we keep it secret -- then we are
betraying the mission of our field. And this, I
decided I shouldn't do.
But, meanwhile my community had collapsed, and that was
collapsing, and that left me in a bad situation. You
see, the whole Incompatible Timesharing System was
obsolete, because the PDP-10 was obsolete, and so,
there was no way that I could continue working as an
operating system developer the way that I had been
doing it. That depended on being part of the
community using the community software, and improving
it. That no longer was a possibility, and that gave
me a moral dilemma. What was I going to do? Because
the most obvious possibility meant to go against that
decision I had made. The most obvious possibility was
to adapt myself to the change in the world. To accept
that things were different, and that I'd just have to
give up those principles, and start signing
non-disclosure agreements for proprietary operating
systems, and most likely writing proprietary software
as well. But I realized that that way I could have
fun coding, and I could make money -- especially if I
did it, other than at MIT -- but, at the end, I'd have
to look back at my career and say "I've spent my life
building walls to divide people," and I would have
been ashamed of my life.
So I looked for another alternative, and there was an
obvious one. I could leave the software field, and do
something else. Now I had no other special noteworthy
skills, but I'm sure I could have become a
waiter. [Laughter] Not at a fancy restaurant, they
wouldn't hire me, [Laughter] but I could be a waiter
somewhere. And many programmers, they say to me "the
people who hire programmers demand this, this and this
-- If I don't do those things, I'll starve." It's
literally the word they use. Well, you know, as a
waiter, you're not going to starve. [Laughter] So,
really they're in no danger. But -- and this is
important, you see -- because sometimes you can
justify doing something that hurts other people by
saying "otherwise something worse is going to happen
to me." You know, if you were really going to starve,
you'd be justified in writing proprietary
software. [Laughter] If somebody's pointing a gun at
you, then I would say it's forgivable. [Laughter] But,
I had found a way that I could survive without doing
something unethical, so that excuse was not available.
So, I realized though that being a waiter would be no
fun for me, and it would be wasting my skills as an
operating system developer. It would avoid misusing
my skills. Developing proprietary software would be
misusing my skills. Encouraging other people to live
in the world of proprietary software would be misusing
my skills. So it's better to waste them than misuse
them, but it's still not really good.
So for those reasons, I decided to look for some other
alternative. What can an operating system developer
do that would actually improve the situation, make the
world a better place? And I realized that an
operating system developer was exactly what was
needed. The problem, the dilemma, existed for me and
for everyone else because all of the available
operating systems for modern computers were
proprietary. The free operating systems were for old,
obsolete computers, right? So for the modern
computers -- if you wanted to get a modern computer
and use it, you were forced into a proprietary
operating system. So if an operating system developer
wrote another operating system -- and then said,
everybody come and share this, you're welcome to this
-- that would give everybody a way out of the dilemma,
another alternative. So I realized that there was
something I could do that would solve the problem. I
have just the right skills to be able to do it. And
it was the most useful thing I could possibly imagine
that I'd be able to do with my life. And it was a
problem that no one else was trying to solve. It was
just sort of sitting there, getting worse, and nobody
was there but me. So I felt "I'm elected. I have to
work on this. If not me, who?" So, I decided I would
develop a free operating system -- or die trying. Of
old age of course. [Laughter]
So, of course I had to decide what kind of operating
system it should be -- there are some technical design
decisions to be made. I decided to make the system
compatible with UNIX for a number of reasons. First
of all, I had just seen one operating system that I
really loved, become obsolete because it was written
for one particular kind of computer. I didn't want
that to happen again. We needed to have a portable
system. Well, UNIX was a portable system. So if I
followed the design of UNIX, I had a pretty good
chance that I could make a system that would also be
portable and workable. And furthermore, why[[24:44?]]
be compatible with it in the details. The reason is,
users hate incompatible changes. If I had just
designed the system in my favorite way -- which I
would have loved doing, I'm sure -- I would have
produced something that was incompatible. You know,
the details would be different. So, if I wrote the
system -- then the users would have said to me "well,
this is very nice, but it's incompatible. It will be
too much work to switch. We can't afford that much
trouble just to use your system instead of UNIX, so
we'll stay with UNIX" they would have said.
Now, if I wanted to actually create a community where
there would be people in it -- people using this free
system, and enjoying the benefits of liberty and
cooperation -- I had to make a system people would
use, a system that they would find easy to switch to,
that would not have an obstacle making it fail at the
very beginning. Now, making the system upward
compatible with UNIX actually made all the immediate
design decisions, because UNIX consists of many
pieces, and they communicate through interfaces that
are more or less documented. So if you want to be
compatible with UNIX, you have to replace each piece,
one by one, with a compatible piece. So, the
remaining design decisions are inside one piece, and
they could be made later by whoever decides to write
that piece; they didn't have to be made at the outset.
So, all we had to do to start work was find a name for
the system. Now, we hackers always look for a funny
or naughty name for a program, because thinking of
people being amused by the name is half the fun of
writing the program. [Laughter] And we had a tradition
of recursive acronyms to say that the program that
you're writing is similar to some existing program.
You can give it a recursive acronym name which says --
this one's not the other. So, for instance, there
were many Tico text editors in the '60's and '70's,
and they were generally called something or other
Tico. Then one clever hacker called his Tint, for
Tint Is Not Tico -- the first recursive acronym. In
1975, I developed the first Emacs text editor, and
there were many imitations of Emacs, and a lot of them
were called something or other Emacs, but one was
called Fine -- for Fine Is Not Emacs, and there was
Sine -- for Sine Is Not Emacs, and IINA for Ina Is Not
Emacs, and MINCE for Mince Is Not Complete
Emacs. [Laughter] That was a stripped down imitation.
And, then, IINA was almost completely rewritten, and
the new version was called ZWII[[27:42?]]. For, ZWII
Was IINA Initially. [Laughter]
So I looked for a recursive acronym for Something is
not UNIX. And I tried all 26 letters, and discovered
that none of them was a word. [Laughter] Hmm, try
another way. I made a contraction. That way I could
have a three-letter acronym, for Something's not UNIX.
And I tried letters, and I came across the word "GNU"
-- the word "GNU" is the funniest word in the English
language. [Laughter] That was it. Of course, the
reason it's funny is that according to the dictionary,
it's pronounced "new". You see? And so that's why
people use it for a lot of word play. Let me tell
you, this is the name of an animal that lives in
Africa. And the African pronunciation had a click
sound in it. [Laughter] Maybe still does. And so, the
European colonists, when they got there, they didn't
bother learning to say this click sound. So they just
left it out, and they wrote a "G" which meant "there's
another sound that's supposed to be here which we are
not pronouncing." [Laughter] So, tonight I'm leaving
for South Africa, and I have begged them. I hope
they're going to find somebody who can teach me to
pronounce click sounds. [Laughter] So that I'll know
how to pronounce GNU the correct way, when it's the
animal.
But, when it's the name of our system, the correct
pronunciation is "guh-NEW" -- pronounce the hard "G".
If you talk about the "new" operating system, you'll
get people very confused, because we've been working
on it for 17 years now, so it is not new any
more. [Laughter] But it still is, and always will be
GNU -- no matter how many people call it Linux by
mistake. [Laughter]
So, in January 1984, I quit my job at MIT to start
writing pieces of GNU. They were nice enough to let
me keep using their facilities though. And, at the
time, I thought we would write all these pieces, and
make an entire GNU system, and then we'd say "come and
get it" and people would start to use it. That's not
what happened. The first pieces I wrote were just
equally good replacements, with fewer bugs for some
pieces of UNIX, but they weren't tremendously
exciting. Nobody particularly wanted to get them and
install them. But, then, in September 1984, I started
writing GNU Emacs -- which was my second
implementation of Emacs -- and by early 1985, it was
working. I could use it for all my editing, which was
a big relief, because I had no intention of learning
to use VI, the UNIX editor. [Laughter] So, until that
time, I did my editing on some other machine, and
saved the files through the network, so that I could
test them. But when GNU Emacs was running well enough
for me to use it, it was also -- other people wanted
to use it too.
So I had to work out the details of distribution. Of
course, I put a copy in the anonymous FTP directory,
and that was fine for people who were on the net; they
could then just pull over a tar file, but a lot of
programmers then even were not on the Net in 1985.
They were sending me emails saying "How can I get a
copy?" I had to decide what I would answer them.
Well, I could have said, I want to spend my time
writing more GNU software, not writing tapes, so
please find a friend who's on the Internet, and who is
willing to download it and put it on a tape for you.
And I'm sure people would have found some friends,
sooner or later, you know. They would have got
copies. But I had no job. In fact, I've never had a
job since quitting MIT in January 1984. So, I was
looking for some way I could make money through my
work on free software, and therefore I started a free
software business. I announced "send me $150 dollars,
and I'll mail you a tape of Emacs." And the orders
began dribbling in. By the middle of the year they
were trickling in.
I was getting 8 to 10 orders a month. And, if
necessary, I could have lived on just that, because
I've always lived cheaply; I live like a student,
basically. And I like that, because it means that
money is not telling me what to do. I can do what I
think is important for me to do. It freed me to do
what seemed worth doing. So, make a real effort to
avoid getting sucked into all the expensive lifestyle
habits of typical Americans. Because if you do that,
then people with the money will dictate what you do
with your life. You won't be able to do what's really
important to you.
So, that was fine, but people used to ask me "What do
you mean it's free software if it costs $150 dollars?"
[Laughter] Well, the reason they asked this was that
they were confused by the multiple meanings of the
English word "free". One meaning refers to price, and
another meaning refers to freedom. When I speak of
free software, I'm referring to freedom, not price.
So think of free speech, not free beer. [Laughter]
Now, I wouldn't have dedicated so many years of my
life to making sure programmers got less money.
That's not my goal. I'm a programmer and I don't mind
getting money myself. I won't dedicate my whole life
to getting it, but I don't mind getting it. And I'm
not -- and therefore, ethics is the same for everyone.
I'm not against some other programmer getting money
either. I don't want prices to be low. That's not
the issue at all. The issue is freedom. Freedom for
everyone who's using software, whether that person be
a programmer or not.
So at this point I should give you the definition of
free software. I better get to some real details, you
see, because just saying "I believe in freedom" is
vacuous. There's so many different freedoms you could
believe in, and they conflict with each other, so the
real political question is "Which are the important
freedoms, the freedoms that we must make sure
everybody has?" And now, I will give my answer to
that question for the particular area of using
software.
A program is free software for you, a particular user,
if you have the following freedoms: First, Freedom
Zero is the freedom to run the program for any
purpose, any way you like. Freedom One is the Freedom
to help yourself by changing the program to suit your
needs. Freedom Two is the freedom to help your
neighbor by distributing copies of the program. And
Freedom Three is the freedom to help build your
community by publishing an improved version so others
can get the benefit of your work. If you have all of
these freedoms, the program is free software, for you
-- and that's crucial, that's why I phrase it that
way. I'll explain why later, when I talk about the
GNU General Public License, but right now I'm
explaining what free software means, which is a more
basic question.
So, Freedom Zero's pretty obvious. If you're not even
allowed to run the program anyway you like, it is a
pretty damn restrictive program. But as it happens,
most programs will at least give you Freedom Zero.
And Freedom Zero follows, legally, as a consequence of
Freedoms One, Two, and Three -- that's the way that
Copyright Law works. So, the freedoms that
distinguish free software from typical software are
Freedoms One, Two, and Three, so I'll say more about
them and why they are important. Freedom One is the
freedom to help yourself by changing the software to
suit your needs. This could mean fixing bugs. It
could mean adding new features. It could mean porting
it to a different computer system. It could mean
translating all the error messages into Navajo. Any
change you want to make, you should be free to make.
Now, it's obvious that professional programmers can
make use of this freedom very effectively, but not
just them. Anybody of reasonable intelligence can
learn a little programming. You know, there are hard
jobs, and there are easy jobs, and most people are not
going to learn enough to do hard jobs. But lots of
people can learn enough to do easy jobs, just the way,
you know, 50 years ago, lots and lots of American men
learned to repair cars, which is what enabled the
U.S. to have a motorized Army in World War II and win.
So, very important, having lots of people tinkering.
And if you are a people person, and you really don't
want to learn technology at all -- that probably means
that you have a lot of friends, and you're good at
getting them to owe you favors. [Laughter] Some of
them are probably programmers. So, you can ask one of
your programmer friends "Would you please change this
for me? Add this feature?" So, lots of people can
benefit from it.
Now, if you don't have this freedom, it causes
practical, material harm to society. It makes you a
prisoner of your software. I explained what that was
like with regard to the laser printer. You know, it
worked badly for us, and we couldn't fix it, because
we were prisoners of our software. But it also
affects people's morale. You know if the computer is
constantly frustrating to use, and people are using
it, their lives are going to be frustrating, and if
they're using it in their jobs, their jobs are going
to be frustrating; they're going to hate their jobs.
And you know, people protect themselves from
frustration by deciding not to care. So, you end up
with people whose attitude is "Well, I showed up for
work today. That's all I have to do. If I can't make
progress, that's not my problem, that's the boss's
problem." And when this happens, it's bad for those
people, and it's bad for society as a whole. That's
Freedom One, the Freedom to help yourself.
Freedom Two is the Freedom to help your neighbor, by
distributing copies of the program. Now, for beings
that can think and learn, sharing useful knowledge is
a fundamental act of friendship. When these beings
use computers, this act of friendship takes the form
of sharing software. Friends share with each other.
Friends help each other. This is the nature of
friendship. And, in fact, this spirit of good will --
the spirit of helping your neighbor, voluntarily -- is
society's most important resource. It makes the
difference between a livable society and a dog-eat-dog
jungle. Its importance has been recognized by the
world's major religions for thousands of years, and
they explicitly try to encourage this attitude.
When I was going to kindergarten, the teachers were
trying to teach us this attitude -- the spirit of
sharing -- by having us do it. They figured if we did
it, we'd learn. So they said "If you bring candy to
school, you can't keep it all for yourself, you have
to share some with the other kids." Teaching us --
the society was set up to teach this spirit of
cooperation. And why do you have to do that? Because
people are not totally cooperative. That's one part
of human nature, and there are other parts of human
nature. There are lots of parts of human nature. So,
if you want a better society, you've got to work to
encourage the spirit of sharing. You know, it'll
never get to be 100%. That's understandable. People
have to take care of themselves too. But, if we make
it somewhat bigger, we're all better off.
Nowadays, according to the U.S. Government, teachers
are supposed to do the exact opposite. Oh, Johnny,
you brought software to school. Well, don't share it.
Oh no. Sharing is wrong. Sharing means you're a
pirate. What do they mean when they say "pirate"?
They're saying that helping your neighbor is the moral
equivalent of attacking a ship. [Laughter] What would
Buddha or Jesus say about that? Now, take your
favorite religious leader. I don't know -- maybe
Manson would have said something different.
[Laughter] Who knows what L. Ron Hubbard would say.
But, ...
QUESTION: [Inaudible]
STALLMAN: Of course, he's dead. But they don't admit
that. What?
QUESTION: So are the others, also dead. [Laughter]
[Inaudible] Charles Manson's also dead. [Laughter]
They're dead, Jesus's dead, Buddha's dead...
STALLMAN: Yes, that's true. [Laughter] So I guess, in
that regard, L. Ron Hubbard is no worse than the
others. [Laughter] Anyway -- [Inaudible]
QUESTION: L. Ron always used free software -- it freed
him from Zanu.
[Laughter]
STALLMAN: Anyway -- so, I think this is actually the
most important reason why software should be free. We
can't afford to pollute society's most important
resource. It's true that it's not a physical resource
like clean air, and clean water. It's a psycho-social
resource, but it's just as real for all that, and it
makes a tremendous difference to our lives. You see,
the actions we take influence the thoughts of other
people. When we go around telling people "don't share
with each other" -- if they listen to us -- we've had
an effect on society, and it's not a good one. That's
Freedom Two, the freedom to help your neighbor.
Oh, and by the way, if you don't have that freedom --
it doesn't just cause this harm to society's
psycho-social resource -- it also causes waste --
practical, material harm. If the program has an
owner, and the owner arranges a state of affairs where
each user has to pay in order to be able to use it,
some people are going to say "Nevermind, I'll do
without it." And that's waste, deliberately inflicted
waste. And the interesting thing about software, of
course, is that fewer users doesn't mean you have to
make less stuff. You know, if fewer people buy cars,
you can make fewer cars. There's a saving there.
There are resources to be allocated, or not allocated,
into making cars. So that you can say that having a
price on a car is a good thing. It prevents people
from diverting lots of wasted resources into making
cars that aren't really needed. But, if each
additional car used no resources, it wouldn't be doing
any good saving the making of these cars. Well, for
physical objects, of course, like cars, it is always
going to take resources to make an additional one of
them. Each additional exemplar.
But for software that's not true. Anybody can make
another copy. And it's almost trivial to do it. It
takes no resources, except a tiny bit of electricity.
So there's nothing we can save; no resource we're
going to allocate better by putting this financial
disincentive on the use of the software. You often
find people taking economic -- the consequences of
economic reasoning, based on premises that don't apply
to software, and trying to transplant them from other
areas of life where the premises may apply, and the
conclusions may be valid. They just take the
conclusions and assume that they're valid for software
too -- when the argument is based on nothing in the
case of software. The premises don't work in that
case. It is very important to examine how you reach
the conclusion, and what premises it depends on, to
see where it might be valid. So, thats Freedom Two,
the freedom to help your neighbor.
Freedom Three is the freedom to help build your
community by publishing an improved version of the
software. People used to say to me, if the software's
free, then nobody will get paid to work on it, so why
should anybody work on it? Well, of course, they were
confusing the two meanings of free, so their reasoning
was based on a misunderstanding. But, in any case,
that was their theory. Today, we can compare that
theory with empirical fact, and we find that hundreds
of people are being paid to write free software, and
over 100,000 are doing it as volunteers. We get lots
of people working on free software, for various
different motives.
When I first released GNU Emacs -- the first piece of
the GNU system that people actually wanted to use --
and when it started having users, after a while, I got
a message saying "I think I saw a bug in the source
code, and here's a fix." And I got another message
"Here's code to add a new feature." And another bug
fix. And another new feature. And another, and
another, and another -- until they were pouring in on
me so fast that just making use of all this help I was
getting was a big job. Microsoft doesn't have this
problem. [Laughter]
Eventually, people noted this phenomenon. You see, in
the 1980's a lot of us thought that maybe free
software wouldn't be as good as the non-free software,
because we wouldn't have as much money to pay people.
And, of course, people like me who value freedom and
community said "Well, we'll use the free software
anyway." It's worth making a little sacrifice in some
mere technical convenience to have freedom. But what
people began to note, around 1990 was that our
software was actually better. It was more powerful,
and more reliable than the proprietary alternatives.
In the early '90's, somebody found a way to do a
scientific measurement of reliability of software.
Here's what he did. He took several sets of
comparable programs that did the same jobs -- the
exact same jobs -- in different systems. Because
there were certain basic UNIX-like utilities. And the
jobs that they did, we know, was all, more or less,
imitating the same thing, or they were following the
POSIX spec, so they were all the same in terms of what
jobs they did -- but they were maintained by different
people, written separately. The code was different.
So they said, OK, we'll take these programs and run
them with random data, and measure how often they
crash, or hang. So they measured it, and the most
reliable set of programs was the GNU programs. All
the commercial alternatives which were proprietary
software were less reliable. So he published this and
he told all the developers, and a few years later, he
did the same experiment with the newest versions, and
he got the same result. The GNU versions were the
most reliable. People -- you know there are cancer
clinics in 911 operations that use the GNU system,
because it's so reliable, and reliability is very
important to them.
Anyway, there's even a group of people who focus on
this particular benefit as the reason they give -- the
main reason they give -- why users should be permitted
to do these various things, and to have these
freedoms. If you've been listening to me, you've
noticed -- you've seen that I -- speaking for the free
software movement -- I talk about issues of ethics,
and what kind of a society we want to live in; what
makes for a good society -- as well as practical
material benefits. They're both important. That's
the free software movement.
That other group of people -- which is called the "open
source" movement -- they only cite the practical
benefits. They deny that this is an issue of
principle. They deny that people are entitled to the
freedom to share with their neighbor, and to see what
the program's doing, and change it if they don't like
it. They say, however, that it's a useful thing to
let people do that. So they go to companies and say
to them "You know, you might make more money if you
let people do this." So, what you can see is that to
some extent, they lead people in a similar direction,
but for totally different -- for fundamentally
different, philosophical reasons. Because on the
deepest issue of all, you know, on the ethical
question, the two movements disagree. You know, in
the free software movement we say "You're entitled to
these freedoms. People shouldn't stop you from doing
these things." In the "open source" movement they
say, "Yes, they can stop you if you want, but we'll
try to convince them to deign to let you to do these
things." Well, they have contributed -- they have
convinced a certain number of businesses to release
substantial pieces of software as free software in our
community. So they -- the open source movement has
contributed substantially to our community. And so,
we work together on practical projects. But,
philosophically, there's a tremendous disagreement.
Unfortunately, the open source movement is the one that
gets the support of business the most, and so most
articles about our work describe it as open source,
and a lot of people just innocently think that we're
all part of the open source movement. So that's why
I'm mentioning this distinction. I want you to be
aware that the free software movement, which brought
our community into existence and developed the free
operating system, is still here -- and that we still
stand for this ethical philosophy. I want you to know
about this, so that you won't mislead someone else
unknowingly.
But also, so that you can think about where you stand.
You know, which movement you support is up to you.
You might agree with the free software movements and
my views. You might agree with the open source
movement. You might disagree with them both. You
decide where you stand on these political issues. But
if you agree with the free software movement -- if you
see that there's an issue here that the people whose
lives are controlled and directed by this decision
deserve a say in it -- then I hope you'll say that you
agree with the free software movement, and one way you
can do that is by using the term free software, and
just helping people know we exist.
So, Freedom Three is very important both practically
and psycho-socially. If you don't have this freedom,
it causes practical material harm, because this
community development doesn't happen, and we don't
make powerful, reliable software. But it also causes
psycho-social harm which affects the spirit of
scientific cooperation -- the idea that we're working
together to advance human knowledge. You see,
progress in science crucially depends on people being
able to work together. And nowadays though, you often
find each little group of scientists acting like it's
a war with each other gang of scientists and
engineers. And if they don't share with each other,
they're all held back.
So, those are the three freedoms that distinguish free
software from typical software. Freedom One is the
freedom to help yourself -- making changes to suit
your own needs. Freedom Two is the freedom to help
your neighbor by distributing copies. And Freedom
Three is the freedom to help build your community by
making changes and publishing them for other people to
use. If you have all of these freedoms, the program
is free software for you. Now, why do I define it
that way in terms of a particular user? Is it free
software for you? Is it free software for you? Is it
free software for you? Yes?
QUESTION: Can you explain a bit about the difference
between Freedom Two and Three? [inaudible]
STALLMAN: Well, they certainly relate, because if you
don't have freedom to redistribute at all, you
certainly don't have freedom to distribute a modified
version, but they're different activities.
QUESTION: Oh.
STALLMAN: Freedom Two is, you know, read it -- you make
an exact copy and hand it to your friends, so now your
friend can use it. Or maybe you make exact copies and
you sell them to a bunch of people, and then they can
use it. Freedom Three is where you make improvements
-- or at least you think they're improvements, and
some other people may agree with you. So that's the
difference. Oh, and by the way, one crucial point.
Freedoms One and Three depend on your having access to
the source code. Because changing a binary-only
program is extremely hard. [Laughter] Even trivial
changes like using four digits for the
date. [Laughter]... if you don't have source. So, for
compelling, practical reasons, access to the source
code is a pre-condition, a requirement for free
software.
So, why do I define it in terms of whether it's free
software for *you*? The reason is that sometimes the
same program can be free software for some people, and
non-free for others. Now, that might seem like a
paradoxical situation, s, let me give you an example
to show you how it happens. A very big example --
maybe the biggest ever of this problem was the X
window system which was developed at MIT and released
under a license that made it free software. If you
got the MIT version with the MIT license, you had
Freedoms One, Two, and Three. It was free software
for you. But among those who got copies, were various
computer manufacturers that distributed UNIX systems,
and they made the necessary changes in X to run on
their systems. You know, probably just a few thousand
lines out of the hundreds of thousands of lines of X.
And, then they compiled it, and they put the binaries
into their UNIX system and distributed it under the
same non-disclosure agreement as the rest of the UNIX
system. And then, millions of people got these
copies. They had the X window system, but they had
none of these freedoms. It was not free software for
them.
So, the paradox was that whether X was free software
depended on where you made the measurement. If you
made the measurement coming out of the developer's
group, you'd say "I observe all these freedoms. It's
free software." If you made the measurements among
the users you'd say "Hmm, most users don't have these
freedoms. It's not free software." Well, the people
who developed X didn't consider this a problem,
because their goal was just popularity -- ego,
essentially. They wanted a big professional success.
They wanted to feel "ah, lots of people are using our
software." And that was true. Lots of people were
using their software, but didn't have freedom.
Well, in the GNU project, if that same thing had
happened to GNU software, it would have been a
failure, because our goal wasn't just to be popular;
our goal was to give people liberty, and to encourage
cooperation, to permit people to cooperate. Remember,
never force anyone to cooperate with any other person,
but make sure that everybody's allowed to cooperate;
everyone has the freedom to do so, if he or she
wishes. If millions of people were running non-free
versions of GNU, that wouldn't be success at all; the
whole thing would have been perverted into nothing
like the goal.
So, I looked for a way to stop that from happening.
The method I came up with is called "copyleft". It's
called copyleft because it's sort of like taking
copyright and flipping it over. [Laughter] Legally,
copyleft works based on copyright. We use the
existing copyright law, but we use it to achieve a
very different goal. Here's what we do. We say "This
program is copyrighted." And, of course, by default,
that means it's prohibited to copy it, or distribute
it, or modify it. But then we say, "You're authorized
to distribute copies of this. You're authorized to
modify it. You're authorized to distribute modified
versions, and extended versions. Change it anyway you
like."
But there is a condition. And the condition, of course
-- is the reason why we go to all this trouble -- so
that we could put the condition in. The condition
says-- whenever you distribute anything that contains
any piece of this program, that whole program must be
distributed under these same terms -- no more and no
less. So, you can change the program and distribute a
modified version. But when you do, the people who get
that from you must get the same freedom that you got
from us. And not just for the parts of it -- the
excerpts that you copied from our program -- but also
for the other parts of that program that they got from
you. The whole of that program has to be free
software for them.
The freedoms to change and re-distribute this program
become inalienable rights---a concept from the
Declaration of Independence. Rights that we make sure
can't be taken away from you. And, of course, the
specific license that embodies the idea of copyleft is
the GNU General Public License. A controversial
license -- because it actually has the strength to say
no to people who would be parasites on our community.
There are lots of people who don't appreciate the
ideals of freedom. And we'd be very glad to take the
work that we have done, and use it to get a head start
in distributing a non-free program and tempting people
to give up their freedom. And the result would be --
you know, if we let people do that -- that we would be
developing these free programs, and we'd constantly
have to compete with improved versions of our own
programs. That's no fun. And, a lot of people also
feel -- you know, I'm willing to volunteer my time to
contribute to the community, but why should I
volunteer my time to contribute to that company's --
to improving that company's proprietary program? You
know, some people might not even think that that's
evil - but they want to get paid if they're going to
do that. I, personally, would rather not do it at
all. But, both of these groups of people -- both the
ones like me who say -- I don't want to help that
non-free program to get a foothold in our community --
and the ones that say, sure, I'd work for them, but
then they better pay me -- both of us have a good
reason to use the GNU General Public License. Because
that says to that company -- you can't just take my
work, and distribute it without the freedom. Whereas,
the non-copyleft licenses -- like the X Windows
license, do permit that.
So that is the big division between the two categories
of free software -- license-wise. There are the
programs that are copylefted -- so that the license
defends the freedom of the software for every user.
And there are the non-copylefted programs for which
non-free versions are allowed. Somebody *can* take
those programs and strip off the freedom. You may get
that program in a non-free version. And that problem
exists today. There are still non-free versions of X
Windows being used on our free operating systems.
There is even hardware --- which is not really
supported --- except by a non-free version of X
Windows. And that's a major problem in our community.
Nonetheless, I wouldn't say that X Windows is a bad
thing -- you know, I'd say that the developers did not
do the best possible thing that they could have done.
But they *did* release a lot of software that we could
all use.
You know, there's a big difference between less than
perfect, and evil. There are many gradations of good
and bad. We have to resist the temptation to say ---
if you didn't do the absolute best possible thing then
you're no good. You know, the people that developed X
Windows made a big contribution to our community.
But, there's something better that they could have
done. They could have copylefted parts of the
program, and prevented those freedom-denying versions
from being distributed by others. Now, the fact that
the GNU General Public License defends your freedom
--- uses copyright law to defend your freedom --- is,
of course, why Microsoft is attacking it today. See,
Microsoft would really like to be able to take all the
code that we wrote and put it into proprietary
programs. Have somebody make some improvements, or
even just incompatible changes is all they
need. [Laughter]
You know, with Microsoft's marketing clout, they don't
need to make it better to have their version supplant
ours. They just have to make it different and
incompatible. And then, put it on everybody's
desktop. So they really don't like the GNU GPL.
Because the GNU GPL won't let them do that. It
doesn't allow embrace and extend. It says, if you
want to share our code in your programs, you can.
But, you've got to share and share alike. The changes
that you make we have to be allowed to share. So,
it's a two-way cooperation, which is real cooperation.
Many companies --- even big companies like IBM and HP
are willing to use our software on this basis. IBM
and HP contribute substantial improvements to GNU
software. And they develop other free software. But,
Microsoft doesn't want to do that, so they give it out
that businesses just can't deal with the GPL. Well,
if businesses don't include IBM, and HP and SUN then
maybe they're right. [Laughter]
More about that later. I should finish the historical
story. You see, we set out in 1984 --- not just to
write some free software --- but to do something much
more coherent: to develop an operating system that was
entirely free software. So that meant we had to write
piece after piece after piece. Of course, we were
always looking for shortcuts. The job was so big that
people said we'd never be able to finish. And, I
thought that there was at least a chance that we'd
finish it but, obviously, it's worth looking for
shortcuts. So we kept looking around --- is there any
program that somebody else has written that we could
manage to adapt, to plug into here, and that way we
won't have to write it from scratch? For instance,
the X-Window system --- it's true it wasn't
copylefted, but it was free software --- so we could
use it.
Now, I had wanted to put a Window system into GNU from
Day One. I wrote a couple of Window systems at MIT
before I started GNU. And so, even though Unix had no
window system in 1984, I decided that GNU would have
one. But, we never ended up writing a GNU Window
System, because X came along. And I said, goody! One
big job we don't have to do. We'll use X. So I
basically said, let's take X, and put it into the GNU
system. And we'll make the other parts of GNU, you
know, work with X, when appropriate. And we found
other pieces of software that had been written by
other people, like the Text Formatter TeX. Some
library code from Berkeley. At that time there was
Berkeley Unix --- but it was not free software. This
library code, initially, was from a different group at
Berkeley, that did research on floating point. And,
so, we kept --- we fit in these pieces.
In October 1985, we founded the Free Software
Foundation. So please note, the GNU project came
first. The Free Software Foundation came after.
About almost two years after the announcement of the
project. And the Free Software Foundation is a
tax-exempt charity, that raises funds to promote the
freedom to share and change software. And in the
1980's, one of the main things we did with our funds
was to hire people to write parts of GNU. And,
essential programs, such as the Shell and the
C-Library were written this way, as well as parts of
other programs. The tar program, which is absolutely
essential -- although not exciting at all [Laughter]
was written this way. I believe GNU grep was written
this way. And so, we're approaching our goal.
By 1991, there was just one major piece missing, and
that was the kernel. Now, why did I put off the
kernel? Probably because it doesn't really matter
what order you do the things in, at least,
technically, it doesn't. You've got to do them all
anyway. And, partly, because I'd hoped we'd be able
to find a start at a kernel somewhere else. And we
did. We found Mach, which had been developed at
Carnegie Mellon. And, it wasn't the whole kernel, it
was the bottom half of the kernel. So we had to write
the top half, but I figured you know, things like the
file system, the network code, and so on. But running
on top of Mach they're running essentially as user
programs, which ought to make them easier to debug.
You can debug with a real source-level debugger
running at the same time. And so, I thought, that
way, we'd be able to get these, the higher level parts
of the kernel, done in a short time. It didn't work
out that way. These asynchronous, multi-threaded
processes, sending messages to each other, turned out
to be very hard to de-bug. And the Mach-based system
that we were using to bootstrap with, had a terrible
debugging environment, and it was unreliable, and
various problems. It took us years and years to get
the GNU kernel to work.
But, fortunately, our community did not have to wait
for the GNU kernel. Because in 1991, Linus Torvalds
developed another free kernel called Linux. And he
used the old-fashioned monolithic design and it turns
out that he got his working much faster than we got
ours working. So maybe that's one of the mistakes
that I made: that design decision. Anyway, at first,
we didn't know about Linux, because he never contacted
us to talk about it. Although he did know about the
GNU project. But he announced it to other people, and
other places on the Net. And so, other people then,
did the work of combining Linux with the rest of the
GNU system to make a complete free operating system.
Essentially, to make the GNU plus Linux combination.
But, they didn't realize that's what they were doing.
You see, they said, we have a kernel --- let's look
around and see what other pieces we can find to put
together with the kernel. So, they looked around --
and low, and behold -- everything they needed was
already available. What good fortune, they said.
[Laughter] It's all here. We can find everything we
need. Let's just take all these different things and
put it together, and have a system. They didn't know
that most of what they found was pieces of the GNU
system. So they didn't realize that they were fitting
Linux into the gap and the GNU system. They thought
they were taking Linux and making a system out of
Linux. So they called it a Linux system.
More information about the Web4lib
mailing list