Ouch!
[laughter]
Geh... Let go!
Eh, välkomna allihopa hit, till DFs föreläsning med Richard Stallman.
Eeh, lite praktiska saker innan vi börjar.
Eeh, man får inte lov att äta och dricka härinne
så att det går till så.
Eehh...
[laughter]
Samma regler gäller för alla.
Eehh...
Japp!
Eh, efteråt kommer det att, eh, säljas lite böcker och saker ute i foajen där, så att, eh, om man vill [inaudible] finns det ett bord där [inaudible] om ett litet ögonblick.
Eeh, de som vill fotografera kan göra det efteråt
det kommer att finnas en möjlighet för dom att göra det
på slutet
Det kommer inte att vara en paus, under föredraget, så att [inaudible] tills dess det är klart. Så.
Eeh, very welcome, to us and...
What did you say?
[laughter]
Eeh, welcome, and please start [inaudible]
"Please start now"?
Yep!
[laughter]
Okay.
[mumbling]
[sound check]
Please raise your hands if you cannot hear me.
[laughter]
You see, if I get laughter from all around the room then I know the system is working.
Now you might wonder why, uh, English law makes such a big fuss about property rights.
Well, the reason is that they, they had to have proper tea rites every afternoon.
[laughter]
Well,
I'm here to speak about the GNU project and the Free Software movement.
And how we developed a free operating system that millions of people are using and nobody knows.
But I should start by explaining what led me to start the free software movement.
Back in the 1970's, I had the good fortune to be part of a community of hackers who shared software.
We developed software and we shared it.
And I was working for the MIT Artificial Intelligence Laboratory, which was the center of this community;
all the software we used there was part of the community, it was a whole operating system that had been written by the lab's hackers.
Uh, and when I joined in 1971, my job was to improve the system.
So within this community, anytime you saw something interesting on somebody's screen, you'd say: "Hey, what it that?", and he'd say "That's the new FOOBAR program which we got from Stanford, it's in the 'FOOBAR' directory."
And, in that directory you would find the executable that you could run,
and the source code that you could read and study, so you could learn how they solved those problems.
And you could find...oh, puh, if you, wouf, sorry.
If, if in a running the program you got ideas for how to improve it you could go to the source and start adding those improvements.
And perhaps even, you might want to *cut out* a part of the source code to put it into some other program you were writing.
We used to call that "cannibalization".
Uh. Nowadays, the academics who write about it call it "code reuse".
[laughter]
And, what we learned about code reuse is, the first thing you should do to encourage code reuse, is:
Stop trying to prevent people from doing it.
So you could use the program in, not just by running it, but in a, a whole range of ways that it could be useful.
And sometimes the program was worked on by one person after another after another after another over a period of fifteen years.
And so programs grew somewhat the way a city grows with, you know, one piece gets replaced, and then a year later this other piece gets replaced, and,
you can look through it and see the old buildings and the new buildings, 'course you can recognize by their style, vaguely how, what eh, epoch they date from.
And, sometimes even people at computer companies contributed to this community.
For example, at one point we needed a cross-assembler for the PDP-11, that would run on the PDP-10.
PDP-10 was a big computer, the PDP-11 was a 16 bit minicomputer.
Well, we could've just written one, but to save time we looked around to find something existing.
And, over at Harvard, where I was a student, I discovered that they had a cross-assembler.
It was written, I think, by somebody at Digital.
They had the source code, there was no copyright notice on it,
so, I took it over to MIT,
I ported it to *our* system, the Incompatible Timesharing System or "ITS".
And, then I added more macro facilities.
And, then we used it for a few years, and somebody at BBN, a, another company, wanted to have such a cross-assembler to run on *their* PDP-10 timesharing system "TENEX".
So he contacted me, I sent him the source, he ported it, and he added *additional* macro facilities.
Then we merged the two versions into a common version with conditionals for the two systems
and, *all* of the macro facilities.
And we maintained and used that together for another few years, until those computers were obsolete.
And, this shows the way cooperation worked within our community.
But then we got a taste of what it was, what computers were like
for the rest of the world,
for the people who didn't belong to a community like ours.
This happened when Xerox gave MIT a laser printer.
And this was a very nice gift in some ways.
Uh...
It was...
It was actually, it was the first time anybody outside Xerox ever had a laser printer.
It was actually a fast,
high mo..., high end model office copier that had been modified
with a computer attachment
And this printer was much faster, much higher resolution,
than our previous printer, and straight lines came out nice and straight,
but,
it was unreliable; it frequently got jams.
Well, we knew what to do about that.
With our previous printer, which was slow, and low resolution, and tended to make lines come out a bit wavy,
uh...
It was *also* unreliable; it would frequently run out of something, or jam.
And since we couldn't make the *printer* better,
we added features to the software to *compensate* for the problems with the printer.
For example:
Whenever,
oh, a print job finished,
the PDP-11 controlling the printer
signaled the PDP-10,
and the PDP-10 looked through the print queue and it displayed a message for the user who asked for that print job,
saying "Your file 'FOO' is finished".
So, you had to wait because the printer was slow, but you didn't have to wait extra
just because of ignorance;
*not knowing* when your job was finished.
And,
there was another feature which
I added
which was that anytime the printer got in trouble the PDP-11 would tell the PDP-10
which would
search the print queue and display a message for *all* the users *currently waiting for printing*,
saying "The printer is in trouble, go fix it.".
Now, if you got that message,
you would know,
that probably just a few people got that message, so you wouldn't assume someone else was going to fix the problem,
you would go to the printer right away.
So a minute or so after the printer got in trouble, two or three people would arrive,
one at least would know how to fix that problem and would teach the others.
So the printer would get fixed, very quickly.
In effect,
we treated the *users* as part of the system and added *end-to-end feedback*,
and obtained reliable operation for the whole system,
even though *the printer*
was still unreliable just as before.
We were able to do this,
because the control software for that printer was free software.
*But*, when we wanted to add similar features to the new printer software,
we ran into
a solid wall.
Because that printer was controlled by proprietary Xerox
software, running on a special Xerox computer.
And we couldn't make any changes in it.
Even though
we were about as good programmers as you could find anywhere in the world,
we were completely helpless.
We were *prisoners of our software*.
And because of that, using this printer was always frustrating.
You'd, uh,
you'd type the command to print a file and it would say, a few seconds later,
"Your file 'FOO' has been spooled.".
Well, what else is new?
It's always *spooled* in a few seconds.
So then you go back to work.
And a while later you notice the time, "Oh, it's been half an hour, not long enough, it's probably not printed yet.
'probably spent most of that time being jammed, so I'll wait."
You go back to work,
and a while later you notice the time; "Oh, it's been a whole hour, maybe *now* it's printed.".
So you go upstairs to the printer, and you find, that it's been jammed the whole time.
So you fix the jam, you go back to work,
and a while later you notice the time; "Oh, it's been another half hour.".
You go back to the printer and you see that it printed two hundred pages of other people's stuff,
which was three minutes of printing,
and then jammed again.
And at that point you'd say "*I'm going to stand here and fix this damn printer every time until my stuff comes out.*".
Well, it wasn't supposed to work that way.
But it did, and it was very frustrating.
*Constantly* frustrating,
that, the printer didn't work well and that we were being *stopped* from fixing it.
We weren't asking somebody to fix it for us, *we were willing to fix it*,
And Xerox was deliberately *stopping* us from fixing it.
Then I heard,
that somebody at Carnegie-Mellon University
had a copy
of that source code.
Eventually I visited Pittsburgh,
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:
"I promised not to give you a copy."
[laughter]
I was
too shocked and angry
to know what to say to him, so I turned around and just walked out.
And then I thought about it.
See, this was very, uh,
This was very bad for...
You see, he had promised to refuse to cooperate with me,
me and my whole lab.
But it wasn't just us;
he also promised,
to refuse to cooperate with *you* ,
most likely.
[laughter]
And he probably promised
that he wouldn't cooperate with *you* .
And in fact,
He probably promised to refuse to cooperate with most of the people in this room,
except a few who maybe weren't born yet in 1981.
Because,
he promised to refuse his cooperation,
to just about everybody in the entire world.
He had signed a non-disclosure agreement.
And,
this was my first experience
with a non-disclosure agreement.
I was a victim.
I, and my whole lab,
were the victims.
This was very bad for the lab,
and we never got that source code, we were never able
to fix the printer.
But in a paradoxical way it was very good for *me*,
because it taught me a lesson.
A very important lesson because most people don't learn it.
And the lesson is,
that non-disclosure agreements *have* victims.
Most people
*avoid* learning this lesson because they don't *want* to learn it.
Most people first encounter a non-disclosure agreement
when they are invited to sign one.
And there's always some kind of goodie they're going to get if they sign, some temptation,
encouraging them to overlook what is wrong.
So they make excuses for themselves, like
"This is the way it's done, who am I to object?"
and
"They're not going to get it anyway, so what difference does it make if I *help* deprive other people?"
and
"This is.."
"If I don't do this, somebody else will."
All the usual excuses and a few special ones.
But when somebody
offered me some nice software if I would sign a non-disclosure agreement,
I remembered
what it was like to be the victim,
and how angry I was.
And I *couldn't*
do that to somebody else.
Especially,
since I didn't even know who I would be doing it to.
If you sign a non-disclosure agreement,
Then you're promising
"I will screw
".
And the blank gets filled in later by circumstances.
Maybe with somebody you hate, maybe with your best friend, maybe a stranger.
You don't *know* who you're going to betray.
But you're promising,
to betray them.
I couldn't do that.
I was too angry
at the person who had done it to me and my whole lab.
I couldn't do the same thing
to other people who were probably
innocent and not deserving to be mistreated.
So I said "Thank you very much for offering me this nice piece of software,
but I can't in good conscience accept it on the terms you're asking for,
so I'm going to do without it.".
And I have never
*knowingly* signed a non-disclosure agreement
for generally useful technical information.
There are other kinds of information.
For example, if you wanted to talk with me about what was happening with your girlfriend,
and you asked me "please not tell anybody",
*that* I could agree to,
because that information is not
generally useful technical information.
[laughter]
It's probably not technical at *all*.
[laughter]
And it probably also is not generally useful.
Now,
there might be an exception:
If you had discovered some wonderful sex position,
Perhaps one could argue that I have a duty to humanity,
to pass on the information
to other people who could make more use of it than I could.
[laughter]
But,
if it's just a matter of what you've been arguing about and why there's a problem and so on,
thats not, there's no reason why the world would be better off if they know it,
so it's OK if I
keep it in confidence for you.
But when it comes to generally useful technical information like software;
The whole purpose of my field is to develop this information and make it available to humanity!
If instead we withhold it,
we are betraying the purpose of the field.
So, I made this moral decision that I wasn't going to participate
in that way of life.
But, shortly afterward,
A series of calamities fell on my community,
wiping it out.
And, the final stroke came,
when Digital discontinued the PDP-10.
Now, the Incompatible Timesharing System,
was...
written in assembler language for the PDP-10, it was written started in the 1960's,
so what else would it be written in?
So when the PDP-10 was discontinued,
all the software was essentially obsolete.
Uh, it's true, some hobbyists in strange places like Stockholm decided to
set up PDP-10s and run it later on, but
but that was clearly retrocomputing, it was no longer modern
computer use.
So,
the result was a situation where,
in order to get a modern computer of the day, 1983,
and use it,
you first had to get an operating system,
And there were... Since *all* the operating systems were proprietary,
this meant signing a non-disclosure agreement.
So,
My moral convictions,
and the situation were coming into a head-on collision,
which placed me in a moral dilemma:
What would I do?
How could I continue
with my life
in this situation?
The easiest,
the *obvious* alternative was
to accept the way the world had changed, and many people
advised me to do that.
Which would mean I would start signing non-disclosure agreements, and MIT would surely have me *write* proprietary software,
I realized, though, if I did this, I could have fun coding,
And I could make money, especially if I went elsewhere
than MIT.
But,
at the end I would have to look back and say "I have spent my life building walls to divide people".
And I didn't want to do that.
So I looked for another alternative, and there was another obvious alternative,
(at least it was obvious to me,
most programmers don't seem to recognize it, it exists)
and that was to *leave the computer field*.
Now many programmers say to me:
"The people who hire programmers demand this, this, and this.
If I don't do those things,
I will *starve*."
Literally, that's what they say.
But, you know, even in the US,
even today,
millions of people
*make a living*
and *not in the software industry*.
[laughter]
Now, I have no other special skills,
but, I'm sure I could've become a waiter.
Not in a fancy restaurant, I suppose, but...
but somewhere.
And,
being a waiter,
unless you know the food eh eh is contaminated, it's, there's nothing immoral about being a waiter,
it's a perfectly honest, legitimate thing to do,
*and*,
there's no danger of starving.
[laughter]
But,
I, I realized I wouldn't have much fun
being a waiter.
And,
while this would avoid
*abusing* my skills,
I would still be wasting them.
So I decided to look for yet another alternative; was there some way I could use my skills
as an operating system developer
to improve
the situation?
And I realized that,
operating system development was exactly what was needed, because,
The problem was caused by the fact
that all the operating systems were proprietary.
If a group of operating system developers got together and wrote
A new operating system, and then encouraged everyone to share it,
we could get everybody away, out of this moral dilemma.
So,
it was obvious that this was what I should do
with my skills.
So I decided to launch a project
to develop a free operating system.
The next question was,
"what should the design be?".
Well I'd seen one operating system
turn into...
dust and blow away,
because it was written for a specific kind of computer that was discontinued.
I didn't want to take the risk that that would happen again,
So,
clearly I had to make a *portable* operating system.
Well, at the time,
there was just *one* portable operating system that I knew of
that was a real success.
And that was Unix.
So, I decided I should follow the design of Unix.
In addition, Unix had some good ideas,
thing like pipes, and redirections, and
the simple 'fork' and 'exec' system calls
were superior to most systems of the time.
So I figured it was a good design to follow.
And what's more, I decided to make it *compatible*,
*upward* compatible with Unix,
because,
I realized that would facilitate the acceptance of the system.
You know, I could have
looked at the best ideas from the systems I had worked on, and others I'd read about or used, put them together with my own favorite ideas
I could've made *my dream operating system*.
But I realized that if I did that and offered it to the users they would reject it, they would say:
"We've already written our programs to run on Unix", or whatever,
"and,"
"your system is incompatible, we'd have to rewrite our programs and retrain people and we're just not going to do that."
Now,
I didn't want
to simply
say
in the abstract: "I've offered people a chance to have freedom and they didn't take it, so it's their fault.", no.
I didn't want to just have an excuse, I wanted to really change the situation,
and to do that I had to develop a system
that other people would really use.
And this meant I should make it easy for them to adopt it,
and that meant compatibility.
The design of Unix consists of a large number of various components
that talk through each other through interfaces
that are more or less documented.
So being compatible with Unix means using the same interfaces, at least for most of them.
and that makes,
almost *all* of the basic design decisions right there.
The remaining design decisions are internal to one component,
which means they didn't have to be made at the beginning.
They could be made by whoever was going to write that piece.
So,
that meant the design stage was almost finished, except for one thing:
I decided we would not try to support 16 bit computers.
And the reason is, I recognized that would be a lot of extra work.
And this project was
so big to begin with,
that it wasn't clear we could finish it,
and a lot of people said we *couldn't* finish it.
Clearly we should try to make it easier.
And,
supporting only computers with a big enough address space that there's no problem
is one way to make it easier.
And I figured that by the time the system was working,
thirty-two-bit computers would be common,
and everyone could have them.
And that's what happened.
So, the design decisions were made, the next thing I needed was a name.
Of course, we hackers
*always* want to pick
amusing, or naughty names
for all the software we write, that's part of the purpose of writing the software.
[laughter]
So,
yeah, why you write code is to give you the opportunity to use a funny name.
So,
there was a hacker tradition,
that,
when you're writing a program similar to some other program,
you can give the new one a name, which is a recursive acronym, saying " is not ".
For example,
in the 60's and 70's there were many TECO text editors.
And most of them were called this-TECO or that-TECO or whatchamacallit-TECO,
but,
one clever hacker called his version " TINT",
which stood for " TINT Is Not TECO".
The first recursive acronym.
Then,
in 1975, I developed the first Emacs text editor.
There were many Emacs-like text editors after that,
and many of them were called this-emacs or that-emacs or whoseswhatsis-emacs,
But one was called "FINE" for "FINE Is Not Emacs",
and there was "SINE" for "SINE Is Not Emacs",
and there was "EINE" for "EINE Is Not Emacs".
Then EINE was almost completely rewritten and the new version was called "ZWEI",
for "ZWEI Was EINE Initially".
[laughter]
So I looked for a recursive acronym name,
for " Is Not Unix".
But there was a problem; all the obvious four-letter possibilities were,
the problem was, none of them was a word.
Which means there was nothing to make it particularly funny.
Uhh... So,
I looked a little bit further, and,
I tried *other* ways of making a recursive acronym and I discovered,
that if I used a contraction,
I could get the,
the funniest word in the English language,
to be the name. And that word, of course, is "gnu",
which is used for a lots of, fuh, lots of jokes, lots of funny songs,
and...
'course it stands for
"GNU's Not Unix".
Now the reason why people have fun with it that the dictionary says it's pronounced "nu".
But actually,
you shouldn't believe a dictionary, because
the *real* pronunciation has a click sound in it, it's something like [click]nu.
I'm probably not saying it right,
but the British colonists didn't even try.
[laughter]
You know,
they just said "nu",
and the wrote it with a "G", meaning:
"We're not pronouncing something here".
[laughter]
And then that,
that got put in the dictionary and labeled as "correct".
Anyway,
when it's the name of our system,
please pronounce a hard "G", pronounce it "gnu".
If you speak of the "nu" operating system, you'll get people very, very confused.
[laughter]
Because, we've been working on it for sixteen years now, so it's not so "new" anymore.
[laughter]
But it still is,
and it always will be,
"GNU",
no matter how many people call it "Linux".
[laughter]
So,
I had a name;
the next step was to look for funding.
So I started
asking
the executives of computer manufacturers
if they would
have their companies contribute fifty thousand dollars each.
And I said, said to them that,
that were spending millions of dollars a year
on Unix licenses.
And,
if they contributed fifty thousand dollars,
then, even if there was only a one-percent chance we would succeed,
the payoff would be *more* than a hundred to one *anyway*.
So it was still a good bet.
Now there was a...
a couple of executives initially...
showed some interest, but,
they didn't really follow up, by offering us money.
So,
after a few months of that, I decided
it wasn't accomplishing anything.
So instead of looking for funding,
I should just
start writing code.
I didn't want to sit around for years,
hoping to get funding and getting nowhere.
So,
in January 1984,
I quit my job at MIT, to start writing GNU.
I went into... I had to quit my job.
Because,
aah... because MIT had already been known to take the software written by a staff,
and turn it into proprietary software products.
In fact,
my own lab had done this.
I didn't want MIT to have a chance to spoil the whole point of writing this code.
The only way I could stop MIT
from interfering
was
to quit my job.
And I've never had a job since then.
But,
The AI lab let me keep on using their computers to do the work.
So I started using a Unix machine at the AI lab,
to write pieces of GNU.
And this was the first time I actually used Unix.
So until then,
I...
I'd read about Unix, but I had never seen it up close.
Fortunately, when I started to see some of the deficiencies,
most of them, it turns out, we were able to fix.
And it ended up working reasonably well.
I was never a Unix wizard,
the way so many other people were, back then.
I've...
I've picked Unix as the system to replace,
But that didn't mean I was a super-fan of Unix in particular,
it was just a choice that I made.
Now, at that point, I assumed,
that we would write all these different components to replace the components of Unix,
and when the whole system was finished,
*then* we'd tell people
"Come and get it, it's ready!".
And then, we thought, people would start using GNU.
But that's not what happened.
See, in September '84,
I started writing GNU Emacs.
Which was my second implementation of Emacs editor.
And,
in early 1985 it was working well enough, I could actually do all my editing with it.
Which meant I could do my editing on Unix.
I had no interest at all in learning to use 'vi'.
So,
until that time I did my editing on other computers where there was an Emacs,
and I saved the files through the network
in order to test them.
But,
no,
nn, at this point I could use
GNU Emacs on Unix.
And that meant, so could other people, and other people started asking me for copies of GNU Emacs,
to run, on their Unix systems.
Which meant,
I had to work out the details, how I was going to distribute it.
I had a general idea, but that was no longer enough.
Well, of course I put a copy
in the anonymous FTP directory, on the machine I was using.
And that enabled people on the net to get copies,
But in 1985, even most programmers were not on the net.
So the question was what I would say to them.
I could've said to them
"I want to spend my time
writing more GNU,
not making tapes,
so please don't ask me to send you a copy,
find a friend who's on the net, who's willing to download it for you and,
give or transfer a copy to you."
And I'm sure the people who wanted it *enough* would've got copies.
But,
I had no job.
And I was looking for some way I could make money,
by working on free software.
So I announced:
"Send me $150, and I'll mail you a tape, of GNU Emacs.".
So I started a free software business.
And, orders began dribbling in,
and by the middle of 1985 they were trickling in,
I was getting maybe eight to ten orders a month,
which was actually enough for me to live on.
Because I live cheaply.
I've always made a point of trying to live cheaply,
because I don't want to be controlled by a need for money.
I wanna be in a position where I'm not desperate
to get paid for things,
so I can say "no" to things.
Now, most people, especially most Americans,
when they get,
starting making more money, they immediately look for some way they can spend that much or more.
So they look, they start picking up expensive habits.
Like houses and
cars and
paintings and stamps and adventure travel and children
[laughter]
All sorts of expensive things that put a big burden on the world,
and,
[laughter]
And, and typically, you know, they become a *habit*, and the people say, you know, "I can't stop paying for this anymore.".
"So I have to do exactly what the people with the money tell me to do."
Basically, it's putting chains on yourself.
Because,
I resisted those expensive habits,
*I* was able to decide what I would do with my life.
So,
at that point I decided it was time
to make another attempt to raise funds for the project.
Uh,
At the, after all, now that GNU Emacs was available, people could see that
the GNU project was *not* just talk, that we *could* produce useful software.
And I figured they'd be more interested in supporting us.
So we started the Free Software Foundation,
which is a tax-exempt charity,
a lot like a school or a hospital,
to promote free software.
I, but people say to me often,
"What do you mean it's free software if it costs $150 for a tape?"
Well,
The English word "free" is confusing here,
because,
It has multiple meanings.
One of them refers to freedom, and another refers to price.
When I speak of "free software",
it's a matter of freedom, *not* price.
So think of "free speech",
*not* "free beer".
[laughter]
In Swedish it's clearer, if you say "free" in Swedish,
it's,
it clearly refers to freedom and not price.
So,
if you want to talk about free software, say it in Swedish,
not in English.
Some people got their copies of Emacs through the network
from me
without paying me.
Other people got their copies from me, on a tape,
and paid me.
And other people got their copies indirectly through third parties,
And they didn't pay me,
or, I didn't even, they didn't even deal with me.
So some of them, some of them got it "gratis", and some didn't,
but *all* of them had *freedom*.
And that's what made it free software.
So let me now give the definition of free software,
by explaining the specific freedoms involved here.
A program is free software,
for you, a particular user,
if *you* have the following freedoms:
Freedom zero:
Freedom to run the program for any purpose.
Freedom one:
Freedom to
help yourself
by modifying the program to suit your needs.
Freedom two:
The freedom to distribute copies; the freedom to help your neighbor.
And freedom three:
The freedom to help build your community;
by publishing improved versions
so other people can take advantage of your work and build on it.
If you have *all* of these freedoms,
the program is free software for you.
Now,
Free soft, freedom number zero,
pretty much goes without saying.
because *most* software gives you freedom zero.
Any program that *doesn't* give you freedom zero is particularly restrictive.
So,
of course,
free software has to give you freedom zero,
in addition,
*legally*,
freedom zero is a *consequence* of freedoms one, two and three.
So the *crucial* freedoms are freedoms one, two and three.
Those are the freedoms that distinguish free software from *most* software.
So I'll go into more
explanation about why these freedoms are important and what they mean.
Freedom one
if the freedom to help yourself,
the freedom to make the changes you want to make.
This could just mean fixing bugs,
it could mean adding features,
or basically it means adapting the program to serve *your needs* properly.
This is useful, of course, to programmers, who can make the changes themselves.
But it's also useful to any business,
that uses
the software,
If you're in business, then maybe nobody in the business is a programmer,
but you can hire somebody who *is*, or make a contract with a programming company,
a free software support company.
And in this way, you can get the changes you want.
With *non-free* software, you *can't* get the changes you want, it's impossible.
But this freedom is *also* useful to other people.
Who are *not* programmers, and *not* in business.
Let me explain some of the reasons.
One is,
That, there's no, people are not divided at birth into programmers
and non-programmers; we don't have a caste system.
Anybody
is welcome to learn some programming.
And,
of course, most people are not going to learn, to be be *really good* programmers, but they can learn *something*, if they have a *reason* to.
So this freedom,
even if it's
*not immediately* useful to most people, it's *potentially* useful to them if they *care* enough.
And even if you learn only a little bit you can still do *some* things.
They'll still, there are *some* changes that are, that you can make,
without having to become a great programmer.
And finally,
it's important to have the whole,
the general public,
looking at the program and making changes in it, if appropriate.
For example,
If your computer is going to be on a network,
Then,
If a, if a program, ih,
ouf, aff, sorry,
I'm getting it out of order.
Basically,
in order for this freedom to mean anything you have to have access to the source code.
Which means you can *study* the program and, and see how it works.
And nowadays,
if your computer's on a network,
if you install a program for which you *don't* have the source code
You are *trusting* the author,
*not* to have put something in that program to spy on you or mess you up.
And,
this has been done, even by
so-called "reputable companies"; I'm told that, uh,
AOL Instant Messenger has a,
has code in it to *spy* on you.
And that that is in fact the reason why they released the program;
so people would have it on their computers,
so, so basically so they could spy on their ex-customers.
So,
if you really want to be safe,
you better be using software that,
even if *you're* not reading the source code to check it, *somebody* is.
So,
If you don't have freedom one,
practical material harm results.
You're a prisoner of your software, I explained what that was like
in regard to the little Xerox laser printer.
But, along with that, there is a psycho-social harm,
which affects people's enthusiasm for their work, people's morale.
If you're really excited about the work you're doing,
then you try to get a lot done.
But if somebody is deliberately stopping you,
then,
to protect yourself from constant frustration,
you tend to develop a different attitude.
An attitude of
"Well, I showed up for work today."
"That's all I have to do."
"If I can't get this work done now, I'll just read my book and get paid for that."
"And, if,
whenever I can start working again, then I'll start working, I don't care."
"It's their problem."
Now that,
when that happens, it's bad for the people it happens to, and it's also bad for society.
That's freedom number one, the freedom to help yourself.
Freedom number two
is the freedom to help your neighbor.
I think it's the most important of all these freedoms.
Because helping your neighbor,
th, th, the spirit of good will, of *willingness* to help your neighbor,
Is the most important resource of society.
It's a, it, it makes the difference between a society
and a dog-eat-dog jungle.
Now,
for beings that can learn and know things,
a fundamental act of sh, of friendship is to teach each other.
You can
teach somebody else some knowledge without forgetting it, losing it yourself.
This is the wonderful thing about knowledge.
Which makes it so helpful and so useful.
And this is why
people recognize that teaching each other is an important form of sharing.
When these beings use computers,
that
act of friendship takes the form
of sharing software.
So we're talking of one of the bonds of society here.
Which non-free software tries to destroy.
If a program has an "owner"
who succeeds,
never mind by what method,
in
making, in stopping users from sharing
and making every user pay
for permission to use the program,
this sets up a financial disincentive,
discouraging people from using the program.
Because some people will say
"All right, I'll pay", and they'll use the program.
And others will say "Never mind!",
and they *won't* use the program.
And every time somebody says "Never mind!"
the program is going partly to waste.
But the work it takes to develop the program, to any given level of power and quality, is the same,
regardless of the number of users.
So the same work is done,
But s, part of the, people who want to use it,
are deliberately discouraged,
discouraged by a deliberate scheme of obstructionism.
So this is deliberately inflicted waste,
which is practical material harm.
But along with this comes psycho-social harm,
in that it attacks
the spirit of good will that society needs.
And just as,
you know, a lot of people like to pretend
that we in the free software movement
are
against business.
And you may hear people say that we are against commercial software, which is not true.
We're against *non-free* software, we're not against *commercial* software,
as long as it's free.
Uh,
but the point is,
the best way to understand
this
is to think of the environmental movement.
In the 1960's, factories used to make paper, and pour poison in the river.
And people started to complain about this,
and of course the factory owners said
"They're communists, they're anti-business."
But that was a lie,
they were not against making paper,
they were not against making a *profit* making paper,
they were against *pouring poison in the river*.
Now,
in the same way, we are not against
making software, and we're not against making a profit making software,
we are against
poisoning the spirit of good will
that our society depends on.
So,
if
society says to people
"Don't share with each other, sharing is wrong.
Sharing means you're a pirate.",
what does that do, what kind of society does that lead to?
If,
if they say that sharing with your neighbor is the moral equivalent
of attacking the people on a ship?
I mean, and if the government starts saying
"If you share with other people we'll put you in prison for years."
Do you want to live,
well, how much fear is it going to take
to convince people to stop sharing with their friends?
Do you want to have that level of fear in your society?
I don't.
So,
This is the psycho-social harm
done
when people do not have freedom number two.
And this I think is the most important reason why software should be free.
Dividing people,
telling them they *can't* help each other, *can't* work together,
is an attack against
everybody's way of life.
And this freedom is one
that *every* computer user can take advantage of, you don't have to have special training
to be able to make a copy of something for your friend.
That's freedom number two; the freedom
to
help your neighbor.
Freedom number three is to ha,
freedom to help build your community,
by making improved versions and publishing them.
so that other people can get the benefit of your additions to the program
and then add more.
Now, people used to tell me,
"If the software is free, that's s... Free software is a silly idea, because if the software is free,
that means nobody's going to get paid to work on it,
and that means nobody will work on it."
Well, now, based on empirical fact,
we know that *both* halves
of that argument
are wrong.
Some people *do* get paid to work on free software,
and *lots* of people
write free software without getting paid.
In fact,
once people started *using* GNU Emacs,
some of them
started making changes,
and sending them to me.
They would send me a bug fix,
or a new file adding a new feature,
another bug fix, another new feature, another, another, another, another, until they were pouring in on me so fast,
that it was hard work, just to make use of all their help.
Microsoft doesn't have this problem.
[laughter]
[applause]
So,
this was an example of a phenomenon
that has been
noted, since then,
that when a free program catches on,
it tends to get a lot of people helping to make it more powerful and more reliable.
And,
in fact, there's a group of people who have focused on this particular phenomenon,
as the argument for the three freedoms
I'm talking about.
And that group
calls itself the "Open Source movement".
And, the Open Source movement is,
in some ways like the Free Software movement,
except that they don't talk about freedom
as,
an important thing for, in its...
as an important value in itself.
They don't talk about
"What can we do to have a good way of life?",
they talk about *purely practical* advantages,
such as
"how to have powerful reliable software".
I think the reason is that their strategy is to try to appeal to businessmen.
And they think,
their theory is that businessmen
have contempt for freedom and have contempt for
a way of life, kind of society; they don't care about *anything*
except practical convenience and profit.
And so it figure, to convince the businessmen we better talk in their language.
Problem is, they're not just talking to businessmen in that language, they're talking to everybody in that language.
And so they're not talking about
the deeper issues at all.
So that's where the Free Software movement differs
from the Open Source movement.
We
focus on these deeper issues as the overall reason for this whole thing.
But the Open Source movement
a, the arguments that they offer,
are
good arguments, as far as they go,
but they leave out the most important points,
and it's
very dangerous for our future if we forget them and if we don't teach them
to the new users
coming into our community.
So I ask you, if you,
if you agree with me,
to please
indicate your support for the Free Software movement
by using the term "free software",
rather than the term "open source", these are essentially ways you can wear a badge to say which group you're in.
If you support
the people who care about freedom as well as practical convenience,
*indicate* that you stand with us.
So,
if
you don't have freedom number three,
then this,
that causes practical material harm, because this
phenomenon of improving the software can't happen.
But,
in addition it causes psycho-social harm,
which affects the spirit of scientific cooperation,
which used to be so strong that scientists would cooperate even when their countries were at war.
I read that,
US marines, landing on an island in the pacific ocean,
during world war two,
found a building,
with a note on it.
The note was to them.
It said "This is a marine biology lab.
We have put our specimens and our notes in order,
so that American scientists
can take over our work."
It was written by Japanese scientists,
who were working to advance human knowledge
and they didn't want their work to be lost to humanity;
it didn't matter who was going to finish it, the important thing was for it to get finished.
But nowadays, it seems,
that every little group of scientists and engineers
is at *war*
with every other little group, like a bunch of gangs fighting each other.
And I don't see why we should tolerate that to continue.
So those are the
the three crucial freedoms and the reasons why they're important.
If a p...
If you, a particular user, have these freedoms, for a certain program,
then the program is free software for you.
The reason I define it that way
is because,
sometimes,
a program can be free software for some users,
and *not* free for other users.
Now that might seem strange so let me show you with an example how it happens.
The
X Window System
was
developed at MIT,
and released
under terms which made it free software. So if you got X
from MIT
you got these three freedoms,
and it was free software for you.
But among those who got the software from MIT were a bunch of computer companies
that
dist... that
distributed Unix systems for their computers.
They made the comparatively small changes in X,
now probably just a few thousand lines here and there,
to get it to run on their systems,
and then,
they put it into their Unix system,
just the binary.
with the same no[n-free licence]
as all the rest of Unix.
And then, hundreds of thousands, maybe millions of users
got their copies along with Unix.
And those users got
no more freedom for X than they got for Unix.
And this is what produced the paradoxical situation where,
if you ask the question,
"Is X free software or not?"
the answer would depend on where you made the measurement.
If you made the measurement coming out of the developers' group,
you'd say "Yes, I see all the necessary freedoms;
it's free software.".
But if you looked at the users,
you'd have to say
"On the *average*, the typical user does *not* have these freedoms;
it's *not* free software.".
This happened because
the computer manufacturers were *allowed*
to pass along the software stripping away the freedom
For the developers of X, they didn't consider this a problem.
Their goal was to have a big success.
And they *had* a big success, the got hundreds of thousands, maybe millions of people
using their software,
they set a de facto standard,
they felt "we had a big success".
My goal was different.
I was trying to create a community
in which people had freedom.
And,
if the same thing were, that happened to X,
were to happen to the GNU software,
I would say it's a failure.
Because if, because the users don't have the freedom.
So I looked for a way I could prevent that from happening,
and the way I've developed is called "copyleft".
The idea of copyleft is,
you can think of it as taking copyright and flipping it over.
We say, first,
"This program is copyrighted."
Which, legally, means you're not allowed to copy or distribute it at all.
But then we say
"You *can* distribute it,
you *can* modify it,
you *can* distribute extended versions,
combinations of this and other things,
*but*, there *is* a condition:
Whenever you distribute any such thing,
you have to do it under *these* conditions, no more and no less."
Which means,
that you have to pass along
to the people who get it from you,
the *same* freedoms that you got from me.
And, so, everywhere that the software goes, the freedom goes with it.
Everyone who gets the software gets freedom also.
In effect,
we have made these freedoms into *inalienable rights*
of all citizens.
Unfortunately not for *all* software that's published,
just for *our* software.
But that least that's,
at least that's a step, and it's the most that we can do on our own.
The specific form of copyleft,
the specific implementation,
that we use for most GNU software,
is called
the
"GNU General Public License".
It's a
little program,
written in legalbol,
[laughter]
which,
[laughter]
which you can drop into your program in order to make your program copylefted.
We also have a couple of other kinds of copyleft licenses,
that