Free Software Movement: From Genesis to the GNU GPL version 2
What is free software?
"Free software" is a matter of liberty, not price. To understand the concept, you should think of "free" as in "free speech", not as in "free beer".
Free software is a matter of the users' freedom to run, copy, distribute, study, change and improve the software. More precisely, it refers to four kinds of freedom, for the users of the software:
- The freedom to run the program, for any purpose (freedom 0).
- The freedom to study how the program works, and adapt it to your needs (freedom 1). Access to the source code is a precondition for this.
- The freedom to redistribute copies so you can help your neighbor (freedom 2).
- The freedom to improve the program, and release your improvements to the public, so that the whole community benefits (freedom 3). Access to the source code is a precondition for this.
Richard Stallman launched the free software movement in 1983, in his 30s. For many people now, it's ancient times. If we don't know the early history of computer, especially the history of computer software, we couldn't understand free software movement well. So with the release of the version 3 of GNU GPL in the last year, I think, it's a good opportunity to look back the free software movement. Richard and I will write a series of articles to show you the history, philosophy and the techology behind the free software movement.
For your well understanding the free software movement, our first article is about the early history of the free software movement. This article covers from the Genesis to the release of the GNU GPL version 2.
Richard Stallman、Bill Xu
Let's go back to the 70s decade of the last century. As I understand, at that time, computer software had always been free. For the young people today, the 70s is ancient times. As one of the old-time computer hackers, could you please tell us the enviroment at that time, such as the computer, the operating system and the computer language you used at that time? How do the people cooperate each other? What's the main challenge at that time?Richard Stallman:
The MIT Artificial Intelligence Lab had a powerful PDP-10 computer with a large memory -- a whole megabyte (later expanded to two). On it ran the Incompatible Timsharing System, which was developed by the lab's hackers for hackers (and researchers). ITS was written in PDP-10 assembler language, and the only high-level language supported was Lisp. (We were not interested in any other.)
The command interpreter was also the debugger, DDT, which when running as the login command interpreter was also called HACTRN (a parody of "Fortran"). Thus, any time a program crashed, the debugger was immediately available for investigating the problem. The best hackers were familiar with all the main system programs, and would debug failures immediately, unless they were in too much of a hurry at the moment.
We also had a version of DDT loaded with the kernel to debug kernel crashes. About half the time, a good hacker could find the invalid data and fix it, even if he could not find what caused it. This made it possible to resume timesharing execution without rebooting the system, so that everyone's jobs would keep running. This was before features such as auto-save; the more changes you had in your text editor, the greater your motivation to debug the crash and losing them.Bill Xu:
As we know, you graduated from the Harvard University. When you were a undergraduate of Harvard, you worked for the AI lab of the MIT, why chose to work at MIT, not Harvard? Could you please introduce the hacker culture of the MIT at that time?Richard Stallman:
I chose to work at the MIT AI Lab because it had a powerful PDP-10 computer, with a whole megabyte of memory -- but, above all, because of the hacker community.
At Harvard, the professors were firmly in charge. They had terminals reserved for them, which they only rarely used. The rest of us often could not log in at all, because there were not enough terminals for us. By contrast, at MIT, the system hackers were effectively in charge of practical work, and did not allow anyone to hog and waste the facilities no matter how "important" he was.
I should explain what "hacker" really means. There was a community of programmers in the AI Lab who were fascinated with programming because of its potential for cleverness. This community included the developers of ITS. Some of the hackers were paid staff, and some were MIT students; a few were outsiders who wanted to join in our projects for pure fun (and we welcomed their contribution). All of us were fascinated by the cleverness of programming. We also enjoyed playful cleverness in other areas of life. We called ourselves "hackers".
One thing that some hackers sometimes did was break security on computers. Usually it was so they could log in on a computer that was going to waste, or overcome foolish administrative rules. Occasionally it was to play a joke on other hackers. However, security breaking was impossible on ITS, because there was no security. We hackers decided not to implement security, recognizing that it would be used by administrators to control us. On ITS, anyone could log in as any name, and read or write any file.
When journalists began to pay attention to hackers, around 1980, they misunderstood the word's meaning. They thought that "hacker" meant "security breaker". To avoid this confusion, we call security breakers "crackers".
After I joined the AI lab staff in 1971, my job was to join in improving the system. In other words, to be one of the system hackers. We gladly shared our software with anyone else who might want it, and some of the programs in ITS were adapted from programs written elsewhere. It was very gratifying to write improvements in the software that the people around me used every day, and feel the appreciation of the users for them.
The fascination of programming never died, but the hacker community in which hackers were free to program as they wished came pretty close to death in the mid 80s. Rebuilding this community was one of my motivations for starting the GNU Project.Bill Xu:
Someday, someone introduced the traditional Copyright Law into the computer software field, then the computer software becomes proprietary, users lost the freedom when using software.Richcard Stallman:
It was not clear in the 1960s whether software was covered by copyright, but there was already proprietary software that restricted the users. That was done using contracts. At the same time, there was also a lot of free software. In 1970, the operating systems for Digital's computers, such as the PDP-8, PDP-9 and PDP-10, were free software.
During the 70s, proprietary software gradually became the usual case. By 1982 the MIT AI Lab was just about the last free software community left. Then the lab's hacker community was wiped out by commercial meddling. The future I saw before me was an ugly future of proprietary software. That is when I said "No!"Bill Xu:
Then you launched the free software movement. So the free software movement is a social movement, not a technical one.Richard Stallman:
Yes. The idea of living a life of restriction, under the power of the developers of proprietary software, was repugnant. Even if I were the dictator, it was still morally repugnant, because I would be doing wrong to others. So I decided to build an alternative of freedom.Bill Xu:
What's your opinion for traditional Copyright Law? Is it suibable for the computer software? And how about Patent Law and Trademark Law?Richard Stallman:
These are three totally different questions, and we should not mix them up. (That is one main reason why the term "intellectual property" should not be used: it leads people to suppose that these three laws are similar. In fact, they are different on every point, and the issues they raise are not similar either.)
Computer programs are functional works, used for practical activities in your life. I believe that Functional, practical works should all be free (ziyou).
To achieve that goal by changing the law would require that copyright law should not apply to these works, and other changes in other laws. For instance, we also need to make sure that contracts can't be used to make a program non-free. And some law would have to require distribution of source code to those who get the binaries. Thus, it would be misleading to say that I would like to see the abolition of copyright for software. That change would be harmful unless combined with other changes.
As for patent law, that's a totally different issue. Applying patent law to software is absurd. A large program combines thousands of ideas. If 10% of them are patented, that means the developer can face hundreds of different lawsuits. It makes all software developers suffer -- only the global megacorporations benefit.
As you can see, the effects of copyright law and patent law on software are totally different. To treat these laws as a single issue is disastrous confusion. To help avoid confusion, never use the term "intellectual property". (See http://www.gnu.org/philosophy/not-ipr.html.)
Trademark law is a totally different issue. The purpose of trademarks is so you can tell what you're buying. I think that is a good system. In general I support trademark law.Bill Xu:
Since you couldn't make existing software free in 1983, you needed another way to grant the users' freedom on software. So you invented the Copyleft. I bet it's a great invention. We are desious to know when and how you did that? and its background? Is Copyleft the law base of free software movement?Richard Stallman:
To answer, I should explain the meaning of free software, and the meaning of copyleft.
Free software means that the user has four essential freedoms.
- Freedom to run the program as you wish.
- Freedom to study the source code and change it to do what you wish.
- Freedom to redistribute copies of the program, when you wish.
- Freedom to distribute copies of your modified versions, when you wish.
All free software programs give the user these freedoms. So if user A has a free program, he has these freedoms. What then happens when user A redistributes to user B? Does user B get the same freedoms? In other words, if the program is free software for user A, does it have to be free software for user B too?
Some free software licenses insist that user A must pass along these four freedoms to user B. These are the copyleft licenses. Other free software licenses do not require this; they allow user A to impose his own restrictions on user B. These are non-copyleft licenses.
To summarize: a free software license respects your freedom; it does not take your freedom away. A copyleft license goes further, and defends your freedom against middlemen that might wish to take your freedom away.Bill Xu:
Then in the Copyright Law field, the main two thoughts are copyleft and copyright, the proprietary software license usually base on copyright, and the free software license usually base on copyleft, right?Richard Stallman:
No, that's a misunderstanding. Nearly all free software is copyrighted. Free software licenses operate based on copyright law.
In particular, copyleft licenses operate based on copyright law. By inventing copyleft, I figured out a way to use copyright law to defend users' freedom.Bill Xu:
When you decided to develop the GNU operating system, the idealism goal is software freedom. But we need a pragmatic way to let more and more people join this movement, share and cooperate each other, and keep the souce code free. Then you wrote the version 1 of GNU GPL. How did you do that? What did the GNU GPL v1 resolve mainly? What's the feedback at that time?Richard Stallman:
I began developing copyleft licenses in 1985, for GNU Emacs. For the first few years, each GNU package had its own license. For instance, GNU Emacs had the GNU Emacs General Public License, and GCC had the GCC General Public License. These two copyleft licenses were almost the same, but they were not identical, because each one stated the name of the program it applied to. Thus, the GNU Emacs General Public License said it was the license of GNU Emacs, and the GCC General Public License said it was the license of GCC.
This was inconvenient, so in 1989 I figured out a way to avoid stating the program's name in its license. That way, the exact same license text could be used for all programs. This is what I released as version 1 of the GNU General Public License.Bill Xu:
Just after 2 years, you released the version 2 of GNU GPL in 1991. What urged you to revise it so soon? What's the main problem to resolve? How did you do that? What did the computer industry like in 1991?Richard Stallman:
The overall purpose of the GNU GPL is to defend the four freedoms for all users of all versions of a program. That has been true since version 1, and it is true today. The changes in subsequent GPL versions were in the details of how to achieve this. Most changes are responses to changes in the situation around us.
The two main changes in GPL version 2, that I recall, were:
- the addition of section 7, designed to prevent patent holders from making the program non-free by imposing conditions on redistributors through patent licenses.
- redesign of the "system library" exception to handle systems with unbundled compilers. We decided that libraries distributed with the compiler could count as system libraries.
At the same time, Linus Torvalds began to work on a non-commercial replacement for MINIX, Linux. In 1992, he changed the license of Linux to GNU GPL v2, prepared to work with GNU system together.Richard Stallman:
I think that statement is a misunderstaning. The issue was not whether Linux worked with the GNU system, since it did from the first. The issue is whether Linux was free software.
Before Feb 1992, Linux was not free software, because its license was too restrictive.(It did not allow commercial redistribution.) You could use Linux with the incomplete GNU system then, but the combination was not a free operating system.
When Linux was released under the GNU GPL, in 1992, it became free software. Thus, the combination of the incomplete GNU system and Linux was a complete free operating system. That is what made it so important: it was the first available free operating system since the 70s, and the first that ran on a PC.Bill Xu:
Linux and GNU developers worked to integrate GNU with Linux, it's a hard but interesting work. What did the GNU Project and FSF do to help that happen?Richard Stallman:
FSF staff made large changes in GNU Libc to make it work with Linux as part of the GNU/Linux system. We also installed changes in several other GNU components which are not portable. However, we have never been involved in the development of Linux itself.Bill Xu:
GNU developers were developing Hurd at that time, a more excellent kernel in design. When you found Linux, did it affect the Hurd's develop plan?Richard Stallman:
The GNU Hurd is the kernel that we began in 1990 to develop for the GNU system. It consists of several modular servers that were developed to run on the already-existing Mach microkernel.
The appearance of Linux as free software in 1992 did not immediately affect development of the Hurd; we expected it to be ready soon. However, problems delayed the Hurd for years, and it still isn't suitable for general use. In fact, there seem to be some fundamental problems with microkernel-based design. Around 1998 we stopped employing programmers to work on the Hurd.
Volunteers do continue working on the Hurd, and on a new microkernel for it to run on. Perhaps eventually it will be ready for general use, but that won't be soon.
The fact that the Hurd has not succeeded is sad, but no disaster -- because we have Linux to use instead.Bill Xu:
Even after the integration of GNU and Linux, this new GNU varient was also hard to install and use. There was not the concept of distribution at that time. As I remember, FSF help to start the Debian Project, and then more and more GNU/Linux distributions came out. Since GNU/Linux is a varient of the GNU operating system, why did FSF or GNU not do a distribution of it? Could you please tell us more about that?Richard Stallman:
We decided in 1994 to sponsor a GNU/Linux distribution, and that was Debian. However, Debian split off from the GNU Project and began distributing non-free software, which it still does to this day. This is why the GNU Project cannot recommend Debian.
As the 90s went on, essentially all GNU/Linux distros came to include non-free software. There was literally no version of GNU/Linux we could recommend. This was a great setback for the Free Software Movement, since the whole point of developing GNU was to escape from non-free software. The change reflected the fact that most users of GNU/Linux appreciated it for its practical advantages, and did not appreciate freedom as such.
Since the job of developing a new distro was very large, and since sponsoring one had already gone awry, we did not try that route again. Instead we tried to convince various distro developers to make free distros. For instance, we tried to convince Debian to change its policies. But that did not work.
The first modern free distro was Ututo, which became available in 2004 or 2005. In 2006 the 100% free gNewSense distro was released. It is a modified version of Ubuntu, which is a modified version of Debian.
Now the task is to teach the users to appreciate the freedom which non-free software denies them.Bill Xu:
Until now, we have a brief understanding about the history, philosophy and the technology of the free software movement, in the next article, we'll talk more about the version 3 of the GNU GPL.Richard Stallman: