The Future of Jiyuna Software

Transcript of a keynote speech at the Research Institute of Economy, Trade and Industry (RIETI), Japanese Ministry of Economy, Trade and Industry, 21 April 2003.


Mr. Richard Stallman, GNU Project: I am going to speak about free software and, first of all, its ethical, social and political significance, and secondly, something about its economic consequences.

Free software is a matter of freedom. The English word “free” does not make this clear because it has two meanings. In your language, fortunately, you have two different words. So, if you say jiyu na sofuto, it is very clear that you are not talking about the price, you are talking about freedom. So, I urge you, always use your unambiguous word and not our unclear word when you are talking about free software in Japanese.

The reason for having free software is very simple: to live in freedom and, in particular, to be free to treat other people decently. Nonfree software says that you are helpless and divided. It says you cannot even tell what the program does; you are supposed to take the developer's word for it; and often they will not tell you what it really does. And if you do not like it, you cannot change it. Even if the developer made his best sincere effort to make the program useful, nobody is perfect. I could write a program, and you might find it halfway good for what you want. Perhaps I wrote it for somewhat different purposes, not the same as your purposes. Nobody can anticipate everything. Perhaps I did it the way I thought was best, but you have a better idea. Nobody can always get everything right.

With nonfree software you are stuck. You have to take it the way it is. You have to suffer with it. And most important with nonfree software, you are forbidden to share with other people. Society depends on people helping each other. It is useful to live with neighbors who will help you when you ask for help. Of course, not always, nobody is forced to help another person, but if you are friends with people, often they will help you out. So, of course, we had better help other people if we want them to help us.

So what is it like when someone says you are prohibited from helping someone else? Here is this useful knowledge, and you could help your neighbor by sharing it, but you are forbidden to share with other people. This is attacking the bonds of society, dissolving society into isolated individuals who cannot help each other.

Free software is the contrast to this. Free software means that you have four essential freedoms. Freedom zero is the freedom to run the program for any purpose, in any way that you want to. Freedom one is the freedom to help yourself by studying the source code to see what the program does and then changing it to suit your needs. Freedom two is the freedom to help you neighbor by distributing copies to others. And freedom three is the freedom to help build your community by publishing an improved version so others can use your version instead, so others can get the benefit of your help. With these freedoms, the users control the software they use. If these freedoms are lacking, then the [software] owner controls the software and controls the users.

We all know that computers do not make decisions themselves really. They do what people told them to do. But which people told them what to do? When you are using your computer, can you tell it what to do, or is someone else telling it what to do? Who controls your computer? This is the question of free software. The freedoms in the definition of free software, freedoms zero, one, two and three, the reason why these are the freedoms that matter is because these are the freedoms necessary for citizens to control their own computers. You need freedom zero in order to be able to do whatever job you want with your computer. You need freedom one so that you can make the software do what you want it to do. If you do not have freedom one, you are stuck; you are a prisoner of your software.

But not everybody is a programmer. If we had just freedom one, then programmers could change the software to do what they want. But if each programmer had to make his changes personally, we would not really have much control. We would be limited to what each of us, individually, could do. Non-programmers would get no benefit at all. That is why freedom three and two are crucial, because freedoms two and three allow a group of users to work together and make the software do what they jointly want. So you are not limited to changing it individually, personally. You and 50 other people who want the same thing, you can get together. If two or three of you are programmers, they can make the changes, and then they can distribute it to all the rest of you. You could all put money in and pay a programmer to make the changes you want. Your company could pay a programmer to make the changes your company wants. Then if you publish the improved version, everybody can use it. Thus, all of society gets control over what its software does.

Free software is a method, a democratic method, for deciding the development of software. But it is democratic in an unusual way, because we do not hold an election and then tell everybody what to do. Nobody tells people what to do in the free software community; everybody makes his own decision. But what happens is this: If many people want the software to improve in that direction, many people will work on changing it, so the software will develop rapidly in that direction. If a few people want the software to develop in that direction, a few of them will make an effort, so it will develop slowly in that direction. If nobody wants it to develop in that direction, it will not. By each of us deciding what we are going to do, we all contribute to what happens and to deciding which direction the software will develop.

So society collectively has control over how the software will develop overall. But you, individually, or any group or company can decide how to develop it themselves. The result is that free software tends to do what users want, instead of what the developers want.

