Tuesday, 8 December 2015

'This is not a technical talk...' Richard M Stallman (c2009) Transcript

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.