Mercurial > emacs
diff etc/THE-GNU-PROJECT @ 36404:5bac9d142978
*** empty log message ***
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Mon, 26 Feb 2001 16:40:46 +0000 |
parents | |
children | 575c9b78d09c |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/THE-GNU-PROJECT Mon Feb 26 16:40:46 2001 +0000 @@ -0,0 +1,909 @@ +Copyright (C) 1998 Richard Stallman + + Permission is granted to anyone to make or distribute verbatim copies +of this document, in any medium, provided that the copyright notice and +permission notice are preserved, and that the distributor grants the +recipient permission for further redistribution as permitted by this +notice. + + Modified versions may not be made. + + + The GNU Project + + by Richard Stallman + + originally published in the book "Open Sources" + + The first software-sharing community + + When I started working at the MIT Artificial Intelligence Lab in 1971, + I became part of a software-sharing community that had existed for + many years. Sharing of software was not limited to our particular + community; it is as old as computers, just as sharing of recipes is as + old as cooking. But we did it more than most. + + The AI Lab used a timesharing operating system called ITS (the + Incompatible Timesharing System) that the lab's staff hackers (1) had + designed and written in assembler language for the Digital PDP-10, one + of the large computers of the era. As a member of this community, an + AI lab staff system hacker, my job was to improve this system. + + We did not call our software "free software", because that term did + not yet exist; but that is what it was. Whenever people from another + university or a company wanted to port and use a program, we gladly + let them. 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. + + (1) The use of "hacker" to mean "security breaker" is a confusion on + the part of the mass media. We hackers refuse to recognize that + meaning, and continue using the word to mean, "Someone who loves to + program and enjoys being clever about it." + + The collapse of the community + + The situation changed drastically in the early 1980s when Digital + discontinued the PDP-10 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 + 1981, 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.) When the AI lab bought a new PDP-10 in 1982, its + administrators decided to use Digital's non-free timesharing system + instead of ITS. + + The modern computers of the era, such as the VAX or the 68020, 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. The rule + made by the owners of proprietary software was, "If you share with + your neighbor, you are a pirate. 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 proprietary social system as 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. + + When software publishers talk about "enforcing" their "rights" or + "stopping piracy", what they actually *say* is secondary. The real + message of these statements is in the unstated assumptions they take + for granted; the public is supposed to accept them uncritically. So + let's 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 common-sense 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. + + There is no room here for an extensive statement of the reasoning + behind this conclusion, so I refer the reader to the web page, + <http://www.gnu.org/philosophy/why-free.html>. + + A stark moral choice. + + 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. The name GNU was chosen following a hacker tradition, as + a recursive acronym for "GNU's Not Unix." + + An operating system does not mean just a kernel, barely enough to run + other programs. In the 1970s, every operating system worthy of the + name included command processors, assemblers, compilers, interpreters, + debuggers, text editors, mailers, and much more. ITS had them, Multics + had them, VMS had them, and Unix had them. The GNU operating system + would include them too. + + Later I heard these words, attributed to Hillel (1): + + If I am not for myself, who will be for me? + If I am only for myself, what am I? + If not now, when? + + The decision to start the GNU project was based on a similar spirit. + + (1) As an Atheist, I don't follow any religious leaders, but I + sometimes find I admire something one of them has said. + + Free as in freedom + + The term "free software" is sometimes misunderstood--it has nothing to + do with price. It is about freedom. Here, therefore, is the definition + of free software: a program is free software, for you, a particular + user, if: + + * You have the freedom to run the program, for any purpose. + * You have the freedom to modify the program to suit your needs. (To + make this freedom effective in practice, you must have access to + the source code, since making changes in a program without having + the source code is exceedingly difficult.) + * You have the freedom to redistribute copies, either gratis or for + a fee. + * You have the freedom to distribute modified versions of the + program, so that the community can benefit from your improvements. + + Since "free" refers to freedom, not to price, there is no + contradiction between selling copies and 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. + + Because of the ambiguity of "free", people have long looked for + alternatives, but no one has found a suitable alternative. The English + Language has more words and nuances than any other, but it lacks a + simple, unambiguous, word that means "free," as in + freedom--"unfettered," being the word that comes closest in meaning. + Such alternatives as "liberated", "freedom" and "open" have either the + wrong meaning or some other disadvantage. + + GNU software and the GNU system + + 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 this decision, 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. + + Commencing the project + + In January 1984 I quit my job at MIT and began writing GNU software. + Leaving MIT was necessary so that MIT would not be able to interfere + with distributing GNU as 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. + + However, Professor Winston, then the head of the MIT AI Lab, kindly + invited me to keep using the lab's facilities. + + The first steps + + Shortly before beginning the GNU project, I heard about the Free + University Compiler Kit, also known as VUCK. (The Dutch word for + "free" is written with a V.) 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 multi-language, multi-platform compiler. + + Hoping to avoid the need to write the whole compiler myself, I + obtained the source code for the Pastel compiler, which was a + multi-platform 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 68000 computer. But I had to give that up + when I discovered that the compiler needed many megabytes of stack + space, and the available 68000 Unix system would only allow 64k. + + I then realized that the Pastel compiler functioned by parsing the + entire input file into a syntax tree, converting the whole syntax tree + into a chain of "instructions", and then generating the whole output + file, without ever freeing any storage. 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. But that + was some years later; first, I worked on GNU Emacs. + + GNU Emacs + + I began work on GNU Emacs in September 1984, and in early 1985 it was + beginning to be usable. 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. Of course, I put it on the anonymous + ftp server on the MIT computer that I used. (This computer, + prep.ai.mit.edu, thus became the principal GNU ftp distribution site; + when it was decommissioned a few years later, we transferred the name + to our new ftp server.) 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? + + I could have said, "Find a friend who is on the net and who will make + a copy for you." Or I could have done what I did with the original + PDP-10 Emacs: tell them, "Mail me a tape and a SASE, and I will mail + it back with Emacs on it." But I had no job, and I was looking for + ways to make money from free software. So I announced that I would + mail a tape to whoever wanted one, for a fee of $150. In this way, I + started a free software distribution business, the precursor of the + companies that today distribute entire Linux-based GNU systems. + + Is a program free for every user? + + 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. Their goal was not + freedom, just "success", defined as "having many users." They did not + care whether these users had freedom, only that they should be + numerous. + + This lead to a paradoxical situation where two different ways of + counting the amount of freedom gave different answers to the question, + "Is this program free?" If you judged based on the freedom provided by + the distribution terms of the MIT release, you would say that X was + free software. 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. + + Copyleft and the GNU GPL + + 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. The method we use is + called "copyleft".(1) + + Copyleft uses copyright law, but flips it over to serve the opposite + of its usual purpose: instead of a means of privatizing software, it + becomes a means of keeping software free. + + The central idea of copyleft is that we give everyone permission to + run the program, copy the program, modify the program, and distribute + modified versions--but not permission to add restrictions of their + own. Thus, the crucial freedoms that define "free software" are + guaranteed to everyone who has a copy; they become inalienable rights. + + For an effective copyleft, modified versions must also be free. This + ensures that work based on ours becomes available to our community if + it is published. When programmers who have jobs as programmers + volunteer to improve GNU software, it is copyleft that prevents their + employers from saying, "You can't share those changes, because we are + going to use them to make our proprietary version of the program." + + The requirement that changes must be free is essential if we want to + ensure freedom for every user of the program. The companies that + privatized the X Window System usually made some changes to port it to + their systems and hardware. These changes were small compared with the + great extent of X, but they were not trivial. If making changes were + an excuse to deny the users freedom, it would be easy for anyone to + take advantage of the excuse. + + A related issue concerns combining a free program with non-free code. + Such a combination would inevitably be non-free; whichever freedoms + are lacking for the non-free part would be lacking for the whole as + well. To permit such combinations would open a hole big enough to sink + a ship. Therefore, a crucial requirement for copyleft is to plug this + hole: anything added to or combined with a copylefted program must be + such that the larger combined version is also free and copylefted. + + The specific implementation of copyleft that we use for most GNU + software is the GNU General Public License, or GNU GPL for short. We + have other kinds of copyleft that are used in specific circumstances. + GNU manuals are copylefted also, but use a much simpler kind of + copyleft, because the complexity of the GNU GPL is not necessary for + manuals. + + (1) In 1984 or 1985, Don Hopkins (a very imaginative fellow) mailed me + a letter. On the envelope he had written several amusing sayings, + including this one: "Copyleft--all rights reversed." I used the word + "copyleft" to name the distribution concept I was developing at the + time. + + The Free Software Foundation + + As interest in using Emacs was growing, other people became involved + in the GNU project, and we decided that it was time to seek funding + once again. So in 1985 we created the Free Software Foundation, a + tax-exempt charity for free software development. The FSF also took + over the Emacs tape distribution business; later it extended this by + adding other free software (both GNU and non-GNU) to the tape, and by + selling free manuals as well. + + The FSF accepts donations, but most of its income has always come from + sales--of copies of free software, and of other related services. + Today it sells CD-ROMs of source code, CD-ROMs with binaries, nicely + printed manuals (all with freedom to redistribute and modify), and + Deluxe Distributions (where we build the whole collection of software + for your choice of platform). + + Free Software Foundation employees have written and maintained a + number of GNU software packages. Two notable ones are the C library + and the shell. The GNU C library is what every program running on a + GNU/Linux system uses to communicate with Linux. It was developed by a + member of the Free Software Foundation staff, Roland McGrath. The + shell used on most GNU/Linux systems is BASH, the Bourne Again + Shell(1), which was developed by FSF employee Brian Fox. + + We funded development of these programs because the GNU project was + not just about tools or a development environment. Our goal was a + complete operating system, and these programs were needed for that + goal. + + (1) "Bourne again Shell" is a joke on the name ``Bourne Shell'', which + was the usual shell on Unix. + + Free software support + + The free software philosophy rejects a specific widespread business + practice, but it is not against business. When businesses respect the + users' freedom, we wish them success. + + Selling copies of Emacs demonstrates one kind of free software + business. When the FSF took over that business, I needed another way + to make a living. I found it in selling services relating to the free + software I had developed. This included teaching, for subjects such as + how to program GNU Emacs and how to customize GCC, and software + development, mostly porting GCC to new platforms. + + Today each of these kinds of free software business is practiced by a + number of corporations. Some distribute free software collections on + CD-ROM; others sell support at levels ranging from answering user + questions, to fixing bugs, to adding major new features. We are even + beginning to see free software companies based on launching new free + software products. + + Watch out, though--a number of companies that associate themselves + with the term "open source" actually base their business on non-free + software that works with free software. These are not free software + companies, they are proprietary software companies whose products + tempt users away from freedom. They call these "value added", which + reflects the values they would like us to adopt: convenience above + freedom. If we value freedom more, we should call them "freedom + subtracted" products. + + Technical goals + + The principal goal of GNU was to be free software. Even if GNU had no + technical advantage over Unix, it would have a social advantage, + allowing users to cooperate, and an ethical advantage, respecting the + user's freedom. + + But it was natural to apply the known standards of good practice to + the work--for example, dynamically allocating data structures to avoid + arbitrary fixed size limits, and handling all the possible 8-bit codes + wherever that made sense. + + In addition, we rejected the Unix focus on small memory size, by + deciding not to support 16-bit machines (it was clear that 32-bit + machines would be the norm by the time the GNU system was finished), + and to make no effort to reduce memory usage unless it exceeded a + megabyte. In programs for which handling very large files was not + crucial, we encouraged programmers to read an entire input file into + core, then scan its contents without having to worry about I/O. + + These decisions enabled many GNU programs to surpass their Unix + counterparts in reliability and speed. + + Donated computers + + As the GNU project's reputation grew, people began offering to donate + machines running UNIX to the project. These were very useful, because + the easiest way to develop components of GNU was to do it on a UNIX + system, and replace the components of that system one by one. But they + raised an ethical issue: whether it was right for us to have a copy of + UNIX at all. + + UNIX was (and is) proprietary software, and the GNU project's + philosophy said that we should not use proprietary software. But, + applying the same reasoning that leads to the conclusion that violence + in self defense is justified, I concluded that it was legitimate to + use a proprietary package when that was crucial for developing free + replacement that would help others stop using the proprietary package. + + But, even if this was a justifiable evil, it was still an evil. Today + we no longer have any copies of Unix, because we have replaced them + with free operating systems. If we could not replace a machine's + operating system with a free one, we replaced the machine instead. + + The GNU Task List + + As the GNU project proceeded, and increasing numbers of system + components were found or developed, eventually it became useful to + make a list of the remaining gaps. We used it to recruit developers to + write the missing pieces. This list became known as the GNU task list. + In addition to missing Unix components, we listed added various other + useful software and documentation projects that, we thought, a truly + complete system ought to have. + + Today, hardly any Unix components are left in the GNU task list--those + jobs have been done, aside from a few inessential ones. But the list + is full of projects that some might call "applications". Any program + that appeals to more than a narrow class of users would be a useful + thing to add to an operating system. + + Even games are included in the task list--and have been since the + beginning. Unix included games, so naturally GNU should too. But + compatibility was not an issue for games, so we did not follow the + list of games that Unix had. Instead, we listed a spectrum of + different kinds of games that users might like. + + The GNU Library GPL + + The GNU C library uses a special kind of copyleft called the GNU + Library General Public License, which gives permission to link + proprietary software with the library. Why make this exception? + + It is not a matter of principle; there is no principle that says + proprietary software products are entitled to include our code. (Why + contribute to a project predicated on refusing to share with us?) + Using the LGPL for the C library, or for any library, is a matter of + strategy. + + The C library does a generic job; every proprietary system or compiler + comes with a C library. Therefore, to make our C library available + only to free software would not have given free software any + advantage--it would only have discouraged use of our library. + + One system is an exception to this: on the GNU system (and this + includes GNU/Linux), the GNU C library is the only C library. So the + distribution terms of the GNU C library determine whether it is + possible to compile a proprietary program for the GNU system. There is + no ethical reason to allow proprietary applications on the GNU system, + but strategically it seems that disallowing them would do more to + discourage use of the GNU system than to encourage development of free + applications. + + That is why using the Library GPL is a good strategy for the C + library. For other libraries, the strategic decision needs to be + considered on a case-by-case basis. When a library does a special job + that can help write certain kinds of programs, then releasing it under + the GPL, limiting it to free programs only, is a way of helping other + free software developers, giving them an advantage against proprietary + software. + + Consider GNU Readline, a library that was developed to provide + command-line editing for BASH. Readline is released under the ordinary + GNU GPL, not the Library GPL. This probably does reduce the amount + Readline is used, but that is no loss for us. Meanwhile, at least one + useful application has been made free software specifically so it + could use Readline, and that is a real gain for the community. + + Proprietary software developers have the advantages money provides; + free software developers need to make advantages for each other. I + hope some day we will have a large collection of GPL-covered libraries + that have no parallel available to proprietary software, providing + useful modules to serve as building blocks in new free software, and + adding up to a major advantage for further free software development. + + Scratching an itch? + + Eric Raymond says that "Every good work of software starts by + scratching a developer's personal itch." Maybe that happens sometimes, + but many essential pieces of GNU software were developed in order to + have a complete free operating system. They come from a vision and a + plan, not from impulse. + + For example, we developed the GNU C library because a Unix-like system + needs a C library, the Bourne-Again Shell (bash) because a Unix-like + system needs a shell, and GNU tar because a Unix-like system needs a + tar program. The same is true for my own programs--the GNU C compiler, + GNU Emacs, GDB and GNU Make. + + Some GNU programs were developed to cope with specific threats to our + freedom. Thus, we developed gzip to replace the Compress program, + which had been lost to the community because of the LZW patents. We + found people to develop LessTif, and more recently started GNOME and + Harmony, to address the problems caused by certain proprietary + libraries (see below). We are developing the GNU Privacy Guard to + replace popular non-free encryption software, because users should not + have to choose between privacy and freedom. + + Of course, the people writing these programs became interested in the + work, and many features were added to them by various people for the + sake of their own needs and interests. But that is not why the + programs exist. + + Unexpected developments + + At the beginning of the GNU project, I imagined that we would develop + the whole GNU system, then release it as a whole. That is not how it + happened. + + Since each component of the GNU system was implemented on a Unix + system, each component could run on Unix systems, long before a + complete GNU system existed. Some of these programs became popular, + and users began extending them and porting them---to the various + incompatible versions of Unix, and sometimes to other systems as well. + + The process made these programs much more powerful, and attracted both + funds and contributors to the GNU project. But it probably also + delayed completion of a minimal working system by several years, as + GNU developers' time was put into maintaining these ports and adding + features to the existing components, rather than moving on to write + one missing component after another. + + The GNU Hurd + + By 1990, the GNU system was almost complete; the only major missing + component was the kernel. We had decided to implement our kernel as a + collection of server processes running on top of Mach. Mach is a + microkernel developed at Carnegie Mellon University and then at the + University of Utah; the GNU HURD is a collection of servers (or ``herd + of gnus'') that run on top of Mach, and do the various jobs of the + Unix kernel. The start of development was delayed as we waited for + Mach to be released as free software, as had been promised. + + One reason for choosing this design was to avoid what seemed to be the + hardest part of the job: debugging a kernel program without a + source-level debugger to do it with. This part of the job had been + done already, in Mach, and we expected to debug the HURD servers as + user programs, with GDB. But it took a long time to make that + possible, and the multi-threaded servers that send messages to each + other have turned out to be very hard to debug. Making the HURD work + solidly has stretched on for many years. + + Alix + + The GNU kernel was not originally supposed to be called the HURD. Its + original name was Alix--named after the woman who was my sweetheart at + the time. She, a Unix system administrator, had pointed out how her + name would fit a common naming pattern for Unix system versions; as a + joke, she told her friends, "Someone should name a kernel after me." I + said nothing, but decided to surprise her with a kernel named Alix. + + It did not stay that way. Michael Bushnell (now Thomas), the main + developer of the kernel, preferred the name HURD, and redefined Alix + to refer to a certain part of the kernel--the part that would trap + system calls and handle them by sending messages to HURD servers. + + Ultimately, Alix and I broke up, and she changed her name; + independently, the HURD design was changed so that the C library would + send messages directly to servers, and this made the Alix component + disappear from the design. + + But before these things happened, a friend of hers came across the + name Alix in the HURD source code, and mentioned the name to her. So + the name did its job. + + Linux and GNU/Linux + + The GNU Hurd is not ready for production use. Fortunately, another + kernel is available. In 1991, Linus Torvalds developed a + Unix-compatible kernel and called it Linux. Around 1992, combining + Linux with the not-quite-complete GNU system resulted in a complete + free operating system. (Combining them was a substantial job in + itself, of course.) It is due to Linux that we can actually run a + version of the GNU system today. + + We call this system version GNU/Linux, to express its composition as a + combination of the GNU system with Linux as the kernel. + + Challenges in our future + + We have proved our ability to develop a broad spectrum of free + software. This does not mean we are invincible and unstoppable. + Several challenges make the future of free software uncertain; meeting + them will require steadfast effort and endurance, sometimes lasting + for years. It will require the kind of determination that people + display when they value their freedom and will not let anyone take it + away. + + The following four sections discuss these challenges. + + Secret hardware + + Hardware manufactures increasingly tend to keep hardware + specifications secret. This makes it difficult to write free drivers + so that Linux and XFree86 can support new hardware. We have complete + free systems today, but we will not have them tomorrow if we cannot + support tomorrow's computers. + + There are two ways to cope with this problem. Programmers can do + reverse engineering to figure out how to support the hardware. The + rest of us can choose the hardware that is supported by free software; + as our numbers increase, secrecy of specifications will become a + self-defeating policy. + + Reverse engineering is a big job; will we have programmers with + sufficient determination to undertake it? Yes--if we have built up a + strong feeling that free software is a matter of principle, and + non-free drivers are intolerable. And will large numbers of us spend + extra money, or even a little extra time, so we can use free drivers? + Yes, if the determination to have freedom is widespread. + + Non-free libraries + + A non-free library that runs on free operating systems acts as a trap + for free software developers. The library's attractive features are + the bait; if you use the library, you fall into the trap, because your + program cannot usefully be part of a free operating system. (Strictly + speaking, we could include your program, but it won't run with the + library missing.) Even worse, if a program that uses the proprietary + library becomes popular, it can lure other unsuspecting programmers + into the trap. + + The first instance of this problem was the Motif toolkit, back in the + 80s. Although there were as yet no free operating systems, it was + clear what problem Motif would cause for them later on. The GNU + Project responded in two ways: by asking individual free software + projects to support the free X toolkit widgets as well as Motif, and + by asking for someone to write a free replacement for Motif. The job + took many years; LessTif, developed by the Hungry Programmers, became + powerful enough to support most Motif applications only in 1997. + + Between 1996 and 1998, another non-free GUI toolkit library, called + Qt, was used in a substantial collection of free software, the desktop + KDE. + + Free GNU/Linux systems were unable to use KDE, because we could not + use the library. However, some commercial distributors of GNU/Linux + systems who were not strict about sticking with free software added + KDE to their systems--producing a system with more capabilities, but + less freedom. The KDE group was actively encouraging more programmers + to use Qt, and millions of new "Linux users" had never been exposed to + the idea that there was a problem in this. The situation appeared + grim. + + The free software community responded to the problem in two ways: + GNOME and Harmony. + + GNOME, the GNU Network Object Model Environment, is GNU's desktop + project. Started in 1997 by Miguel de Icaza, and developed with the + support of Red Hat Software, GNOME set out to provide similar desktop + facilities, but using free software exclusively. It has technical + advantages as well, such as supporting a variety of languages, not + just C++. But its main purpose was freedom: not to require the use of + any non-free software. + + Harmony is a compatible replacement library, designed to make it + possible to run KDE software without using Qt. + + In November 1998, the developers of Qt announced a change of license + which, when carried out, should make Qt free software. There is no way + to be sure, but I think that this was partly due to the community's + firm response to the problem that Qt posed when it was non-free. (The + new license is inconvenient and inequitable, so it remains desirable + to avoid using Qt.) + + [Subsequent note: in September 2000, Qt was rereleased under the GNU + GPL, which essentially solved this problem.] + + How will we respond to the next tempting non-free library? Will the + whole community understand the need to stay out of the trap? Or will + many of us give up freedom for convenience, and produce a major + problem? Our future depends on our philosophy. + + Software patents + + The worst threat we face comes from software patents, which can put + algorithms and features off limits to free software for up to twenty + years. The LZW compression algorithm patents were applied for in 1983, + and we still cannot release free software to produce proper compressed + GIFs. In 1998, a free program to produce MP3 compressed audio was + removed from distribution under threat of a patent suit. + + There are ways to cope with patents: we can search for evidence that a + patent is invalid, and we can look for alternative ways to do a job. + But each of these methods works only sometimes; when both fail, a + patent may force all free software to lack some feature that users + want. What will we do when this happens? + + Those of us who value free software for freedom's sake will stay with + free software anyway. We will manage to get work done without the + patented features. But those who value free software because they + expect it to be techically superior are likely to call it a failure + when a patent holds it back. Thus, while it is useful to talk about + the practical effectiveness of the "cathedral" model of development, + and the reliability and power of some free software, we must not stop + there. We must talk about freedom and principle. + + Free documentation + + The biggest deficiency in our free operating systems is not in the + software--it is the lack of good free manuals that we can include in + our systems. Documentation is an essential part of any software + package; when an important free software package does not come with a + good free manual, that is a major gap. We have many such gaps today. + + Free documentation, like free software, is a matter of freedom, not + price. The criterion for a free manual is pretty much the same as for + free software: it is a matter of giving all users certain freedoms. + Redistribution (including commercial sale) must be permitted, on-line + and on paper, so that the manual can accompany every copy of the + program. + + Permission for modification is crucial too. As a general rule, I don't + believe that it is essential for people to have permission to modify + all sorts of articles and books. For example, I don't think you or I + are obliged to give permission to modify articles like this one, which + describe our actions and our views. + + But there is a particular reason why the freedom to modify is crucial + for documentation for free software. When people exercise their right + to modify the software, and add or change its features, if they are + conscientious they will change the manual too--so they can provide + accurate and usable documentation with the modified program. A manual + which does not allow programmers to be conscientious and finish the + job, does not fill our community's needs. + + Some kinds of limits on how modifications are done pose no problem. + For example, requirements to preserve the original author's copyright + notice, the distribution terms, or the list of authors, are ok. It is + also no problem to require modified versions to include notice that + they were modified, even to have entire sections that may not be + deleted or changed, as long as these sections deal with nontechnical + topics. These kinds of restrictions are not a problem because they + don't stop the conscientious programmer from adapting the manual to + fit the modified program. In other words, they don't block the free + software community from making full use of the manual. + + However, it must be possible to modify all the *technical* content of + the manual, and then distribute the result in all the usual media, + through all the usual channels; otherwise, the restrictions do + obstruct the community, the manual is not free, and we need another + manual. + + Will free software developers have the awareness and determination to + produce a full spectrum of free manuals? Once again, our future + depends on philosophy. + + We must talk about freedom + + Estimates today are that there are ten million users of GNU/Linux + systems such as Debian GNU/Linux and Red Hat Linux. Free software has + developed such practical advantages that users are flocking to it for + purely practical reasons. + + The good consequences of this are evident: more interest in developing + free software, more customers for free software businesses, and more + ability to encourage companies to develop commercial free software + instead of proprietary software products. + + But interest in the software is growing faster than awareness of the + philosophy it is based on, and this leads to trouble. Our ability to + meet the challenges and threats described above depends on the will to + stand firm for freedom. To make sure our community has this will, we + need to spread the idea to the new users as they come into the + community. + + But we are failing to do so: the efforts to attract new users into our + community are far outstripping the efforts to teach them the civics of + our community. We need to do both, and we need to keep the two efforts + in balance. + + "Open Source" + + Teaching new users about freedom became more difficult in 1998, when a + part of the community decided to stop using the term "free software" + and say "open source software" instead. + + Some who favored this term aimed to avoid the confusion of "free" with + "gratis"--a valid goal. Others, however, aimed to set aside the spirit + of principle that had motivated the free software movement and the GNU + project, and to appeal instead to executives and business users, many + of whom hold an ideology that places profit above freedom, above + community, above principle. Thus, the rhetoric of "open source" + focuses on the potential to make high quality, powerful software, but + shuns the ideas of freedom, community, and principle. + + The "Linux" magazines are a clear example of this--they are filled + with advertisements for proprietary software that works with + GNU/Linux. When the next Motif or Qt appears, will these magazines + warn programmers to stay away from it, or will they run ads for it? + + The support of business can contribute to the community in many ways; + all else being equal, it is useful. But winning their support by + speaking even less about freedom and principle can be disastrous; it + makes the previous imbalance between outreach and civics education + even worse. + + "Free software" and "open source" describe the same category of + software, more or less, but say different things about the software, + and about values. The GNU Project continues to use the term "free + software", to express the idea that freedom, not just technology, is + important. + + Try! + + Yoda's philosophy ("There is no `try'") sounds neat, but it doesn't + work for me. I have done most of my work while anxious about whether I + could do the job, and unsure that it would be enough to achieve the + goal if I did. But I tried anyway, because there was no one but me + between the enemy and my city. Surprising myself, I have sometimes + succeeded. + + Sometimes I failed; some of my cities have fallen. Then I found + another threatened city, and got ready for another battle. Over time, + I've learned to look for threats and put myself between them and my + city, calling on other hackers to come and join me. + + Nowadays, often I'm not the only one. It is a relief and a joy when I + see a regiment of hackers digging in to hold the line, and I realize, + this city may survive--for now. But the dangers are greater each year, + and now Microsoft has explicitly targeted our community. We can't take + the future of freedom for granted. Don't take it for granted! If you + want to keep your freedom, you must be prepared to defend it.