People often ask, “If everybody is free to change the software, what does that do for compatibility?” Well the fact is, users like compatibility. It is not the only thing they like. Sometimes, certain users want an incompatible change because it has other benefits, and if so they can do it. But most users want compatibility. The result is most free software developers try very hard to be compatible. Guess what would happen if I made an incompatible difference in my program and the users did not like it. Some user would change the program and make it compatible, and then most users would prefer his version. So his version would become popular and mine would be forgotten. Now, I do not want that to happen, of course. I want people to like and use my version, so I am going to recognize this in advance and I am going to make my version compatible from the beginning because I want people to like it. So in our community, the developers cannot resist what the users want. We have to go along or the users will go where they want and leave us behind.

But if you look at nonfree software developers, the ones who are very powerful, they can impose incompatibility and they are so powerful that the users cannot do anything. Microsoft is famous for this. They make an incompatible change in a protocol, and then the users are stuck with it. But it is not just Microsoft. Consider WAP, for instance. WAP contains modified versions of ordinary Internet protocols, modified to be incompatible, and the idea was they would make these telephones and they would say “they can talk on the Internet,” but since they did not use the ordinary Internet protocols, the incompatibility would be imposed on the user. That was their plan. It did not work, fortunately. But that is the danger you face when the users are not really in control: Somebody will try to impose incompatibility on the users.

Free software is primarily a political, ethical and social issue. I have explained that level of it. It also has economic consequences. For instance, nonfree software can be used to create very rich companies, where a few people collect money from everyone around the world, and those few get very rich and other people are deprived. There are many countries (Japan is not one of them, I guess) where the people who can afford a computer usually cannot afford to pay for the nonfree software, for permission to use the nonfree software. So in those countries, nonfree software as a system creates tremendous deprivation. But in any country, money is squeezed out of most people and concentrated to a few who become very rich by nonfree software. With free software, you cannot do that. You cannot squeeze a lot of money out of people, but you can do business with people as long as you are providing them with a real service.

Free software business already exists. In fact, I started a free software business in 1985. I was selling copies of GNU Emacs. I was looking for a way to make money through free software. So I said, “Pay me $150, and I will mail you a tape with the GNU Emacs text editor.” People started paying me, and I mailed them tapes. I made enough money to live on. I stopped this because I started the Free Software Foundation, and it seemed appropriate for the Free Software Foundation to start distributing GNU Emacs. I did not want to compete with the Free Software Foundation, so I had to find a different way. For several years, the Foundation made enough money this way to pay several employees, including programmers. So actually, if I had done it myself, I would probably have become comfortably well off by selling copies of free software.

After that, I started another free software business where I would make changes on commission.

With nonfree software, you cannot change it. You are a prisoner of the software. So you either use it exactly as it is or you do not use it at all. With free software, you have those two choices, but you have another choice also, actually many different choices. You can make changes, bigger or smaller, in the program and use the modified program.

Now, if you are personally a programmer, you could make the changes yourself. But suppose you are not a programmer. Then, you can pay a programmer to make the changes for you. For instance, if this ministry is using a program and people conclude this program does not work the way we really want, you could easily spend some money to pay a programmer to change it to do what you want. This is the kind of free software business that I was doing for several years in the 1980s. (I could have kept on doing it, but I received a big prize and I did not have to do it anymore.)

Nowadays there are many people making a living this way. I recently heard from somebody in South America who said that he know 30 people there who are making a living this way. South America is not among the technologically most advanced parts of the world, but this is already starting there. In 1989 or 1990, I believe, a company was started to do this kind of business, and that company was started by three people. In several years it had grown to 50 people, and it had been profitable every year. They could have kept on doing it, but they got greedy, and so they started developing nonfree software, and later on they were purchased by Red Hat.

Anyway, the free software business is a new way of doing business that does not exist in the proprietary software world. So people often wonder how would free software affect employment. Suppose every computer user had freedom. Suppose, therefore, that all software were free software. In other words, if you have the program, you have the freedom to run it, study it, change it and redistribute it.What would that do to employment in the information technology field?

Well, of all the employment in the field, a small fraction is programming; and most programming is custom software, software being written for one client. That is perfectly okay; as long as the client gets the source code and gets the full rights to control the software once he has paid for it, then this is legitimate. In fact, it is free software for the client who has it. [Thus, only the programming which is not client-specific is really nonfree.]

So of this fraction that is programming, most of that is custom software; software to be published is a small fraction of a small fraction of the total [IT sector employment].

So, what would free software do? It might eliminate this tiny fraction of the employment, but maybe not. Because while the possibility of paying these programmers by restricting the users would go away, there would be a new possibility instead of supporting programmers who would be paid to make improvements and extensions in free software. So will we lose more jobs or gain more jobs? Nobody knows. It is impossible to tell. What we do know is that the decrease in employment in the IT field is limited to this small fraction of a small fraction, which is programming for publication. The rest would continue the way it is now. So it is clear that there is no problem for employment.

What about another issue people sometimes raise: Could we possibly develop enough software and make it free? The answer is obvious because we already are. The people who ask this question are like asking could airplanes really stay up? Well, I flew in one. Probably all of you have flown in airplanes too. I think they can stay up. In free software today, we have hundreds of people, maybe thousands, getting paid to develop free software. But we have over half a million volunteer developers of free software working part time and not getting paid and developing a lot of software.

So in fact, free software business is not necessary for free software to do its job. Free software business is very desirable. The more we can develop institutions that funnel funds from users to free software developers, the more free software we can produce, the better we can produce it. So it is certainly desirable, but it is not crucial. We have already developed two entire operating systems, two graphical user interface desktops and two office suites that are free software.

People are creatively looking for ways to fund free software, and some [ways] work and some do not, as you might expect. For instance, last summer, there was a product that people had liked but was nonfree called Blender, and the business decided it was no use supporting this or selling this anymore. They discontinued it. But the developers did not want it to be discontinued, so they negotiated a deal: If they could raise $100,000, they could buy the rights and make it free software. So they went to the community, and in a few weeks they raised the money. Blender is now free software. This suggests that maybe we can raise money from the community in the same way to make specific extensions.

A programmer who has a name, a reputation for ability, could go to the community and say, “If people put up this much money, I will do the work.” He does not have to do the work entirely himself. He can employ other programmers working with him, and this is how you would get started. Before you have a name, before you could go to the community on the strength of your own reputation, you could be working as an apprentice for other programmers. They raise the funds, they supervise the work, but by doing this, eventually you develop a reputation too, and then you can go and get clients.

There are also, of course, legitimate roles for government funding in developing useful software, just as governments fund scientific research designed to be of use to the citizens, and even just for the sake of human curiosity, but certainly to be of use for the citizens, for the public. It is equally legitimate for governments to fund the development of software that is going be of use to the public, and then when it is done, hand it off to the public and say, “Everyone can now use and improve this. It is human knowledge.” Because that is what free software is really about. It is human knowledge, knowledge that belongs to humanity, to all beings. A nonfree program is restricted knowledge, knowledge that is kept under control by a few, and other people cannot really have access to it. They can only use it barely on sufferance. They can never have the knowledge.

For this reason, it is essential that schools use free software. There are three reasons why schools should use exclusively free software. The most shallow reason is to save money. Even in a developed country, schools never have enough money, and so the use of computers in schools is held back. Now, if the schools use free software, then the school system has the freedom to make copies and redistribute them to all the schools and they do not have to pay for permission to use the software. So the school system can thus install more computers, make more facilities available. In addition, the GNU plus Linux operating system is more efficient than Windows, so you can use an older, less powerful, cheaper model of computer. Maybe you can use a second-hand computer that somebody else is getting rid of. So that is another way to save. That is obvious, but it is shallow.

A more important reason for schools to use free software is for the sake of learning. You see, in the teenage years, some students are going to want to learn everything there is to know about the inside of the computer system. These are the people who can become good programmers. If you want to develop a strong programming capacity, people prepared not just to work as part of a big team in a rather mechanical way, but people who will take the initiative, do big things, develop powerful, exciting programs, then you need to encourage the impulse to do that, whenever a kid has that impulse. So it is important to provide facilities and a social milieu that encourages this kind of learning to develop. The way to do this is the schools should run free software, and whenever a kid starts wondering, “How does this actually work?” the teacher can say, “This is done by the Fubar program. You can find the source code of the Fubar program there. Go read it and figure it out, see for yourself how this works.” Then if a kid says, “You know, I have got an idea for how this could be better,” the teacher could say, “Why not give it a try? Try writing it. Make the change in the Fubar program to change this one feature.”

To learn to be a good writer, you have to read a lot and write a lot. It is the same if you are writing software: You have to read a lot of software and write a lot of software. To learn to understand big programs, you have to work with big programs. But how can you get started at that? When you are beginning, you cannot write a big program yourself, not and do a good job, because you have not learned how. So how are you going to learn? The answer is you have to read existing big programs and then try making small changes in them. Because at that stage, you cannot write a big program yourself, but you can write a small improvement in a big program.

