Richard
Stallman On FOSS GNU And Freedom
A
transcript of a video of a talk believed given in India, in the later
part of 2009.
Original Video (In 14 parts, each approximately 10 minutes duration) -
http://www.youtube.com/watch?v=E6LsfnBmdnk&feature=PlayList&p=C2233C191A464B26&index=0
This
is not a technical talk, the subject I am talking about is not
technical, it is social, political and ethical. The issue is, what
should the rules of society be for using software?
Software
Rules OK?
Most
of the time when people raise this question, they work for software
companies, so they raise it in a self-serving way, they ask what
rules can we impose on everyone else to make them pay us a lot of
money? I am sure you are familiar with the answer they get.
I
had the good fortune, in the seventies, to be part of a community of
programmers who shared software. And because of that experience, I
was able to look at this question from a different direction, to ask
"'What rules make for a good society, that is good for everyone
to live in?"
So
I reached a completely different answer, and that answer is the basis
of the free software movement.
But
I should start by saying a little bit about this community. It
included programmes at some of the best universities, and even
programmers in computer companies sometimes participated. And sharing
our software was our way of life. If anyone ever refused to share, it
was weird and strange.
That
hardly ever happened. The lab where I worked was in a way the deepest
central part of this community, because in that lab all the software
we used was the community's software, because the programmers in our
lab, the Artificial Intelligence lab at MIT - programmers who called
themselves "hackers" - had developed a time sharing system
themselves, and I joined that team when I began working there.
To
be a "hacker" meant to enjoy the spirit of playful
cleverness. So when these people were doing their job, developing the
time sharing system, they were also having fun, employing their
intelligence cleverly.
So
that enjoyment is what they meant when they said they were
hackers - when we said that we were hackers.
So
in this community, we were completely living in freedom. All the
software that we used, we had the source code for. We could study it,
we could change it, we were - if you asked for a copy - we were
delighted that you were interested. Of course we were glad to give
you a copy. In this community, if you walked past another hacker's
screen, and saw something strange or different, you'd say "Hey!
What's that?" And he'd say "Oh, that's the new foobar
program we just got from Stanford, and it's in the foobar directory".
So
at that point you could go to the foobar directory and you could see
the executable that you could run, and also the source code that you
could read, and study, to learn how they solved those problems.
If
you used the program, you'd probably, occasionally, run into bugs,
and you might have ideas for new features, or different features, so
you could go to the source code and fix the bugs, and add more
features. You could make any change you could think of.
People
would sometimes tell you "Please make your own copy and change
that". And you could also cut a piece of it out, and put it into
some other program that you were working on. We called that
"cannibalising" the old program, which was a joke, because
when you cannibalise a machine for spare parts, that machine doesn't
work any more. But when you cannibalise a program you're copying
part of it so it's not broken, it still runs just the same.
So
you could use this foobar program, not just by running it, but in
all the various ways it might potentially be useful. You could study
it, you could change it, you could adapt it, you could learn from it
and copy from it.
So,
the software developed in our community was part of human knowledge.
The incompatible time sharing system that we used, was part of human
knowledge, available to anyone who wanted to learn from it. And
because of that, I was able to feel very proud of the work I was
doing. I was not merely helping one group of people beat out another
group of people. I was working for everyone. I was on everybody's
side. And that is something I can feel very proud of doing.
However,
eventually we got a taste of what life was like for most computer
users. The ones who were not part of a community like ours.
Bearing
Gifts
This
happened when Xerox gave MIT a laser printer. This laser printer was
a handsome gift because it was the first time anyone outside Xerox
ever had a laser printer. It was the first generation. It was
actually a high speed office copier that had been modified internally
to turn it into a printer. In some ways it was very good. It printed
a page a second, it had high resolution, straight lines came out
sharp and straight, but it also got frequent paper jams.
As
a copier, it would have had somebody standing nearby, so when it got
jammed the person would have fixed it. But as a printer, it was off
by itself. Often nobody went there for an hour and it could stay
jammed for an hour. It was a substantial practical problem.
And
as soon as we recognised this was a frequent problem, we had an idea
for how to solve it. We thought we could use the same method that we
used for the old printer, the previous printer. That was slow,
and low resolution and tended to make straight lines come out a bit
wavy. And also got paper jams.
Since
we were programmers not printer designers, we couldn't make that
printer any faster or any higher resolution, or make it not have
paper jams. But we were able to change the software that ran the
printer, to compensate, for the paper jams at least.
You
see I added a feature to the program that controlled the printer, so
that every time the printer got jammed, the system displayed a
message on the screen for those users who were waiting for printing
right then, saying 'The printer is jammed, go fix it!' Now, if you
got that message, you were not going to take the risk of assuming
someone else would fix it. Because you knew that only a few people
were waiting for printing, and only those people were getting the
message.
So
you would go to the printer right away. As a result, although the
printer still jammed occasionally, a minute later, two or three
people would come and fix it. In effect, we treated the user as part
of the system, and we added "end to end" feedback, and we
got reliable operation from the system as a whole, even though the
printer itself was still unreliable.
Well,
that was a good solution, so we thought of using it for the new
printer. But there we ran into a stone wall. You see we were able to
use this approach for the old printer because it was controlled by a
free program, part of a community software. We had the source code,
we could make changes in it, to do anything we wanted, limited only
by our skill as programmers.
The
new printer was controlled by a proprietary Xerox program. We did not
have the source code, and that meant that we were completely
helpless. It didn't matter how skilled we were, we couldn't do
anything to it. We were prisoners of our software.
And
the result of that was constant frustration. You would type the
command to print a file and then you would go back to work, because
you know it would be foolish to expect it to be printed soon. A while
later you'd notice the time. "'Oh! it's been half an hour. Well,
I can't be sure it's been printed yet, and I don't desperately need
it so I'll go back to work". A while later you'd notice the
time. "Oh! it's been a whole hour. Maybe it's printed now?"
So you walk upstairs to the printer and you see - it's been jammed
the whole time.
So
you fix it and you go back to work, and you - in a while later you
notice the time "Oh! it's been a half hour, maybe its printed
now?" So you walk upstairs to the printer and you see it printed
200 pages of other people's stuff - three and a half minutes for
this fast printer - and jammed again.
And
at that point you'd say, "I'm going to stand here and fix this
damned thing every time it jams, until I get my output".
Constant frustration. It wasn't supposed to work that way, but that's
the way it did work.
And
what made it even more galling was to realise that we could have
solved the problem, except that somebody in Zerox was deliberately
standing in our way. Deliberately keeping us helpless, by giving us
only the binary of that program. Eventually, I heard that somebody at
Carnegie Mellon university had a copy of that source code.
[end
of video part 1]
Later
on, I was in the area so I went to his office and I said "Hi!
I'm from MIT. Could I have a copy of the printer program source
code?" And he said "No, I promised not to give you a copy".
And I was stunned as well as angry. I hadn't expected a response like
that.
And
I couldn't think of a way to express my anger that would do justice
to it. All I could think of at that moment was to walk out of his
room without saying one more word to him.
Promise,
promises
Maybe
because of that, I kept thinking about it for a long time afterwards.
You see, his refusal to cooperate with us, his colleagues at MIT, was
very bad for the users at the Artificial Intelligence Lab because we
never got a copy of that source code, and we were never able to fix
the problem.
And
that printer remained a frustration to use for all the years we kept
using it. But indirectly, it was very good for me, because it taught
me an important lesson. Important because most programmers never
learn it.
You
see, he had promised to refuse to help us, his colleagues at MIT. But
he didn't just do that to us. I'm pretty sure he did that to you too
[pointing]. I expect he did that to you as well [pointing]. And I
think you also, most likely [pointing]. And probably you, too
[pointing]. In fact, he probably refused to help just about each of
you in this room, the exceptions being maybe some who weren't born
yet at the time, so you weren't included.
Because
he had promised to deny his cooperation to just about the entire
population of planet earth. He had signed a "Non Disclosure
agreement". This was my first, personal encounter with a Non
Disclosure agreement. I was the victim. I, and my whole lab, were the
victims. And the lesson I learned was that Non Disclosure agreements
have victims. They are not harmless. They are not innocent.
You
are actually promising to betray most of humanity. It's like signing
a blank cheque of betrayal. "I promise I will not help (blank)
if he or she wants my help". And this "blank" gets
filled in later, by circumstances. Perhaps with the name of a
stranger. Perhaps with the name of your brother. You don't know who
you're betraying. But you should know that you are betraying a lot of
people.
Most
programmers, don't learn this lesson. Because most programmers and
most computer users, in fact, first encounter a Non Disclosure
agreement when they are invited to sign one. And there's always some
sort of temptation that you are going to get if you sign. So, they
make up excuses to close their eyes to the ethics of what they are
doing.
They
say "he will [pointing] never get a copy anyway, so what
difference does it make if I join a conspiracy to deprive him?"
They say "This is the way things are done. Who am I to question
it?" They say "If I don't do this, somebody else will".
Various excuses to gag their consciences. But, when somebody asked
me to sign a Non disclosure agreement, my conscience was already
sensitised, and it would not be gagged.
I
could not forget how angry I was when somebody else had betrayed me
and my whole lab, and refused to cooperate with us. And I couldn't
turn around and do the same thing to somebody else who probably
didn't deserve it any more than we did. So I said "Thank you for
offering me this nice software package, but I cannot accept it in
good conscience on the conditions you have set. So, I will do without
it, no thanks".
And
I have never knowingly signed a Non Disclosure agreement for
generally useful information such as software. I make that limitation
because there are other kinds of information which raise different
ethical issues.
For
instance there is personal information. A completely different issue.
I've been talking about programs which in some sense are being
published. Personal information is a totally different question. If
you [pointing] want to talk with me about what is going on between
you and your sweetheart, and would I "Please not tell anybody?"
I could say yes to that. Because that's not generally useful
technical information. At least it probably isn't. Now, I could
imagine that you might disclose to me a wonderful new sex technique,
and I might then feel a moral duty to pass this on to the rest of
humanity, people who might have a chance to use it.
But,
if it were just a matter of details, personal details, who hurt
whose feelings, how, and what that one did in return and so on, those
details of your life are things that other people don't need to know
in order to live their lives. So it's ok for me to keep that private
for you.
But
when it comes to the stuff of science and technology, the mission of
these fields is to develop useful information for humanity. If we
withhold it instead, we are betraying the mission of our fields, and
after some years of consideration, I concluded that that was wrong -
that nobody should do it, and in particular, that I should not
do it.
Wipe
out!
But
during those same years, a series of blows fell on my community, and
ended up wiping it out. Perhaps the final blow was when Digital
discontinued making the PDP10 computer. You see, the incompatible
time sharing system - we started in the 1960s, so of course we wrote
it in assembler language. The assembler language for the PDP10.
So
when the PDP10 was discontinued, 15 years of our work turned into
dust and blew away. Now as you can imagine, that's a heavy blow in
itself, but the consequences in this case were even worse. Because
all the operating systems for modern computers that you could get at
that time, were proprietary. In fact you had to sign a Non Disclosure
agreement even to get the executable form.
And
the result of this was to put me into a moral dilemma. And every
other computer user too. You see I couldn't continue working in my
field of operating system development in the way I had been doing it
because that depended on having a community of people to work with
and a body of free software to use and improve. Both of them were
gone now. The community was dissolved and the software was obsolete.
So
what was I going to do? The most obvious alternative, the one most
people would have suggested to me, was to accept that the world had
changed and adapt myself to it. To be Shaw's Reasonable Man. This
would have meant using non free software, signing Non Disclosure
agreements, and probably MIT would have had me developing non free
software.
I
thought about that and realised that that way I could have fun
programming and make money. At the end I would look back and say I
have spent my career building walls to divide people. And I would be
ashamed of everything I had done.
So
I looked for some other possibility, and it wasn't hard to find one.
I could leave the programming field and do something else. Many
programmers seem to find that unthinkable. They say "If I don't
do this, this, and this, to get a programming job, I'll starve".
[end
of video part 2]
They
literally claim that they will starve. Now even in India there are
millions of people who don't work as programmers and are not
starving. So I think that they are exaggerating somewhat. Now, I have
- I had - no other noteworthy skills. But I'm sure I could have been
a waiter. Perhaps not at a fine restaurant, but I could have been a
waiter somewhere.
Now
there are two things to note about being a waiter. One is, being a
waiter is not unethical. Unless perhaps you are at MacDonalds. And
second, as a waiter, you are not going to starve...... Unless,
perhaps it's at MacDonalds. Please be aware that the popularity of
MacDonalds is due to a confusion on the part of poorly educated
Americans. They heard the term "fast food" and they thought
it meant rapid food. They didn't realise it meant food for not
eating. But that's exactly what it's meant for. The idea is that if
you are fasting but you're getting hungry, and you are feeling a pull
to eat something, you imagine that MacDonalds food and you loose your
appetite, and that way you can complete your fast! So now if anyone
ever suggests to you that you should eat at MacDonalds you understand
how to explain why that is a mistake.
So,
I had found an ethical way to cope with the situation I was in. And
that makes a difference, because, you can justify doing things that
are unethical to a certain point, if it is the only way you can
survive.
If
it's not as bad as your death, then you can argue that its justified.
But I couldn't make that argument because I had found another way I
could survive at least. So I couldn't say "Its better for me to
develop non free software than to die". I could live anyway,
without developing non free software.
But
I realised that for me, being a waiter would be no fun at all. And it
would be a waste of my skill as an operating system developer. It's
better to waste a skill than to misuse it. So this was a step up.
Developing non free software would be misusing the skill, it would be
negative. Wasting the skill would be zero. That's a step up, but it's
still not good.
So
for these two reasons I asked myself "What could an operating
developer do that would be positive, that would make the world a
better place?"
Your
call?
And
I realised that operating system development was exactly the skill
that was needed to make the world a better place. The moral dilemma
that existed both for me and for all computer users was because all
the operating systems for modern computers were proprietary.
By
developing another operating system and then telling people - "This
you are free to share, free to use in a community" - we could
create a way out of the moral dilemma, for everyone. And I realised
that this was probably the most important task that I would ever have
a chance to try to do in my whole life.
And
I concluded that I had been elected by circumstances to do the job.
It's as if you saw somebody drowning, and you know how to swim, and
it's not Bush, then you have a moral duty to save the person. Well, I
don't know how to swim, but I do know how to write software, and in
this case, writing software was the work that was necessary.
I
was aware of this problem, and nobody else was paying attention to
it. I had the skills necessary to try to solve the problem, and as
far as I could see, nobody else would try to solve it if I did not.
So
I decided that I would develop a free software operating system, or
die trying. Presumably of old age, because at the time, free software
had no enemies, there was nobody actively trying to stop us from
developing a free operating system, it was just a big job.
So
big that many people looked at it and said "Yes, I wish it were
done, but I won't try because it is such a big job". I decided
to try anyway. Because this was the only way to live an upright life
and to have freedom.
That
decision led me to a bunch of other decisions, technical design
decisions - what kind of system should it be? Well, I had just seen
one free operating system turn into dust and blow away, because it
was written for one particular kind of computer, which became
obsolete.
I
didn't want to write another system and have the same thing happen.
So I figured this system that I was going to write had better be
portable. It better be capable of running on many different kinds of
computers, because I didn't know what kind of computer people would
be using in five years or ten years.
There
was just one successful, portable, operating system at the time and
that was Unix. In addition, Unix had some good ideas by the standards
of the day, for instance it had "pipes", and redirection of
input and output, and shell programming that was powerful and
convenient. And the fork and exec system calls that were simple
enough people really used them.
So
I decided to follow the design of Unix, figuring that way there was a
pretty good chance I could succeed in making a system that would work
portably. Further, I realised that users don't like incompatible
changes. I could have picked the best ideas I had seen in the various
systems I had worked on and added my own favourite ideas and designed
my dream operating system, but then it would have been incompatible
with everything, and I knew the users would say "This is very
nice but its incompatible, we've already taught our users to use
Unix, we've written our software for Unix. To switch to your system
would just be too much work. So no thank you".
At
that point I would have had a ready made excuse. I could have said "I
offered them freedom, they didn't take it, it's their fault".
But
I wanted to make more than just an excuse, I wanted to build a
community that would actually have people living in it and enjoying
the benefits of liberty. To do that I had to write a system that
people would actually use. Being compatible with some popular system
would help this very much.
So
I decided to make the system compatible with Unix. Upward compatible
that is. The features that people were using on Unix would have to
work the same way on this system. But we could add new features. We
could add anything we wanted to, any new ideas we had, we could add.
But the old things would have to keep working.
A
rose, by another name
Now
Unix consists of many components, that communicate through interfaces
that were more or less documented. To be compatible with Unix you
have to replace each component one by one in a compatible way, so
that they still use the same interfaces. The users also use those
interfaces. And that meant that the initial design decisions were
already decided by that one decision to be compatible with Unix. And
that was convenient.
The
only other decision necessary before I could start work, was to
choose a name. Now we hackers, because we are working in the spirit
of playful cleverness - we like to pick funny or even mischievous and
naughty names for our programmes.
[end
of video part 3]
The
thought of the users laughing at the name is half the fun of writing
a program. And figuring out how to solve the problems is the other
half of the fun.
And
there was a hacker tradition, that when you were writing a program
that's compatible with some existing program, you can give your new
program a name, that's a "recursive acronym", whose meaning
is that "This program is not the other one......."
For
instance, in 1975, I developed the original EMACS text editor, an
extensible, programmable text editor. You can reprogram it while
you're using it. And people liked this so they started making
imitations of it for different systems. And some of them were called
"(something or other) EMACS", but one was called "Fine",
for "Fine Is Not EMACS", and there was "Sign",
for "Sign Is Not EMACS", and "Einer", for "Einer
Is Not EMACS". And "Mince", for "Mince Is Not
Complete EMACS".
The
Einer was mostly rewritten and version two was called "Zwei",
for "Zwei Was Einer Initially". So, you see, you can have
a lot of fun with recursive acronyms. Programmers in general tend to
find recursive humour funny.
So
I looked for a recursive acronym for "(something) is not Unix".
But the problem is that I couldn't find any English words ending in
"inu". And if it doesn't have some other meaning, it's not
funny!
So,
I had to look for some other way to do it. The first thing I thought
of, because my brain wasn't at its most creative right then, was,
make a contraction, then I could try a three letter recursive
acronym.
So
I started trying letters - Anu, Bnu, Cnu, Dnu, Enu, Fnu, Gnu........
Well, Gnu is the funniest word in the English language, used for more
wordplay than anything else. There's even a funny song, inspired by
the word "Gnu". The reason why this word is used for so
much wordplay is, according to the dictionary, it is pronounced
"noo".
So
people started asking each other as a joke "Hey, what's gnu?"
Instead of "Hey, what's new?" That was probably before I
was born, in any case it was long before the GNU operating system.
So, that's the explanation for the humour.
But
when it's the name of our operating system, please disregard the
dictionary, please pronounce a hard "g" - say "GNU".
If you talk about the "Noo" operating system you'll get
people confused, because we've been working on it for twenty years
now, so it's not "new" any more....... but it still is and
always will be "GNU" no matter how many people call it
"Linux" by mistake.
So
I had a name, I could start work, but there was something I had to do
first. On January 5th 1984, I quit my job at MIT, to start developing
pieces of the GNU system. I had to quit my job because had I remained
an MIT employee, MIT could have claimed to own the software I was
writing, and could have turned it into proprietary software products,
and since MIT had done that kind of thing already, I could hardly
assume it would not happen again.
I
didn't want to get MIT's approval for all the details of how to
release the software. So, I took MIT out of the equation, by quitting
my job.
Breakout
Although
I had quit my job, the head of the AI lab was nice enough to let me
keep using the facilities. I walked in and he said "Do you still
want to quit?" and I said "Yes". And he said "
Do you want to keep your key?" I hadn't thought about the
possibility so I thought for a minute and said "OK". So I
began using a Unix machine at the AI lab to start developing pieces
of the GNU system.
Because
you have to write them - these pieces - one by one.
That
was the first time I ever really used Unix. I was not a Unix wizard,
I was not a Unix fan, the way some other people were at the time. I
made the decision to follow the design of Unix for exactly the
reasoning that I told you. And at this point I actually got to see
what using Unix was like. And I saw some flaws, but I concluded that
they were not disastrous, that it was still a good decision to follow
the design of Unix.
Now,
at the time, I thought that I,
and the other people helping, because I had made an announcement on
the internet asking people to join in, that we would write all these
pieces, and when we had an entire system running, then we
would invite people to use it.
But
that's not what happened. Because, in September 1984, I started
developing GNU EMACS which was my second implementation of the
extensible text editor, and by early '85 it was working well enough
that I could use it for all my editing. That was a big relief because
I had absolutely no intention of learning to use "vi". So
until that point, I did my editing on some other computer where there
was an EMACS and then copied the files through the net to the
Unix machine to test them.
But
once GNU EMACS was running, I could do my editing on the Unix
machine which was more convenient. But since GNU EMACS was good
enough for my editing, it was good enough for a bunch of other people
too.
People
started asking me for copies of GNU EMACS so that they could run it
on their Unix machines. You see there was no GNU system yet, there
were just a few pieces, so they could not possibly run the GNU
system. But they could take this piece of it and run it on another
system, and they wanted to do that.
Which
meant that I had to address the specific, detailed questions of how
to distribute these pieces of the GNU system, which we also called
"GNU packages". Of course, I put a copy in the FTP server
directory, and that way, people on the internet could get copies.
But
in 1985, even in the US, most programmers were not on the internet
and some of them were asking me for copies anyway. So the question
was, how would I respond? They asked me to send them copies on
magnetic tapes, and it takes work to write these tapes. So, I could
have said to them "I want to spend my time writing more pieces
of the GNU system, not writing tapes to mail to people, so please
find a friend who is connected to the net who can download it and put
it on tape for you".
But,
I had no job. And in fact I've never had a job since twenty years
ago, and I was looking for some way to make money through my work on
free software. So I said "Send me 150 dollars and I will mail
you a tape with GNU EMACS on it". And of course, 150 dollars is
a lot more than it would actually cost to buy the tape and write it
and mail it. So I would have made a considerable amount of money out
of that amount.
And
the orders began dribbling in. By the middle of the year they were
trickling in, and I was getting eight to ten orders a month, which,
if necessary, I could have lived on. So I had an adequate free
software business going. Just about a year and a half after I started
this.
Money
is the root
It's
easier to make a living from free software if you don't demand to
live in a very luxurious fashion. Now most Americans, if they start
making this much (hand gesture) money, they look for a way to spend
this much (bigger hand gesture) money.
[
end of video 4 ]
I
don't understand them. Maybe people here are a bit smarter than that.
But, you know, they start buying houses, and cars, and boats, and
aeroplanes, and artwork and rare stamps, and adventure travel, and
children [audience laughter]. And all sorts of expensive luxuries.
And once they buy these things they have to spend more money to keep
- for a lot of them - to keep them up.
And
the result is, that they have - they have to spend all of their time
desperately trying to get as much money as they can, and they have no
time to enjoy any of these things. Which is especially sad when it's
a matter of children. And, you know, the other things can get
repossessed, but they can't un-give birth to the children.
So
it leads to a lot of misery, actually. But if you you can resist the
feeling that you need such expensive lifestyles then you can avoid
being a puppet of money and you can decide what you are going to do
with your life and do something that matters to you.
The
less money you need, the easier it is to get, and the smaller part of
your life that has to be. And the rest of your life can be available
for something that matters. So I'm very glad that I've always tried
to avoid expensive habits.
But
people used to ask me "What do you mean it's free software if it
costs 150 dollars? Isn't that a contradiction". Well, it sounds
like one, because the word "free" in English has multiple
meanings. One meaning is zero price. And another meaning refers to
freedom.
When
we speak of "Free Software" we're talking about freedom,
not price. So think of free speech, not free beer. Some of the users
got their copies of GNU EMACS from me, through the net, and they did
not pay me anything. Some got their copies from me on a tape, and
they paid me. Others got their copies not from me, but from somebody
else who already had a copy. Maybe they paid that somebody else, but
they didn't pay me. I don't know if they paid the somebody else
because that matter was between them. Nobody had to tell me anything
about it.
So
GNU EMACS was gratis - for some users, and paid for, for some users.
But it was Free Software for all the users, because all of them had
the crucial freedoms that every computer user should have.
Freedom
is the way
So
at this point I should tell you the rough definition of Free
Software. Free Software is defined in terms of freedom for the user.
A
program is Free Software for you [points] if you have four essential
freedoms.
Freedom
"zero" is the freedom to run the program for any purpose in
any manner.
Freedom
"one" is the freedom to help yourself, by studying the
source code to see how it works and what it does, and changing it to
do what you want.
Freedom
"two" is the freedom to help your neighbour, by
distributing copies to others. And
Freedom
"three" is the freedom to help build your community by
publishing an improved version, or a modified version, so that
others can get the benefit of your
contribution.
I
made that correction - "a modified version" because people
can disagree about what's better. Your modified version may be better
for you and better for some people, while others might prefer the
original. So they have the choice. All four of these freedoms are
essential.
Sometimes
people call them "levels" of freedom, but that's a mistake,
it implies that, you know, the more levels you've got the better it
is. Actually they're all
necessary. If any of them is missing, if any of them is denied to
you, then the program is not
Free Software, and shouldn't be used.
But
why these
particular freedoms? How did I reach this conclusion, that this was
the right definition to use? How do you decide where to draw the
line?
These
are the freedoms that are necessary for computer users to form a
community where they can freely cooperate with each other when they
choose, and be in control of their own computer use.
For
those goals, these are the freedoms you must have.
Freedom
zero is pretty obvious. In fact most software gives you freedom zero.
There are programs
that are particularly nasty and restrictive, and don't give you
freedom zero. But those are pretty much an exception even today. So
what distinguishes Free Software from typical software is freedoms
one, two and three.
Freedom
two is the freedom that permits you to live an upright life. It's
necessary for basic moral reasons. If you don't have freedom two,
then as soon as your friend comes by and says "that's nice can I
have a copy?" you are in a moral dilemma. You have to choose
between two evils.
One
evil is, break the agreement you made and help your friend, and the
other evil is, comply with the agreement you made but be a bad
neighbour. So you have to choose the lesser of these two evils.
And
the lesser of the two evils is to violate the agreement and help your
friend, because your friend presumably deserves to be treated well,
whereas whoever imposed an agreement like this on you, trying to
divide you from your friend, does not deserve what he wants.
So
that's the lesser evil, but it is still an evil. And if you recognise
this, if you recognise that starting to use this program which
doesn't give you freedom number two, will lead you eventually to a
choice between two evils, you really should refuse to go down that
path at all. You should say "No I don't want to use this
program" because if you insist on having free software, then
when your friend comes and says "Could I have a copy?" you
don't have to choose between two evils. You can openly make a copy
for your friend and you're not violating any agreement you made
because you refused to make such an evil agreement.
If
you don't have freedom two, the program pollutes society's most
important resource, which is the spirit of good will. The willingness
and the - habit - of helping other people [wide hand gestures].
Of
course we don't expect anybody to spend 100 per cent of the time
helping other people because you have to take care of your own needs
as well. I wouldn't ask anybody to ignore completely his own needs
and pay attention only to other people. So - if you are female and
you have been taught that, I hope you can un learn it.
But
everyone should be paying a certain amount of attention to helping
other people. And we - in society, this particular aspect of human
nature is present in various people to varying amounts but society by
what it teaches people can increase it or reduce it.
Getting
what you deserve
If
we tell people that life is nothing but selfishness, and everybody is
always selfish, and you're a fool if you're not selfish, then the
amount of willingness to help others will go down. This will happen
less often, it will be a smaller part of society. And that means that
this resource, the level of this resource, the spirit of goodwill,
becomes less.
But
if we teach people the habit, especially when - starting when
they're children, of helping other people, when they can, then the
level of goodwill in society goes up. And even if it only goes up a
little bit, it still makes society a much better place to live.
[end
of video 5 ]
It's
no coincidence that the world's major religions at least most of
them, have been encouraging the spirit of goodwill towards other
people for thousands of years. Because that makes for a better
society for everyone. Even if you only influence people to do it a
little more.
So,
what does it mean, when powerful social institutions start telling
people that you're not supposed to share, that it's wrong to share?
They are poisoning this vital resource. Something that society cannot
afford.
And
what does it mean when they say "If you give a friend a copy of
a program, you are a pirate"? They are saying that helping your
neighbour is the modern equivalent of attacking a ship. That's what
pirates do, they attack ships. That is morality backwards. Because
attacking a ship is very very bad.
But
sharing with other people is good. And what does it mean when they
start making harsh punishments for people who share with their
neighbour?
How
much fear do you think it's going to take before everyone is so
scared that they never help each other any more? And do you want that
level of fear to be introduced into your society?
In
Argentina and in Germany, they have even taken this to the point
which I can only call a terror campaign. They have threatened people
with being raped in prison if they use unauthorised copies of
software. Which shows just how far they are willing to go in
barbarity, to get their way, to impose their power on the rest of
society. I think we should reject their terror campaign and put an
end to it.
And
that is the basic idea of the free software movement. That's the
explanation for Freedom Number Two, the freedom to help your
neighbour by distributing copies to others.
Freedom
One, the freedom to help yourself, by studying the source code and
changing it to do what you want, that's necessary for a different
reason. That's so that you can have freedom individually, in running
the program on your computer. You see if you have this freedom, then
you control what the program does. If you don't have this
freedom then you don't control it. The developer controls it, and the
developer does have power over you, when you are using that program.
The
developer controls - what happens when you run that program, you
don't. So in order for you to have this basic freedom to control your
own computer, you must have Freedom One.
A
little bird told me....
There
are quite a number of non free programs that contain malicious
features, features deliberately introduced, not to make the program
serve you, but rather to spy on you, restrict you, control you or
interfere with you. For instance a program as common as Windows XP
spies on the user.
It's
not the first version of Microsoft Windows to do that. Several years
ago, Microsoft set up Windows so that it would mail to Microsoft a
list of what's installed on your disc. There was an outcry about this
and they took the feature out. And then a few years later they snuck
it back in, and to make it hard to spot, they had it send the
information encrypted so that you couldn't tell what was going on
just by looking at the network traffic. People had to do some work,
rather cleverly, to figure out that Windows XP, when ever it asks for
an upgrade, reports first, exactly what is installed on your disc.
But
Windows is not the only program that spies on you because Windows
Media Player also does. Every time you look at something with Windows
Media Player, it reports who you are and what you're looking at.
Spying on you all the time.
But
lest you think this practice is limited only to Microsoft, RealPlayer
also spies on you the same way, and the Tivo spies on you the same
way. People were excited a few years ago because the Tivo uses a lot
of free software, but it also has non free software in it. And it
spies on you.
This
is not the function you are looking for
Spying
is not the worst that it gets. There are many programs that are
designed to stop you from doing some of the things that they are
designed to do. These features are often referred to as "DRM"
Digital Restrictions Management.
You
know, that the program is designed for accessing certain kinds of
documents or files but refuses to let you do it. It may be a
DVD player and says "Sorry pal you live in the wrong part of the
world, I won't let you play this DVD". That's one example.
But
the restrictions can become very complicated and atrocious. It's not
limited to that. Some non free programs change your computer set up
so it will display ads for you all the time, from then on. And they
don't tell you this. They figure you won't know where it came from.
And some of them go even - get even more bizarre.
For
instance the Kazaa music sharing software is designed so that they
can sell time on your computer, as part of a distributed
computing scheme. And they never told the users that the program
would do this.
But
when it was found out, they pointed at their end user licence which
basically said that they could do almost anything in the world, and
said "You see the user has already said "yes" to
this". Not specifically, though. That's the way they act.
They
put in malicious features and then they say "Read the fine
print, you said we could put in any malicious feature we want".
When
Windows XP asks for an upgrade, the upgrade server could,
theoretically, give you a different upgrade to what it gives to
everybody else. So even if Windows doesn't contain a back door in the
strict sense of the term, the upgrade server could be used to
introduce one into your machine at any time. Or introduce anything at
all into your machine.
When
you use non free software, specifically when you don't have Freedom
One, you are forced to put blind faith in the developer of the
program, and as you see, some of them clearly don't deserve
it.
Now
I won't say that all developers of non free software introduce
malicious features deliberately, some don't. But they're all human,
so they all make mistakes. We free software developers make mistakes
too. But the difference is, when you don't have Freedom One, you
can't fix their mistakes.
You
are the helpless prisoner of their decisions and their - all their
detailed choices, whether its a mistake in choice of features or just
a foolish silly error that we all make, you're stuck with it, you're
helpless, you're a prisoner of your software.
But
when you do have Freedom One, you can correct any mistake that
I make. You're in control of the program when its
running on your machine and you can make it do what you want.
But Freedom One is not enough.
Freedom
One is the freedom to personally take control of what the
software is doing on your computer, but it's not enough, because
first of all there are millions of users that don't know how to
program. And they can't personally take advantage of Freedom One.
Good
connections
But
even for us programmers, Freedom One is not enough, because there is
too much [wide hand gesture] software. Nobody has time to study all
of these programs and master them all so as to be able to make the
changes he or she wants in all these programs.
[end
of video part 6]
So
we need more, we need Freedom Three.
Freedom
Three enables us to work together to make the software to do what we
want. It allows any connectivity of users to take control and make
the program do what they want.
Suppose
there are a million users who want a certain program to be different
in a certain way. Maybe ten thousand of these people know how to
program. Just you'd expect, on the average - out of a million people
use computers, ten thousand would know how to program, and maybe ten
of them will decide to implement the change - change the program and
then with Freedom Three they can publish their modified version, and
now all the million users can use the modified version.
So
if a few people who share this desire for a change, do the work,
everyone else can take advantage of it. Once they've published their
modified version, now every user can choose between the original
version and the modified version. And if there are a million people
who want the change, the modified version will now become popular,
and then further changes will be made by various people, starting
from there.
And
this sets up a situation somewhat like biological evolution. If there
are a lot of people wanting the program to develop in this direction,
a lot of changes in this direction will be made. And the program
will make progress in the direction that a lot of people want.
And
if there are a few people who want the program to change in
[another] direction, occasionally a change will be made going in this
[other] direction. So it will make slow progress going in this
[other] direction.
And
if nobody wants to go in that [third] direction, nobody will make
those changes, and it won't go in that direction.
So
the users, by the sum total of their individual decisions, determine
which way the program will be changed. And sometimes they can decide
to make two different versions go in two different directions, if
there are different people wanting different things.
They
can all have what they want, as long as somebody does some work. Even
if you personally don't know how to program, you can still directly
influence the way the program is developed, by paying somebody else
to make changes.
Of
course it's not all that common for individuals to do this but its
quite common for organisations and businesses and governments to do
this.
A
user of the software, an organisational user, decides "We want
the program to be different this way" so they go to a company of
programmers and say "how much will you charge to make this
change for us and when can you have it done?" And if they don't
like that answer they can go to another company and say "What
will you charge, when can you have it done?"
Any
colour you want
Which
shows that free software brings with it a free market, for all kinds
of support, and services. That's in contrast to proprietary software.
With
proprietary, non Free software, support is a monopoly because only
the developer that owns the program has the source code, so only that
developer can possibly make any change in the program. If you want a
change you have to beg, but with free software you can just go out
and pay somebody to do it.
Because
there is a free market for support, those users who consider support
very important, can expect to get better support for your money in
general, if they're using free software.
There
may be a choice of non free programs to do a certain job, but in a
paradoxical way, once you choose one of them, support is still going
to be a monopoly, so you have a choice between different monopolies.
That
may sound strange but if you look at it clearly, that's exactly what
it is. In effect this means you have a way of choosing who is going
to be your master. But choosing your master is not freedom.
So
a choice of non free programs is not good enough. We have to insist
on having a free program to to the job, so we can do it in freedom.
So these are the reasons why these four freedoms are essential.
These
freedoms make it possible for the users to control their own
computing, and give users the freedom to treat each other decently,
to be good to each other.
And
therefore I say that we should all insist that software we use be
Free for us, and we always have these Freedoms.
We
should say "No" to non free software and work actively to
replace it with Free Software, work actively to liberate cyberspace,
liberate all the citizens of cyberspace.
X
marks the spot
Now,
you'll notice I defined the concept of free software in a slightly
complicated way. I said a program is free software for you, a
particular user, if "You" have these freedoms. Why did I
put that complication in?
The
reason is that the same code can be Free Software for some users and
non free for other users.
This
might seem strange so let me give an example to illustrate how it
happens. The biggest example I know of, of this phenomenon, is the
X-windows system, which was developed at MIT in the 1980s and
released by MIT under a licence that gives the user all four of these
freedoms.
So,
as released by MIT, it was Free Software. So, if you got - that
version, it was Free Software for you.
But
among those who got that version were various computer manufacturers
that distributed Unix systems. They took the source code of X. They
made the changes necessary so it would run on their platform, and
then they compiled it to make binaries and they put those binaries
into their Unix system and distributed only the binaries,
under the same Non Disclosure agreement as all the rest of the
binaries in their Unix system.
Millions
of users got copies of the X-windows system in this way, and for
them, it was just as non free as Unix. They had none of these four
freedoms.
This
created a paradoxical situation. If you asked the question "Is
the X-windows system free software or not?" the answer depended
on where you made the measurement.
If
you made the measurement coming out of the developers group you'd
say, "Here I observe all the freedoms, it's Free Software,
here".
But
if you made the measurement among the users, you'd say, "Err..
most of them don't have these freedoms, its not Free Software there".
The
developers of X did not consider this a problem. They were not aiming
to give the users freedom, they were aiming for a big professional
success. As far as they were concerned those millions of users who
had their code but not freedom were part of their success.
But
in the GNU project our goal was specifically, to win Freedom for
computer users. If the same thing that happened to X, and had
happened to other programs earlier, were to happen to the GNU system,
then we would be a failure.
So
I looked for some way to stop that from happening. Something I could
do in advance, to prevent it. And I developed the method that we call
"Copyleft". You can think of it as taking copyright and
flipping it over.
The
reason for this is that it uses copyright law, but uses it to achieve
the exact opposite the usual purpose for which copyright law is used.
Copyright
law is typically used for a right-wing purpose. Namely to keep people
in subjugation and to make them pay a lot of money.
Copyleft,
uses the same law for a left-wing goal, that is to facilitate
cooperation, and equality, and to protect the rights of all
the users.
[end
of video part 7 ]
Anatomy
of freedom
Here's
how it works. We start with a copyright notice that informs the users
that this program is copyrighted. Which by default means it's
forbidden to copy or distribute or modify this program.
But
then we say "You're authorised to copy it, to make copies,
you're authorised to distribute the copies you're authorised to
modify it you're authorised to publish modified or extended
versions".
Now
it looks like we've just gotten rid of everything we did by saying
its copyrighted. But you see, we attach a condition. And the
condition is the reason to go to all this trouble, so that we can
impose this condition.
And
the condition says "Whenever you redistribute this program or
any modified or extended version, that entire thing you distribute,
must be distributed under the same conditions, no more and no less".
Meaning you're not allowed to add any restrictions. You're not
allowed to receive our code with the freedoms, strip off the
freedoms, and pass along just the code.
Whoever
gets it from you, must get from you the same freedom that you got
from us. So the code and the freedom become legally inseparable.
Wherever the code goes the freedom goes. Every user who gets the
code, has Freedom. That's the idea of "copyleft".
Now
copyleft itself is a general idea. To use it you need an
implementation. You need a specific licence written down, particular
words. The copyleft licence used by two thirds of all free software
packages is called the "GNU General Public Licence", or
"GNU GPL" for short.
Once
you've made it clear which GPL you are talking about you might just
say "GPL". But the first time, you should say which one
you mean because there are other GPLs.
For
instance there is the Simputer GPL, the Simputer General Public
Licence, a totally different licence with essentially no resemblance
to ours, so please do say which one you mean, but then you can
shorten it to just "GPL".
Of
course, this is one way to implement copyleft, you could write your
own copyleft licence and occasionally people do, but there's is a big
advantage in using the same one, which is that two programs both
released under the GNU General Public Licence, can be combined. You
can copy code from one into the other.
You
can take a piece of this one and a piece of that one and you can put
them together and add more. So it's very useful to use the same free
software licence for many programs. And the GNU GPL is used I think,
for over two thirds of all free software packages.
But
that still leaves plenty of free software packages that use different
licences, some of which are non copyleft licences.
For
instance, the licence of the X-windows system is an example of a non
copyleft Free Software licence.
The
developers of non copylefted Free Software are doing something good.
They're contributing to our community because they respect your
freedom. They don't take away your freedom.
However,
they could do it better. They could go beyond just respecting your
freedom and actively protect your freedom. That's the idea of
copyleft. So we disagree with them. We say they are not doing the
best possible thing. But still, what they're doing is good. They're
not wrong, they're just - we just disagree with some of their
particular choices.
The
software they develop is free. It can be included in the GNU system
or any other free operating system and we use it. For instance we use
the X-windows system. I wanted to have graphical windowing facilities
in GNU from the very beginning. Unix at the time did not have any
kind of graphical facilities, graphical interfaces but I thought we
needed some.
However,
we never developed a windows system for GNU because before we got
around to doing that, while we were working on other parts of the
system first, we saw X. The X-windows system was not copylefted but
it was free software which was the crucial thing.
And
it was becoming popular, it was powerful , it became a de facto
standard. So I made the decision in the late '80s, "We will not
write our own windows system we will use X". So we put X into
the GNU system and we started making other pieces of GNU work with X.
[end
of video part 8]
Coming
of age
During
the '80s, our task was to develop all the pieces necessary for the
complete GNU system, which we couldn't find already available. Of
course we were constantly looking around for free programs that were
available already, because that could reduce the size of the job we
had to do before we had a running system.
People
were saying "This is a nice idea but it such a big job we don't
think you could ever finish it" . Well I had hope that we could
finish it, but they were right, it was a big job. So we could not
afford the attitude of "Not invented here". We had to be
willing to use any existing program that was free and more or less
adequate for the job. Thus for instance I decided to use the
X-windows system. It wasn't exactly what I would have preferred, but
it was free software and it was adequate.
We
also found some other programs that we could use, but that still left
lots of pieces that nobody else developed. We had to develop them or
recruit someone to develop them. In October 1985, we started the Free
Software Foundation figuring that the popularity of GNU EMACS would
show people that the GNU project really could produce useful
software, that it was not just talk.
Then
maybe they would be willing to give some money. So we started a tax
exempt organisation, people in the US could take a tax deduction if
they gave in order to raise money to promote free software and
specifically to develop parts of GNU.
And
at that point, the Foundation took over from me the business of
selling copies of GNU EMACS, and the orders increased and increased
and for quite a number of years the Foundation was bringing in a
substantial amount of money from that, and we got to the point where
we had several programmers working full time. And they developed some
important parts of the system, including for example the command
interpreter, the shell, that you normally type at, if you're using a
command line interface, and the C library, which is the interface
between all the user mode programs and the kernel.
These
were both components written by staff of the Free Software
Foundation. We also hired in some cases, technical writers to produce
manuals.
But
most of the software was developed by volunteers, and there were
many, many volunteers.
There
were even some full time volunteers. I'm a full time volunteer for
the Foundation because it does not pay me.
You
see when the Foundation first had enough money to hire one person, I,
as the President, had to decide how to spend it. In particular I had
to decide whether the Foundation should pay me a salary - pay
Stallman a salary, or hire a different person.
But
it was my responsibility to spend the money in the most effective way
possible. And I realised that paying Stallman a salary would be like
throwing the money away because we could get Stallman to work for
nothing.
So
it was obviously my duty to hire another person instead. And this
rule continues to this day, the Foundation does not pay me a salary,
I am a full time volunteer.
Do
it! Do it!
This
is important, because I'm asking you to volunteer. And in order to
ask you to do it, I have to do it. I am only asking you to do the
same thing I've been doing for many years. There are other full time
volunteers as well, but most of them are getting paid by somebody, to
do it. They're not getting paid by us so from our point of view they
are volunteers.
But
in fact that's how they make their living. There are also of course,
by now, many thousands of part time volunteers who donate their time,
and are not paid for it at all.
The
interesting thing we have shown in the Free Software Community, is -
that you don't have to assume that developing software requires
money.
Well,
if you want a certain program to be written, this month, very
likely you do have to pay, to get someone to do that. But what we've
shown is that people who are not getting paid will produce a broad
spectrum of useful software, that together, can do a lot of things.
So,
when we think about how society gets its software, it's a mistake to
assume that there's always - has to be based on money.
People
used to say to me "If the software is free then nobody can be
paid to work on it so nobody will work on it". Clearly they were
being confused about the two different meanings of the word "free".
But never mind that, they were still making the assumption that there
was no possible motive for anyone to develop software, whether its
free software or not, except money.
Why?
Because it is there!
So
lets compare their theory with observed fact. Today there are around
a million people contributing to free software. So lets look around
and see what kind of motives these people actually have. Human nature
of course is very complex. One person can have multiple motives for a
single act - at the same time.
So
some of the motives that I have encountered for developing free
software include political idealism - trying to make the world a
better place - a fight for freedom, that's one.
Another
is, fun. Programming is tremendous fun, I sure wish, even though, I'm
glad I'm doing the work I do today, which is promoting the philosophy
of Free Software, that's what's most needed, I often miss
programming, because programming is so much fun. It's so much fun, in
fact, that many people who have full time jobs programming, like to
work on free software in their spare time, because that way they are
working on whatever project they choose, in the way they choose, and
that makes it more fun. Of course, not everybody feels this way. But
a lot of the best programmers find programming fun, and those are the
people whose help we want most in the area of programming.
Another
motive is to be appreciated. If your free program is used by one per
cent of our community, that's hundreds of thousands of users, thats a
lot of people who are grateful to you. It feels really good.
Another
motive is to have a professional reputation. Hundreds of thousands of
people using your free program and saying it's good, is something you
can show to an employer and say "See - I'm a good programmer".
You don't even have to go to school. The FSF once hired somebody who
was around 17 years old, just after he graduated from high school
because he was such a good programmer. He'd already been volunteering
for us for a few years. I didn't care if he had a college degree, I
just cared if he could do good work.
Another
motive is feeling gratitude. If you have been using our Community
Software for years and appreciating how good it is, how much it has
helped you - use computers, then when you write a useful program,
that is your opportunity to give something back. Or we might say to
"pay it forward" because you are not giving a compensation
to the specific developers of the programs you use, but you're
adding to what our Community gives to others. So you're paying it
forward instead of paying it back. But it still is a way you can
return something to the Community so it responds to a feeling of
gratitude.
I
love Microsoft
Another
motive is hatred for Microsoft [audience laughter]. I think that's a
rather shallow motive, but factually speaking, it exists. It's
shallow because it's a mistake to focus too much on any one company
as the problem we're trying to solve. Yes, Microsoft is a part of the
problem, so is Adobe, so is Oracle, and many other companies
contribute to the problem as well. The problem we're trying to solve
is non free software. Microsoft has subjugated more users than
anybody else , but that's not because the others aren't trying, they
just haven't managed to subjugate as many users as Microsoft has. So
they're not really better.
The
danger is, if you focus on Microsoft alone, if you start thinking
that the problem is Microsoft, you have now fallen into the confusion
of forgetting that the others are also part of the problem and you
start thinking that anybody who competes with Microsoft is "good",
that anything that reduces Microsoft's success is good. And that
includes some non Free Software. So it's actually bad! Just because
its competing with Microsoft doesn't mean it's treating our freedom
with respect.
[end
of video part 9 ]
So
we shouldn't be distracted from the issue of freedom in our community
to focus on Microsoft's success or failure. So this is a shallow
reason, but there are people who contribute to our Community for this
reason and their contributions are real, even if their reasons are
not the wisest reasons.
And
then another motive that some people have for the free software
development that they do, is money. Once I stopped selling tapes of
GNU EMACS, I had to find another way to make a living. So I began
taking commissions to make changes, in the free software I had
already released. So when I said that you could go to various
companies and say "how much would you charge to make this
change?" that's not just theoretical, I actually made my living
that way for many years in the '80s and there are lots of people
doing it today.
I
stopped because I got a big prize, and I didn't have to do it at the
time any more. But otherwise, I would have continued. So, the clients
who paid me to make changes in free programs, they knew because I
told them, that when it was done, I would put these changes into the
standard release and they would become Free Software.
But
it was still worthwhile for them to pay me because they wanted that
software to exist and they had no reason to expect anybody to write
that particular improvement just for his own wishes. They knew that
to get that particular job done they had to pay someone. And they
chose me because I had written the base program and so they figured I
was an expert and I could do a good job and fast.
So
even though I charged them a lot of money per hour they figured I
would get the job done in fewer hours and that it was a good
arrangement. And in fact, my income went up, at this point, to the
extent that I started turning away work some of the time. Once I had
made enough money to live on plus an equal amount to save, plus an
equal amount for taxes, I thought "Why should I spend any more
time working for pay this year?" and I was actually making a
living with seven weeks of paid work per year.
Of
course this was possible because I was doing - I was doing unpaid
work all the rest of the year, producing free software and improving
it, which is why people wanted to use it and wanted to adapt it.
But
the rest of the work I was doing, I was doing that - for the "cause"
for the sake of having a Free operating system. I would have done it
anyway. So Money was not my primary motive in working on free
software.
But
it was an important part of my motive for making that particular
change that somebody was paying me to make. If they hadn't paid me to
make that change I would have been making some other change which was
more useful to more people. Instead I made the change that was useful
to that one particular client.
So
as I explained, one action can have multiple motives, and one of the
motives for that particular job that I did, was money.
Suit
you sir?
And
nowadays there are lots of people doing free software businesses
which often involve, some of the time, extending the free software
that is available to the Community. You see, if you're thinking of
using a non Free program, you have two choices. Take it, or leave it.
If
you take it, you get it exactly the way it is with whatever bugs it
has, whatever malicious features or poorly designed features it may
have. And the other choice is - don't use it.
With
free software of course you have those two alternatives, but you have
others in between as well. Which are, use the program but make
changes of various different sizes. So its like buying a building,
you know, if a company buys a building they can use it exactly the
way it is, or they could decide they don't want to buy that building,
or, in between, they have the possibility of buying it but then
calling in some carpenters and plumbers and then making some change.
They can make small changes or big changes. Of course, big changes
cost more.
Which
of these alternative is best for you in any given situation? It
depends, but it's good to have those other options. With Free
Software, its the same. The business has the option of making
changes, bigger or smaller, and they can choose, among these, the
option that's best for them. And this creates a large amount of free
software business.
People
sometimes ask how Free Software might affect employment.
Well
the first thing to notice is that it won't affect employment very
much. Because if you look at all computer related employment,
programming is a small fraction of that, and of that, most of it is
developing custom software, software for one client to use
internally. A small fraction of it is developing software for release
to the public. That's the size of employment that, we could imagine,
perhaps might go away. A small fraction of a small fraction of the
computer field. So, this employment might perhaps go away, but not
necessarily.
Because
a considerable fraction of software development is paid for by
governments. And they could just as well decide to make it Free
Software, and it will still be the same money coming from the same
place to produce the same software.
There
are occasional exceptions, you know maybe there's some software that
goes into a weapon that they don't want to publish at all. But if the
software is going to be available to the public somehow, they can
make it Free Software.
Meanwhile,
switching to Free Software, creates the opportunity for other
employment of a new kind. That is, employment adapting software for
clients. If a client chooses - if a business that wants to - or other
organisation - government, NGO or whatever, wants to use a program,
they don't choose to use it exactly the way it is, they choose to
adapt it, that means they're going to pay somebody to make changes.
And that creates new employment.
Which
one would be bigger, I don't know. Whether switching to Free Software
means - you know it could mean a little less employment it could mean
a little more, it could mean a lot more, it could mean no change at
all. I won't try to predict. What I will say is, it can't mean a big
loss of employment, that's impossible.
Because
the jobs that you could imagine might go away are so few, compared
with the entire computer field. So, we don't have anything to worry
about as far as the effects on society.
And
as far as development of software is concerned, we don't need to
worry about economic issues and developing software. We've already
proved that just by developing so much free software. The whole world
has not switched to free software and already were developing
tremendous amounts.
So
people who worry about whether Free Software and the Free Software
Community can provide enough software, that's like worrying whether
aeroplanes could really fly.
So,
during the '80s our job, our mission, was to find, or develop, all
the parts we needed for the GNU system. Eventually when we had a lot
of them, we made a list of what was missing. Once that was smaller
than a list of what we had, and that was called the GNU "Task
List". We published it and said to people, "If you want to
help, pick one of these tasks, and do it".
Missing
link
By
the early '90s, we had almost all the components we needed, but there
was one, major gap. We didn't have a kernel. Now when you need all of
certain - when there are a set of things and you need all of them, a
priori, it doesn't matter what order you do them in. You could do
them in any order. And that was our situation. So I tried to optimise
the order. I was looking for some way we could get either all or part
of a kernel from someone else. To save - to reduce the job we had to
do. And I found out about a micro kernel called Mach, that was a
funded project at Carnegie Mellon University, and then I had the idea
that we would use Mach.
But
Mach didn't do the entire job of the kernel, it did the lower level
part. So we would have to write programs to do the other part.
Together they would make our kernel. I figured if we only had to do
the top level, that would be less work. In addition we could run
those programs as user programs and debug them as user programs which
should make it easier. So I thought that this would enable us to have
a working kernel faster and would also give us a more advanced
powerful design. Well it is a more advanced powerful design but it
took - it turned out it took years to get it to run. I don't entirely
understand why it took so long, I personally was not the one doing
it.
[
end of video part 10 ]
Fortunately
we did not have to wait for our kernel which we call the GNU Hurd, to
be working because in 1991, a college student in Finland decided,
just because he was interested in kernels that he would write a
kernel.
And
he had it running, using the traditional monolithic design, one big
program that's all one connected thing and does all the jobs. He had
it running, barely running, in less than a year. Which was amazing.
Initially
it was not Free Software. But in early '92, he decided to re release
it under the GNU General Public Licence. So it was Free Software
then. At that point, it was possible, by fitting his kernel into the
gap in the GNU system, to make a complete free system, and people did
that.
We
didn't do that. Linus Torvalds never contacted us and said "I
have a kernel, would you like to use it?" But he did announce it
elsewhere. And people who knew about his kernel thought "Lets
try to find all the other programs we need so that we could have a
whole system we could actually run". So they looked around, and
lo and behold, everything they needed was already available! "What
good fortune!" they said.
But
this was no accident. The reason that all the rest of system was
already there was - we'd been working on that for most of a decade.
Making
all these components and making them work together. So in fact what
they were doing was adding Linux to the incomplete GNU system.
Because this kernel's name is "Linux", you see.
So,
they were adding Linux to GNU making a system that you could call
"GNU plus Linux". But they didn't recognise that that was
what they were doing. They thought they were starting with Linux and
adding these many other components to make a system. They didn't
realise that all the rest was GNU. So they called the whole thing a
"Linux" system. And that's how the confusion got started.
I'm
a GNU!
That's
how it is that tens of millions of people are now using a variant of
the GNU system and they don't know it's a variant of the GNU system.
They don't know it's a system we've been working on for twenty years,
specifically for the sake of freedom to cooperate.
They
think the whole system is Linux, and it was all started in 1991 by
Linus Torvalds. Now, why does that matter, this confusion?
Well,
it hurts our egos. But that's not really an important thing. The
thing that matters is that Linus Torvalds doesn't agree with our
philosophy. He doesn't share our vision of living in freedom. He
happens to think that non free software is legitimate. He doesn't
like the idea of making technical decisions based on social
consequences.
He
thinks that technical decisions should be made for technical reasons,
to keep the technology pure. Well, I can't really speak for him, I
hope I haven't made a mistake.
As
you can see, I don't agree with those views, but he has a right to
his views, and he has a right to advocate them.
What
I think is unfair is when our, larger, work is attributed to him -
and to his views, and becomes a platform for
spreading his views instead of ours.
Most
of the users of the GNU system think it was developed by somebody who
wanted to have fun. Well, having fun is a perfectly good motive, I
have fun programming too.
Dedicated
to Freedom!
But
the reason we have a complete free operating system is because of
another motive, because of people who were determined to work as long
as it took so that we could live in Freedom.
And
the users need to know this. Because they need to think about the
issue of freedom. Or they're likely to loose their freedom.
And this is something that is much more general that the area of
software.
We
can see in all areas of life, if you have freedom but you don't value
it you're likely to loose it.
Because
people will offer - to take your freedom off your hands - and give
you in exchange, something else that's attractive or convenient.
Maybe they'll say they'll make you more safe, or maybe they offer you
a competitive advantage. Whatever it is, or maybe just a more
convenient system, all you have to do is pay some money and give
up your freedom, and you will have these attractive advantages.
And
society is constantly faced with that kind of temptation, to throw
everything away.
My
country suffered a terrible attack in 2001, from its own leaders who
took away our freedom in the name of keeping us safe from terrorism.
Now I thought that people were supposed to give up their lives to
defend their freedom, not the opposite. The opposite is stupid. After
people fought for freedom so hard, to throw it away just to save your
life, that's cowardice.
My
country was founded for the sake of freedom. And still talks about
being the champion of freedom, but its not so any more. And that
makes me terribly sad when I think about it.
At
least in India, when they tried to pass anti terrorism laws, at least
there was a fight. It still happened. But you can be proud that at
least the opposition in the Indian parliament fought against it.
The
US Congress, almost everybody voted for it. To take away our freedom.
And how we'll ever get it back I don't know.
Well,
that applies to these obscure issues of freedom for users of software
just as it applies to freedom from being - having the police just spy
on you all the time. It applies to any issue of freedom.
But
in the area of Freedom for computer users we face the problem that
most users have never even heard of the issue. That's our first
mission. If we want users to stand up for their freedom we've got to
teach them what it is, what the issue of Freedom is.
Freedom
Rules, OK?
And
here, unfortunately, most of the free software community is not
participating. Most of them talk about the GNU/Linux system calling
it "Linux" and presenting it only as a practical
alternative, suggesting only practical advantages for it.
Well,
those practical advantages are part of the reason to switch to it.
But if people don't talk about the ethical and political reasons, we
are not teaching people to value Freedom. And people who don't value
Freedom can easily give it up. They might switch to a free operating
system for practical reasons, and the next thing you know, they are
installing some non free software on top of it, because they don't
know they're loosing anything.
And
this happens quite often. There are many people who are fans of the
GNU/Linux system, and they want to do - they work hard to try to
make the system more popular, and they think its good when some non
free program runs on top of the system. They actually applaud the
developers and say "Thank you for supporting" (they usually
call it Linux) "Thank you for supporting Linux because you help
us make Linux more popular".
And
when they say "Linux" they are really talking about a
variant of the GNU system. So they are trying to support our project
by making our work more popular. But that's missing the point, we
didn't do this work just so it would be popular. There's a more
important thing which is at stake here, which is our freedom.
We
did this work, so we and you could live in Freedom. And they are
willing to sacrifice the freedom to gain popularity. they're willing
to endorse a non free program and call it a good thing, because it
makes - it might make our system more popular.
Well
when they do that, what are they saying to people? what are they
teaching people? They're teaching people that non Free Software is
fine, its OK. How are those people going to understand why they
should stand up for Freedom, if we never tell them that?
So
although our community is growing and our software is also doing more
jobs, our community is weak in some ways because it's full of people
who have never recognised this as an issue of Freedom. People who are
ready to choose at any given moment, whatever program is most
convenient for today's job. Who are looking at the question in short
term ways.
[
end of video part 11 ]
In
government
You
find governments saying " We'll use either Free Software or non
Free, whatever does the job most easily today". But that is
short sighted. Governments should be looking, above all, at how to
direct society towards freedom and strength and happiness.
And
that means that - that's the government's overall mission. Of course
individual government departments have particular jobs to do, but
while they do these jobs and try to do so efficiently, they should
not forget the government's overall purpose.
Which
means that when they start doing a job using computers they should
use Free Software because that leads society in the direction of
goodwill, and development, and independence and strength.
The
use of non Free Software does not permit development. Its the
opposite of development because it's dependency, it's permanent
dependency, and the only way to escape from this dependency is to
stop using the non Free Software.
So
any time governments spread the use of non Free Software in society,
they are making society more dependent. Society is in a pit and they
are digging the pit deeper. What they should be doing is digging the
path to get out.
Governments
have a duty to use Free Software for their work because they have a
duty to maintain control of the government's data on behalf of the
citizens. Governments operate on lots of data for their dealings with
the public and it's the government's responsibility to do this on
behalf of the public.
Which
means that the government must never allow any private party to get
control over what's done with this data. And the only way to make
sure the government has full control over what it does with its data
is by using Free Software all the time.
Next
please!
But
above all, it's the schools that have to use Free Software because
the schools are training the next generation, and schools in India
today have a choice.
They
can either train people to be dependent on non Free Software to be
under the thumb of the non Free Software developers, perhaps for
their whole lives.
Or
they can train people to use Free Software and to recognise Freedom,
and defend it. Which one is the healthy path?
Clearly,
society is better off if people are not dependent on a company, a
particular company, typically even a foreign one.
And
you can see this even in the tremendous drain of money, that pours
away in licence fees every year, and is likely to get more and more.
Right
now of course, most individuals in India that have computers are
using unauthorised copies. But the developers are taking steps to
make that impossible, so you can expect this drain of money to turn
into a flood of money. And it's going to get bigger every year.
This
is a very shallow reason but it is significant for a poor country. It
creates part of the digital divide. Part of the digital divide is
natural, it's because computers cost money and connectivity costs
money. But added to that is the artificial part of the digital divide
created by the artificial scarcity of the software that you need to
run the computer.
Free
Software eliminates that part of the digital divide. And if you only
have the other part to deal with, all your efforts at solving it can
go further.
But
there are deeper reasons why schools must use Free Software, must
offer the students Free Software to use. One of them is for the sake
of education. Some people in their teens want to learn all about
software. And at that point a lot of them are going to want to know
"How does this program I am using actually work?" If
they're using non Free Software the answer is "It is a secret,
you're not allowed to know such things, don't ask".
But
if the school is running Free Software, then the teacher can say "I
am glad you're interested. Here is the source code, this is exactly
how the program does that job. You can learn everything". "And
then you could learn even more by trying making changes in that
source code". Some people are natural born programmers. Writing
code is immediately obvious to them. But - we still have to learn
good judgement and how to write clear, quality code.
And
the way you learn, that is by reading a lot of code and writing a lot
of code. It's like learning to be a good writer of a human language.
With non Free Software, there's nothing for you to read.
I
used to see people graduating from college around 1990, and they had
never seen a program that wasn't a toy, that wasn't a classroom
exercise. Because the real programs were secret.
But
today, you, any one in India, can have the same kind of opportunity
that I had, only because I was at MIT. In 1971 the only way to get
that opportunity was to go over to MIT. But today, all you need is a
PC. Install GNU/Linux on it and you have the same opportunity, to
learn to write system software by reading it and changing it. Think
of a new feature to add.
You
take a big program and make a small change. As a beginner you
couldn't write a big program yourself - not very well, but you can
write a small change. And by doing that you start to understand the
issues about how to make a big program clear. When you've done that
enough times you understand how to write a big program, and do a good
job.
This
opportunity can now be available in every school. Schools should say,
to kids, "If you bring software to school, you may not keep it
for yourself, you must let the other kids copy it. It's a rule.
Of
course the school has to follow its own rule. Schools should only
bring free software to schools as well. And this way we can teach
people the habit of helping each other out.
The
long shadow
Make
a society that's more liveable, more kind. When companies offer
gratis copies of non Free Software to schools in India, they're
trying to lead the students into a trap. They're trying to get the
students hooked, to make them dependent.
Just
- its the same reason why tobacco companies used to like giving away
gratis packs of cigarettes to kids. So they would grow up and be
dependent on tobacco. And for the same reason schools should refuse
to go along with this.
So,
today we've made a great beginning, we have tens of thousands of
users, we have many free programs that do a lot of jobs. Where do we
go from here? Of course we need to develop other programs to do other
jobs , and we need to show the other computer users in the world that
they can live in freedom, also.
But
today we have something that we never had before. We have enemies,
powerful organisations trying to stop us from developing Free
Software. We want to serve the public, they don't want to let us
serve the public.
In
the US there are two different laws that each prohibits various kinds
of Free Software. One of these laws is called The Digital Millennium
Copyright Act and it prohibits Free Software for certain specific
jobs, a certain range of jobs, which is accessing encrypted media. It
prohibits Free Software for a specific range of jobs, which is access
to encrypted media.
For
instance, there is a free program that you can use to play a DVD. But
this program is illegal in the US, it has been censored, banned. My
computer used to have a DVD player which I couldn't get software to
use. That software to enable me to use it is illegal in the US. If
you buy a DVD, its lawful for you to put it into your computer and
play the film but the Free Software to do it has been prohibited.
[
end of video part 12 ]
Of
course, that's a rather narrow range of jobs, but they're important.
Lots of users want to play DVDs, lots of users want to listen
to a Real audio stream or a Real video stream, and Free Software to
do that is prohibited as well.
There
are - so these problems are important, a major obstacle to liberating
the rest of the users. Of course that law in the US doesn't affect
people in other countries but the US is trying its best to impose
such laws in other countries, often doing so through trade
negotiations.
The
US was trying to impose that very restriction on the entire western
hemisphere through the Free Trade Area of the Americas but it was
blocked by Brazil, a country where the government now gives strong
support to Free Software. The other law that the US has which
prohibits many different kinds of Free Software is applying patent
law to software ideas.
Now
it is important to recognise this is not a matter of patenting
programs because each patent covers an idea. And each program
combines many different ideas - to do a job.
Writing
a substantial program inevitably means you use lots of ideas which
then are embodied in the code of the program. Some of them you may
not have been aware of, you may not have noticed that these 20 lines
of code embody a certain idea, you just wrote them.
But
if somebody has a patent saying nobody's allowed to implement that
idea, you can still get sued for having written those 20 lines. I
think the record for shortness of a program that would get you sued,
is 3 lines. On the PDP 10. Way back when - 3 lines of code was
enough to do something that was patented and you could get sued for
it. Of course those 3 lines in your program would be together with,
maybe, 100,000 other lines. Which might implement - 200 other
different patented ideas, and you might get sued 200 times. By 200
different people.
Bad
news
So
software patents, as it happens, are not just bad for free software.
They're bad for all software developers. It's a terrible, stupid
policy.
It
makes software development like crossing a minefield, because at each
design decision, there's a certain chance that you'll step on a
patent, and you never know when its going to happen. But when it does
happen it can explode and destroy your project. So, its important to
make sure that your country doesn't have software patents, that it
does not follow the mistake of the US.
Now,
the impact of software patents on the Free Software Community is that
there are various programs we don't have, and can't have. At least,
not in the US. And not in those other countries that allow such
patents. And this can affect any kind of software, for any kind of
job, this problem can occur.
And
the danger is that users, who are not - who haven't been taught to
value Freedom - when they choose what software to use, they will
choose - if they choose solely based on the immediate practical
benefits they will look at Free Software and say "This is bad,
it doesn't have this feature".
And
why don't we have the feature? Because the Government has said were
not allowed to have the feature. But the users don't think of it that
way, they just say "Free Software's inferior, I'm going to
choose to be a slave". So part of resisting this problem is
teaching users to recognise that Freedom, itself is something that
they need.
But
part of it is, organising politically to make sure that as many
countries as possible reject patenting software ideas. Why make
software development like a minefield? Developing software is hard
enough, there's no need to make it even harder by saying there's all
these things you have to avoid doing.
So
these are two of the dangers that we face, forms of opposition that
we face.
Psst!
Want a specification?
In
addition there's the problem that some hardware has secret
specifications. There are companies that will sell you a piece of
hardware that you can use in your PC, but they won't tell you how to
run it. The specifications are secret.
Instead,
they offer you a non free program to run that hardware with. Well, if
you don't mind giving up you're freedom, that solves the problem,
right?
But
if you do value your freedom, that's not acceptable at all. But its
hard to write free software to replace those non Free drivers if we
can't figure out how to talk to the hardware, so its a hard job,
which often involves watching the signals that go back and forth to
the hardware in order to figure out the right commands to use.
So
what we need to do is organise and put pressure on these hardware
companies to say that "You're not really supporting our
Community if you invite us to use a non Free program, so start really
cooperating with us". We're not asking you to write the
program, just publish the specifications of your hardware, we'll
write the program. We'll support it. We'll be completely satisfied if
you just publish the specs. Or just even show us the specs. Let us
look at them, and write the free program.
As
long as you let us write the program then that's enough cooperation,
that's all we ask of you. And sometimes we convince one, but there
are still some who refuse to cooperate.
Just
lie back and relax
But
the biggest threat we face is from "Treacherous Computing".
That's the name we call it. The proponents of the scheme call it
"Trusted Computing". This is a conspiracy of many large
corporations who aim to impose a change in the design of all
computers. I say its a conspiracy you may wonder how I know. The
answer is - its not a secret. They admit it.
You
can go look it up and see that companies such as Intel and AMD and
IBM and Hewlett Packard and Sun, and Microsoft and Transmeta are all
agreed to participate in this plan, which they call "Trusted
Computing". But that name is deceptive. What do they mean?
They
mean that an application developer can trust your computer to obey -
him - and not you. So from your point of view it's Treacherous
Computing because it means that your computer will not obey you.
And that's the whole point. This redesign of all computers is
intended to give the software developers more control and give you
less control.
But
its not designed - its not being done as a proposed law, although
they do take advantage of the laws in some countries that make it
illegal to bypass the scheme.
What
they intend is, simply, to get all the computer manufacturers to
participate in this scheme, or most of them at least, and then they
expect to publish data in formats that can only be accessed using the
special Treacherous Computing hardware. and then they - for instance
they expect to publish music and movies that way and books.
So
then they figure that the users will all say "I want Treacherous
Computing! I want my computer to betray me so that I can access these
- published works". And that way they figure that, you know,
people would still be allowed to make computers that don't do this,
but nobody will.
And
yes we'll still be allowed to develop Free operating systems, but it
will be impossible on a Free operating system to access any of those
publications.
So
the idea is that Free Software will appear so inadequate that it will
die. How are we going to resist this? I am hoping that some
governments will actively sponsor the development of hardware that
bypasses, that defeats the plot and make this available fairly
cheaply to the public. So if the government supports us strongly
enough in rejecting Treacherous Computing, that method can be used. I
also hope that governments will require that anyone who sells
Treacherous Computing hardware will actually give the user full
control over it, which will defeat the purpose. Because the point of
Treacherous Computing is that it - it doesn't fully give the user
control over what the hardware is going to do.
[
end of video part 13 ]
So
there are ways governments can help us, if we get politically
organised to convince them.
Which
writing on the wall?
So
what will the outcome be? Will Free Software triumph? That's up to
you. We don't know what's going to happen, we're in a struggle for
Freedom.
If
enough people decide Freedom is important, we can win. If people
don't care about Freedom, history shows we are likely to loose. So I
am going to do my best and I hope that you'll join me.
Blessing
in disguise
But
sometimes people accuse me of having a "Holier than thou"
attitude and they criticise that. Well they're right, I am holy, I'm
a saint. Its my job to be holy. So let me now present my alter ego.
[dresses up in robe with halo] Its a bit slower doing this nowadays -
there.
"I
am saint Ignusius of the Church of EMACS, I bless your computer my
child. Emacs started out as a text editor, which became a way of life
for many users, and ultimately a religion. We even have a great
schism between two rival versions of EMACS, and now, we have saints
as well. Fortunately, no gods. To be a member of the Church of EMACS
you must recite the Confession of the Faith. You must say "There
is no system but GNU and Linux is one of its Kernels". [audience
laughter] You don't have to be ashamed of laughing out loud, it's
good to get it into the microphone.
And,
the Church of EMACS has some advantages over some other churches I
won't name. Because to be a saint in the Church of EMACS does not
require celibacy, so if you're looking for a church in which to be
Holy, you might consider ours.
But
it does require making a moral commitment to live a life of purity.
You must vow, you must make the vow, and carry it out, to exorcise
the evil proprietary operating systems that possess all the computers
under your direct practical control. And then install a wholly Free
operating system to replace it. Of course, "Wholly" can be
spelled in more than one way....
And
then only install Free Software on top of that. If you make this vow
and carry it out, then you too will be a saint and you too may
eventually have a halo if you can find one, because they don't make
them any more [historical mainframe hard drive disc].
Sometimes
people ask me in the Church of EMACS "Is it a sin to use vi?"
The answer is that using a Free version of vi is not a sin. It's a
penance. And sometimes people ask if my halo is really an old
computer disc?
This
is no computer disc. This is my halo! But it was a computer disc in a
previous existence. So with that, thank you. And I'll now accept
questions.
[applause]
Video:
http://www.youtube.com/watch?v=E6LsfnBmdnk&feature=PlayList&p=C2233C191A464B26&index=0
(In
14 parts, each approximately 10 minutes duration)
Further
information:
The
Free Software Foundation www.fsf.org
Transcription
by Alan Cocks, Text is as accurate as possible. Paragraphing and
punctuation have been implemented in sympathy with the message, and
also with consideration for a reader using written text.
Section
headings are the invention of the transcriber with the intention of
helping the reader navigate the multitude of points made.