Every computer user needs an operating system; if there is no free operating system, then you can't even get started using a computer without resorting to proprietary software. So the first item on the free software agenda obviously had to be a free operating system.
We decided to make the operating system compatible with Unix because the overall design was already proven and portable, and because compatibility makes it easy for Unix users to switch from Unix to GNU.
A Unix-like operating system includes a kernel, compilers, editors, text formatters, mail software, graphical interfaces, libraries, games and many other things. Thus, writing a whole operating system is a very large job. We started in January By we had either found or written all the major components except one—the kernel. Then Linux, a Unix-like kernel, was developed by Linus Torvalds in and made free software in However, the GNU Project is not limited to the core operating system.
We aim to provide a whole spectrum of software, whatever many users want to have. This includes application software. If you saw someone using an unfamiliar and interesting program, you could always ask to see the source code, so that you could read it, change it, or cannibalize parts of it to make a new program. Why it is even more important than ever to insist that the software we use be free.
The situation changed drastically in the early s when Digital discontinued the PDP series. Its architecture, elegant and powerful in the 60s, could not extend naturally to the larger address spaces that were becoming feasible in the 80s. This meant that nearly all of the programs composing ITS were obsolete. The AI Lab hacker community had already collapsed, not long before. In , the spin-off company Symbolics had hired away nearly all of the hackers from the AI Lab, and the depopulated community was unable to maintain itself.
The book Hackers , by Steve Levy, describes these events, as well as giving a clear picture of this community in its prime. The modern computers of the era, such as the VAX or the , had their own operating systems, but none of them were free software: you had to sign a nondisclosure agreement even to get an executable copy. This meant that the first step in using a computer was to promise not to help your neighbor. A cooperating community was forbidden.
If you want any changes, beg us to make them. The idea that the proprietary software social system—the system that says you are not allowed to share or change software—is antisocial, that it is unethical, that it is simply wrong, may come as a surprise to some readers. But what else could we say about a system based on dividing the public and keeping users helpless?
Readers who find the idea surprising may have taken the proprietary software social system as a given, or judged it on the terms suggested by proprietary software businesses. Software publishers have worked long and hard to convince people that there is only one way to look at the issue. The real message of these statements is in the unstated assumptions they take for granted, which the public is asked to accept without examination.
Let's therefore examine them. One assumption is that software companies have an unquestionable natural right to own software and thus have power over all its users. If this were a natural right, then no matter how much harm it does to the public, we could not object. Interestingly, the US Constitution and legal tradition reject this view; copyright is not a natural right, but an artificial government-imposed monopoly that limits the users' natural right to copy.
Another unstated assumption is that the only important thing about software is what jobs it allows you to do—that we computer users should not care what kind of society we are allowed to have.
A third assumption is that we would have no usable software or would never have a program to do this or that particular job if we did not offer a company power over the users of the program. This assumption may have seemed plausible, before the free software movement demonstrated that we can make plenty of useful software without putting chains on it.
If we decline to accept these assumptions, and judge these issues based on ordinary commonsense morality while placing the users first, we arrive at very different conclusions. Computer users should be free to modify programs to fit their needs, and free to share software, because helping other people is the basis of society. With my community gone, to continue as before was impossible.
Instead, I faced a stark moral choice. The easy choice was to join the proprietary software world, signing nondisclosure agreements and promising not to help my fellow hacker. Most likely I would also be developing software that was released under nondisclosure agreements, thus adding to the pressure on other people to betray their fellows too. I could have made money this way, and perhaps amused myself writing code. But I knew that at the end of my career, I would look back on years of building walls to divide people, and feel I had spent my life making the world a worse place.
I had already experienced being on the receiving end of a nondisclosure agreement, when someone refused to give me and the MIT AI Lab the source code for the control program for our printer. The lack of certain features in this program made use of the printer extremely frustrating. So I could not tell myself that nondisclosure agreements were innocent.
I was very angry when he refused to share with us; I could not turn around and do the same thing to everyone else. Another choice, straightforward but unpleasant, was to leave the computer field. That way my skills would not be misused, but they would still be wasted.
I would not be culpable for dividing and restricting computer users, but it would happen nonetheless. So I looked for a way that a programmer could do something for the good. I asked myself, was there a program or programs that I could write, so as to make a community possible once again? The answer was clear: what was needed first was an operating system.
That is the crucial software for starting to use a computer. With an operating system, you can do many things; without one, you cannot run the computer at all. With a free operating system, we could again have a community of cooperating hackers—and invite anyone to join. And anyone would be able to use a computer without starting out by conspiring to deprive his or her friends.
As an operating system developer, I had the right skills for this job. So even though I could not take success for granted, I realized that I was elected to do the job. I chose to make the system compatible with Unix so that it would be portable, and so that Unix users could easily switch to it.
An operating system does not mean just a kernel, barely enough to run other programs. In the s, every operating system worthy of the name included command processors, assemblers, compilers, interpreters, debuggers, text editors, mailers, and much more. The GNU operating system would include them too. If I am not for myself, who will be for me? If I am only for myself, what am I?
If not now, when? It is about freedom. Here, therefore, is the definition of free software. In fact, the freedom to sell copies is crucial: collections of free software sold on CD-ROMs are important for the community, and selling them is an important way to raise funds for free software development.
Therefore, a program which people are not free to include on these collections is not free software. Developing a whole system is a very large project. To bring it into reach, I decided to adapt and use existing pieces of free software wherever that was possible.
For example, I decided at the very beginning to use TeX as the principal text formatter; a few years later, I decided to use the X Window System rather than writing another window system for GNU. Because of these decisions, and others like them, the GNU system is not the same as the collection of all GNU software. The GNU system includes programs that are not GNU software, programs that were developed by other people and projects for their own purposes, but which we can use because they are free software.
If I had remained on the staff, MIT could have claimed to own the work, and could have imposed their own distribution terms, or even turned the work into a proprietary software package. I had no intention of doing a large amount of work only to see it become useless for its intended purpose: creating a new software-sharing community. This was a compiler designed to handle multiple languages, including C and Pascal, and to support multiple target machines.
I wrote to its author asking if GNU could use it. He responded derisively, stating that the university was free but the compiler was not. I therefore decided that my first program for the GNU Project would be a multilanguage, multiplatform compiler. Hoping to avoid the need to write the whole compiler myself, I obtained the source code for the Pastel compiler, which was a multiplatform compiler developed at Lawrence Livermore Lab.
It supported, and was written in, an extended version of Pascal, designed to be a system-programming language. I added a C front end, and began porting it to the Motorola computer. But I had to give that up when I discovered that the compiler needed many megabytes of stack space, and the available Unix system would only allow 64k.
At this point, I concluded I would have to write a new compiler from scratch. That new compiler is now known as GCC ; none of the Pastel compiler is used in it, but I managed to adapt and use the C front end that I had written. This enabled me to begin using Unix systems to do editing; having no interest in learning to use vi or ed, I had done my editing on other kinds of machines until then. At this point, people began wanting to use GNU Emacs, which raised the question of how to distribute it.
This computer, prep. But at that time, many of the interested people were not on the Internet and could not get a copy by ftp. So the question was, what would I say to them? If a program is free software when it leaves the hands of its author, this does not necessarily mean it will be free software for everyone who has a copy of it.
For example, public domain software software that is not copyrighted is free software; but anyone can make a proprietary modified version of it. Likewise, many free programs are copyrighted but distributed under simple permissive licenses which allow proprietary modified versions.
The paradigmatic example of this problem is the X Window System. Developed at MIT, and released as free software with a permissive license, it was soon adopted by various computer companies. They added X to their proprietary Unix systems, in binary form only, and covered by the same nondisclosure agreement.
These copies of X were no more free software than Unix was. The developers of the X Window System did not consider this a problem—they expected and intended this to happen. But if you measured the freedom of the average user of X, you would have to say it was proprietary software. Most X users were running the proprietary versions that came with Unix systems, not the free version. The goal of GNU was to give users freedom, not just to be popular. So we needed to use distribution terms that would prevent GNU software from being turned into proprietary software.
We talk to users, of course; if you don't, you can't say what is needed. But after doing that, we were the best able to see what kinds of improvements were feasible, and we were always talking to each other about how we would like to see the system changed, and what kinds of clear ideas we had seen in other systems that we could use. However, over time, that open culture was lost. In the Free Software Foundation founder's own words:.
New hackers were always attracted to old hackers; there were the funniest computers and the people who did the most interesting things, and also a spirit that was fun to be a part of.
Once these things were lost, there was no longer anything to recommend the place to anyone new, so new people stopped coming. There was no one they could draw inspiration from, no one they could learn those traditions from.
Also, no one to learn to do good programming from. With only a handful of professors and graduate students, who don't really know how to make a program work, you cannot learn to make good programs work.
So the MIT AI lab that I loved was gone and after a couple of years of fighting the people who did it to try to punish them for it, I decided that I should dedicate myself to trying to create a new community in that spirit.
One of the consequences of the change had to do with the decision not to use internally developed software. When the hardware was changed in the laboratory, those students and teachers who did not agree with the hacker culture were able to impose their points of view and chose to use commercial software.
In the final article I promise, it's the last one we'll see how Stallman decides that if he can't beat them, it's best to create his own project.
0コメント