That is how I learned to be a good programmer. I had a special opportunity at the Massachusetts Institute of Technology. There was a lab where they had written their own operating system, and then they used it. I went there and they said, “We would like to hire you.” They hired me to improve the programs in this operating system. It was my second year of college. At the time, I could not have written an operating system myself. I could not have written those programs from zero, but I could read them and add a feature and then add another feature and another and another. Every week I would add another feature to some program. By doing this many, many times, I developed my skill. In the 1970s, the only way you could get that opportunity was to be in a very special place. But today, we can give that opportunity to everyone. All you need is a PC running the GNU/Linux system with the source code, and you have this opportunity. So you can easily encourage Japanese teenagers, those of them who are fascinated by computers, to become good programmers.

I have a friend who was a high school teacher around 1980, and he set up the first Unix machine in a high school. He then mentored the high school students so that they learned to become good programmers. Several of them were very good programmers with reputations by the time they graduated from high school. I am sure any high school has a few people who have that talent and will want to develop it. They just need the opportunity. So that is the second reason why schools should use free software exclusively.

The third reason is even more fundamental. We want schools to teach facts and skill, of course, but also good moral character, which means being prepared to help other people. That means the school should say to the kids, “Any software that is here, you can copy it. Copy it and take it home. That is what it is here for. If you bring any software to school, you must share it with the other kids. If you are not willing to share it with the other kids, do not bring it here, it does not belong here, because we are teaching kids to be helpful to each other.” Education of moral character is important for every society.

I did not invent the idea of free software. Free software began as soon as there were two computers of the same kind, because then people using one computer would write some software, and the people using the other computer would say, “Do you know anything to solve this problem?” and they would say, “Yes. We wrote something to solve this problem. Here is a copy.” So they started exchanging the software that they had developed, so that they could all develop more. But in the 1960s, there was a trend to replace it with nonfree software, a trend to subjugate the users, to deny users freedom.

When I was in my first year of college, I got to see a moral example that impressed me. I was using a computer facility, and at this facility they said, “This is an educational institution, and we are here for people to learn about computer science. So we will have a rule: any time software is installed on a system, the source code must be on display so people can read it and learn how this software works.” One of the employees wrote a utility program and he started selling it as nonfree software. He was not just selling copies the way I was doing; he was restricting the users. But he offered the school a copy at no charge, and the people in charge of the computer facility said, “No, we will not install this here because our rule is the source code must be on display. If you will not let us put the source code of this program on display, we just will not run your program.” This inspired me because it was a willingness to renounce a practical convenience for the sake of something more important which is the mission of the school: education.

The lab where I worked at MIT was an exception though in the 1970s due to the fact that we had an operating system that was free software. Most computers were using nonfree operating systems at the time. But I was inspired by the example that I saw there and I learned to live in that way. I learned the way of life where you will teach your knowledge to others instead of keeping it all for yourself. Then this community died in the early 1980s. At that point, I started the free software movement. I did not begin free software. I learned the free software way of life by joining a lab where people already practiced it. What I did was to turn this into an ethical and social movement, to say that this is a matter of choosing between a good society and an ugly society, between a clean, kind, helpful way of life where we have freedom, and a way of life where everybody is in bondage to various empires that conquer them, where people believe they have no practical choice but to give up their freedom.

Theoretically speaking, on the one hand people say, “Oh, nobody forces you to use that nonfree software. Nobody forces you to use Microsoft Word.” On the other hand, you have people saying, “I have no choice.” So practically speaking, it is not a situation of individual choice. Yes, it is true, if you are determined to be free, determined to reject it, you can do it, but it takes a lot of determination. When we started 20 years ago, it took tremendous work to use a computer without the nonfree software. All the operating systems for modern computers in 1983 were proprietary. You could not get a computer and use it, except with nonfree software. To change this, we had to spend years working, and we did, we changed it.

For you, today, the situation is easier. There are free operating systems. You can get a modern computer and use it with free software, exclusively with free software. So nowadays, instead of a tremendous sacrifice, you just have to make a temporary, small sacrifice, and then you can live in freedom. By working together, we can eliminate that sacrifice. We can make it easier to live in freedom. But for that we have to work. We have to recognize freedom as a social value.

Every government tries to get its work done inexpensively, and every government agency has a specific job to get done. So when government agencies choose their computers, they tend to look at narrow, practical questions: How much will it cost, when can we have it running, and so on.

But the government has a larger mission, which is to lead the country in a healthy direction, one that is good for the citizens. So when government agencies choose their computer systems, they should make this choice so as to lead the country to free software. It is better for the economy of the country because the users, instead of paying merely for permission to run the software, will be paying people in the local area to improve it and adapt it for them. So in instead of all draining away to Redmond, Washington, the money will circulate in the region, creating employment locally instead of filling somebody's pockets. But more important, it creates a way of life where the country and the people are independent and free.