1  The GNU Project
2
3   by Richard Stallman
4
5   originally published in the book "Open Sources"
6
7  The first software-sharing community
8
9   When I started working at the MIT Artificial Intelligence Lab in 1971,
10   I became part of a software-sharing community that had existed for many
11   years. Sharing of software was not limited to our particular community;
12   it is as old as computers, just as sharing of recipes is as old as
13   cooking. But we did it more than most.
14
15   The AI Lab used a timesharing operating system called ITS (the
16   Incompatible Timesharing System) that the lab's staff hackers (1) had
17   designed and written in assembler language for the Digital PDP-10, one
18   of the large computers of the era. As a member of this community, an AI
19   lab staff system hacker, my job was to improve this system.
20
21   We did not call our software "free software", because that term did not
22   yet exist; but that is what it was. Whenever people from another
23   university or a company wanted to port and use a program, we gladly let
24   them. If you saw someone using an unfamiliar and interesting program,
25   you could always ask to see the source code, so that you could read it,
26   change it, or cannibalize parts of it to make a new program.
27
28   (1) The use of "hacker" to mean "security breaker" is a confusion on
29   the part of the mass media. We hackers refuse to recognize that
30   meaning, and continue using the word to mean, "Someone who loves to
31   program and enjoys being clever about it."
32
33  The collapse of the community
34
35   The situation changed drastically in the early 1980s when Digital
36   discontinued the PDP-10 series. Its architecture, elegant and powerful
37   in the 60s, could not extend naturally to the larger address spaces
38   that were becoming feasible in the 80s. This meant that nearly all of
39   the programs composing ITS were obsolete.
40
41   The AI lab hacker community had already collapsed, not long before. In
42   1981, the spin-off company Symbolics had hired away nearly all of the
43   hackers from the AI lab, and the depopulated community was unable to
44   maintain itself. (The book Hackers, by Steve Levy, describes these
45   events, as well as giving a clear picture of this community in its
46   prime.) When the AI lab bought a new PDP-10 in 1982, its administrators
47   decided to use Digital's non-free timesharing system instead of ITS.
48
49   The modern computers of the era, such as the VAX or the 68020, had
50   their own operating systems, but none of them were free software: you
51   had to sign a nondisclosure agreement even to get an executable copy.
52
53   This meant that the first step in using a computer was to promise not
54   to help your neighbor. A cooperating community was forbidden. The rule
55   made by the owners of proprietary software was, "If you share with your
56   neighbor, you are a pirate. If you want any changes, beg us to make
57   them."
58
59   The idea that the proprietary-software social system--the system that
60   says you are not allowed to share or change software--is antisocial,
61   that it is unethical, that it is simply wrong, may come as a surprise
62   to some readers. But what else could we say about a system based on
63   dividing the public and keeping users helpless? Readers who find the
64   idea surprising may have taken proprietary-software social system as
65   given, or judged it on the terms suggested by proprietary software
66   businesses. Software publishers have worked long and hard to convince
67   people that there is only one way to look at the issue.
68
69   When software publishers talk about "enforcing" their "rights" or
70   "stopping piracy", what they actually *say* is secondary. The real
71   message of these statements is in the unstated assumptions they take
72   for granted; the public is supposed to accept them uncritically. So
73   let's examine them.
74
75   One assumption is that software companies have an unquestionable
76   natural right to own software and thus have power over all its users.
77   (If this were a natural right, then no matter how much harm it does to
78   the public, we could not object.) Interestingly, the US Constitution
79   and legal tradition reject this view; copyright is not a natural right,
80   but an artificial government-imposed monopoly that limits the users'
81   natural right to copy.
82
83   Another unstated assumption is that the only important thing about
84   software is what jobs it allows you to do--that we computer users
85   should not care what kind of society we are allowed to have.
86
87   A third assumption is that we would have no usable software (or would
88   never have a program to do this or that particular job) if we did not
89   offer a company power over the users of the program. This assumption
90   may have seemed plausible, before the free software movement
91   demonstrated that we can make plenty of useful software without putting
92   chains on it.
93
94   If we decline to accept these assumptions, and judge these issues based
95   on ordinary common-sense morality while placing the users first, we
96   arrive at very different conclusions. Computer users should be free to
97   modify programs to fit their needs, and free to share software, because
98   helping other people is the basis of society.
99
100   There is no room here for an extensive statement of the reasoning
101   behind this conclusion, so I refer the reader to the web page,
102   http://www.gnu.org/philosophy/why-free.html.
103
104  A stark moral choice.
105
106   With my community gone, to continue as before was impossible. Instead,
107   I faced a stark moral choice.
108
109   The easy choice was to join the proprietary software world, signing
110   nondisclosure agreements and promising not to help my fellow hacker.
111   Most likely I would also be developing software that was released under
112   nondisclosure agreements, thus adding to the pressure on other people
113   to betray their fellows too.
114
115   I could have made money this way, and perhaps amused myself writing
116   code. But I knew that at the end of my career, I would look back on
117   years of building walls to divide people, and feel I had spent my life
118   making the world a worse place.
119
120   I had already experienced being on the receiving end of a nondisclosure
121   agreement, when someone refused to give me and the MIT AI lab the
122   source code for the control program for our printer. (The lack of
123   certain features in this program made use of the printer extremely
124   frustrating.) So I could not tell myself that nondisclosure agreements
125   were innocent. I was very angry when he refused to share with us; I
126   could not turn around and do the same thing to everyone else.
127
128   Another choice, straightforward but unpleasant, was to leave the
129   computer field. That way my skills would not be misused, but they would
130   still be wasted. I would not be culpable for dividing and restricting
131   computer users, but it would happen nonetheless.
132
133   So I looked for a way that a programmer could do something for the
134   good. I asked myself, was there a program or programs that I could
135   write, so as to make a community possible once again?
136
137   The answer was clear: what was needed first was an operating system.
138   That is the crucial software for starting to use a computer. With an
139   operating system, you can do many things; without one, you cannot run
140   the computer at all. With a free operating system, we could again have
141   a community of cooperating hackers--and invite anyone to join. And
142   anyone would be able to use a computer without starting out by
143   conspiring to deprive his or her friends.
144
145   As an operating system developer, I had the right skills for this job.
146   So even though I could not take success for granted, I realized that I
147   was elected to do the job. I chose to make the system compatible with
148   Unix so that it would be portable, and so that Unix users could easily
149   switch to it. The name GNU was chosen following a hacker tradition, as
150   a recursive acronym for "GNU's Not Unix."
151
152   An operating system does not mean just a kernel, barely enough to run
153   other programs. In the 1970s, every operating system worthy of the name
154   included command processors, assemblers, compilers, interpreters,
155   debuggers, text editors, mailers, and much more. ITS had them, Multics
156   had them, VMS had them, and Unix had them. The GNU operating system
157   would include them too.
158
159   Later I heard these words, attributed to Hillel (1):
160
161     If I am not for myself, who will be for me?
162     If I am only for myself, what am I?
163     If not now, when?
164
165   The decision to start the GNU project was based on a similar spirit.
166
167   (1) As an Atheist, I don't follow any religious leaders, but I
168   sometimes find I admire something one of them has said.
169
170  Free as in freedom
171
172   The term "free software" is sometimes misunderstood--it has nothing to
173   do with price. It is about freedom. Here, therefore, is the definition
174   of free software: a program is free software, for you, a particular
175   user, if:
176     * You have the freedom to run the program, for any purpose.
177     * You have the freedom to modify the program to suit your needs. (To
178       make this freedom effective in practice, you must have access to
179       the source code, since making changes in a program without having
180       the source code is exceedingly difficult.)
181     * You have the freedom to redistribute copies, either gratis or for a
182       fee.
183     * You have the freedom to distribute modified versions of the
184       program, so that the community can benefit from your improvements.
185
186   Since "free" refers to freedom, not to price, there is no contradiction
187   between selling copies and free software. In fact, the freedom to sell
188   copies is crucial: collections of free software sold on CD-ROMs are
189   important for the community, and selling them is an important way to
190   raise funds for free software development. Therefore, a program which
191   people are not free to include on these collections is not free
192   software.
193
194   Because of the ambiguity of "free", people have long looked for
195   alternatives, but no one has found a suitable alternative. The English
196   Language has more words and nuances than any other, but it lacks a
197   simple, unambiguous, word that means "free", as in
198   freedom--"unfettered" being the word that comes closest in meaning.
199   Such alternatives as "liberated", "freedom", and "open" have either the
200   wrong meaning or some other disadvantage.
201
202  GNU software and the GNU system
203
204   Developing a whole system is a very large project. To bring it into
205   reach, I decided to adapt and use existing pieces of free software
206   wherever that was possible. For example, I decided at the very
207   beginning to use TeX as the principal text formatter; a few years
208   later, I decided to use the X Window System rather than writing another
209   window system for GNU.
210
211   Because of this decision, the GNU system is not the same as the
212   collection of all GNU software. The GNU system includes programs that
213   are not GNU software, programs that were developed by other people and
214   projects for their own purposes, but which we can use because they are
215   free software.
216
217  Commencing the project
218
219   In January 1984 I quit my job at MIT and began writing GNU software.
220   Leaving MIT was necessary so that MIT would not be able to interfere
221   with distributing GNU as free software. If I had remained on the staff,
222   MIT could have claimed to own the work, and could have imposed their
223   own distribution terms, or even turned the work into a proprietary
224   software package. I had no intention of doing a large amount of work
225   only to see it become useless for its intended purpose: creating a new
226   software-sharing community.
227
228   However, Professor Winston, then the head of the MIT AI Lab, kindly
229   invited me to keep using the lab's facilities.
230
231  The first steps
232
233   Shortly before beginning the GNU project, I heard about the Free
234   University Compiler Kit, also known as VUCK. (The Dutch word for "free"
235   is written with a V.) This was a compiler designed to handle multiple
236   languages, including C and Pascal, and to support multiple target
237   machines. I wrote to its author asking if GNU could use it.
238
239   He responded derisively, stating that the university was free but the
240   compiler was not. I therefore decided that my first program for the GNU
241   project would be a multi-language, multi-platform compiler.
242
243   Hoping to avoid the need to write the whole compiler myself, I obtained
244   the source code for the Pastel compiler, which was a multi-platform
245   compiler developed at Lawrence Livermore Lab. It supported, and was
246   written in, an extended version of Pascal, designed to be a
247   system-programming language. I added a C front end, and began porting
248   it to the Motorola 68000 computer. But I had to give that up when I
249   discovered that the compiler needed many megabytes of stack space, and
250   the available 68000 Unix system would only allow 64k.
251
252   I then realized that the Pastel compiler functioned by parsing the
253   entire input file into a syntax tree, converting the whole syntax tree
254   into a chain of "instructions", and then generating the whole output
255   file, without ever freeing any storage. At this point, I concluded I
256   would have to write a new compiler from scratch. That new compiler is
257   now known as GCC; none of the Pastel compiler is used in it, but I
258   managed to adapt and use the C front end that I had written. But that
259   was some years later; first, I worked on GNU Emacs.
260
261  GNU Emacs
262
263   I began work on GNU Emacs in September 1984, and in early 1985 it was
264   beginning to be usable. This enabled me to begin using Unix systems to
265   do editing; having no interest in learning to use vi or ed, I had done
266   my editing on other kinds of machines until then.
267
268   At this point, people began wanting to use GNU Emacs, which raised the
269   question of how to distribute it. Of course, I put it on the anonymous
270   ftp server on the MIT computer that I used. (This computer,
271   prep.ai.mit.edu, thus became the principal GNU ftp distribution site;
272   when it was decommissioned a few years later, we transferred the name
273   to our new ftp server.) But at that time, many of the interested people
274   were not on the Internet and could not get a copy by ftp. So the
275   question was, what would I say to them?
276
277   I could have said, "Find a friend who is on the net and who will make a
278   copy for you." Or I could have done what I did with the original PDP-10
279   Emacs: tell them, "Mail me a tape and a SASE, and I will mail it back
280   with Emacs on it." But I had no job, and I was looking for ways to make
281   money from free software. So I announced that I would mail a tape to
282   whoever wanted one, for a fee of $150. In this way, I started a free
283   software distribution business, the precursor of the companies that
284   today distribute entire Linux-based GNU systems.
285
286  Is a program free for every user?
287
288   If a program is free software when it leaves the hands of its author,
289   this does not necessarily mean it will be free software for everyone
290   who has a copy of it. For example, public domain software (software
291   that is not copyrighted) is free software; but anyone can make a
292   proprietary modified version of it. Likewise, many free programs are
293   copyrighted but distributed under simple permissive licenses which
294   allow proprietary modified versions.
295
296   The paradigmatic example of this problem is the X Window System.
297   Developed at MIT, and released as free software with a permissive
298   license, it was soon adopted by various computer companies. They added
299   X to their proprietary Unix systems, in binary form only, and covered
300   by the same nondisclosure agreement. These copies of X were no more
301   free software than Unix was.
302
303   The developers of the X Window System did not consider this a
304   problem--they expected and intended this to happen. Their goal was not
305   freedom, just "success", defined as "having many users." They did not
306   care whether these users had freedom, only that they should be
307   numerous.
308
309   This lead to a paradoxical situation where two different ways of
310   counting the amount of freedom gave different answers to the question,
311   "Is this program free?" If you judged based on the freedom provided by
312   the distribution terms of the MIT release, you would say that X was
313   free software. But if you measured the freedom of the average user of
314   X, you would have to say it was proprietary software. Most X users were
315   running the proprietary versions that came with Unix systems, not the
316   free version.
317
318  Copyleft and the GNU GPL
319
320   The goal of GNU was to give users freedom, not just to be popular. So
321   we needed to use distribution terms that would prevent GNU software
322   from being turned into proprietary software. The method we use is
323   called "copyleft".(1)
324
325   Copyleft uses copyright law, but flips it over to serve the opposite of
326   its usual purpose: instead of a means of privatizing software, it
327   becomes a means of keeping software free.
328
329   The central idea of copyleft is that we give everyone permission to run
330   the program, copy the program, modify the program, and distribute
331   modified versions--but not permission to add restrictions of their own.
332   Thus, the crucial freedoms that define "free software" are guaranteed
333   to everyone who has a copy; they become inalienable rights.
334
335   For an effective copyleft, modified versions must also be free. This
336   ensures that work based on ours becomes available to our community if
337   it is published. When programmers who have jobs as programmers
338   volunteer to improve GNU software, it is copyleft that prevents their
339   employers from saying, "You can't share those changes, because we are
340   going to use them to make our proprietary version of the program."
341
342   The requirement that changes must be free is essential if we want to
343   ensure freedom for every user of the program. The companies that
344   privatized the X Window System usually made some changes to port it to
345   their systems and hardware. These changes were small compared with the
346   great extent of X, but they were not trivial. If making changes were an
347   excuse to deny the users freedom, it would be easy for anyone to take
348   advantage of the excuse.
349
350   A related issue concerns combining a free program with non-free code.
351   Such a combination would inevitably be non-free; whichever freedoms are
352   lacking for the non-free part would be lacking for the whole as well.
353   To permit such combinations would open a hole big enough to sink a
354   ship. Therefore, a crucial requirement for copyleft is to plug this
355   hole: anything added to or combined with a copylefted program must be
356   such that the larger combined version is also free and copylefted.
357
358   The specific implementation of copyleft that we use for most GNU
359   software is the GNU General Public License, or GNU GPL for short. We
360   have other kinds of copyleft that are used in specific circumstances.
361   GNU manuals are copylefted also, but use a much simpler kind of
362   copyleft, because the complexity of the GNU GPL is not necessary for
363   manuals.(2)
364
365   (1) In 1984 or 1985, Don Hopkins (a very imaginative fellow) mailed me
366   a letter. On the envelope he had written several amusing sayings,
367   including this one: "Copyleft--all rights reversed." I used the word
368   "copyleft" to name the distribution concept I was developing at the
369   time.
370
371   (2) We now use the GNU Free Documentation License for documentation.
372
373  The Free Software Foundation
374
375   As interest in using Emacs was growing, other people became involved in
376   the GNU project, and we decided that it was time to seek funding once
377   again. So in 1985 we created the Free Software Foundation, a tax-exempt
378   charity for free software development. The FSF also took over the Emacs
379   tape distribution business; later it extended this by adding other free
380   software (both GNU and non-GNU) to the tape, and by selling free
381   manuals as well.
382
383   The FSF accepts donations, but most of its income has always come from
384   sales--of copies of free software, and of other related services. Today
385   it sells CD-ROMs of source code, CD-ROMs with binaries, nicely printed
386   manuals (all with freedom to redistribute and modify), and Deluxe
387   Distributions (where we build the whole collection of software for your
388   choice of platform).
389
390   Free Software Foundation employees have written and maintained a number
391   of GNU software packages. Two notable ones are the C library and the
392   shell. The GNU C library is what every program running on a GNU/Linux
393   system uses to communicate with Linux. It was developed by a member of
394   the Free Software Foundation staff, Roland McGrath. The shell used on
395   most GNU/Linux systems is BASH, the Bourne Again Shell(1), which was
396   developed by FSF employee Brian Fox.
397
398   We funded development of these programs because the GNU project was not
399   just about tools or a development environment. Our goal was a complete
400   operating system, and these programs were needed for that goal.
401
402   (1) "Bourne again Shell" is a joke on the name ``Bourne Shell'', which
403   was the usual shell on Unix.
404
405  Free software support
406
407   The free software philosophy rejects a specific widespread business
408   practice, but it is not against business. When businesses respect the
409   users' freedom, we wish them success.
410
411   Selling copies of Emacs demonstrates one kind of free software
412   business. When the FSF took over that business, I needed another way to
413   make a living. I found it in selling services relating to the free
414   software I had developed. This included teaching, for subjects such as
415   how to program GNU Emacs and how to customize GCC, and software
416   development, mostly porting GCC to new platforms.
417
418   Today each of these kinds of free software business is practiced by a
419   number of corporations. Some distribute free software collections on
420   CD-ROM; others sell support at levels ranging from answering user
421   questions, to fixing bugs, to adding major new features. We are even
422   beginning to see free software companies based on launching new free
423   software products.
424
425   Watch out, though--a number of companies that associate themselves with
426   the term "open source" actually base their business on non-free
427   software that works with free software. These are not free software
428   companies, they are proprietary software companies whose products tempt
429   users away from freedom. They call these "value added", which reflects
430   the values they would like us to adopt: convenience above freedom. If
431   we value freedom more, we should call them "freedom subtracted"
432   products.
433
434  Technical goals
435
436   The principal goal of GNU was to be free software. Even if GNU had no
437   technical advantage over Unix, it would have a social advantage,
438   allowing users to cooperate, and an ethical advantage, respecting the
439   user's freedom.
440
441   But it was natural to apply the known standards of good practice to the
442   work--for example, dynamically allocating data structures to avoid
443   arbitrary fixed size limits, and handling all the possible 8-bit codes
444   wherever that made sense.
445
446   In addition, we rejected the Unix focus on small memory size, by
447   deciding not to support 16-bit machines (it was clear that 32-bit
448   machines would be the norm by the time the GNU system was finished),
449   and to make no effort to reduce memory usage unless it exceeded a
450   megabyte. In programs for which handling very large files was not
451   crucial, we encouraged programmers to read an entire input file into
452   core, then scan its contents without having to worry about I/O.
453
454   These decisions enabled many GNU programs to surpass their Unix
455   counterparts in reliability and speed.
456
457  Donated computers
458
459   As the GNU project's reputation grew, people began offering to donate
460   machines running UNIX to the project. These were very useful, because
461   the easiest way to develop components of GNU was to do it on a UNIX
462   system, and replace the components of that system one by one. But they
463   raised an ethical issue: whether it was right for us to have a copy of
464   UNIX at all.
465
466   UNIX was (and is) proprietary software, and the GNU project's
467   philosophy said that we should not use proprietary software. But,
468   applying the same reasoning that leads to the conclusion that violence
469   in self defense is justified, I concluded that it was legitimate to use
470   a proprietary package when that was crucial for developing a free
471   replacement that would help others stop using the proprietary package.
472
473   But, even if this was a justifiable evil, it was still an evil. Today
474   we no longer have any copies of Unix, because we have replaced them
475   with free operating systems. If we could not replace a machine's
476   operating system with a free one, we replaced the machine instead.
477
478  The GNU Task List
479
480   As the GNU project proceeded, and increasing numbers of system
481   components were found or developed, eventually it became useful to make
482   a list of the remaining gaps. We used it to recruit developers to write
483   the missing pieces. This list became known as the GNU task list. In
484   addition to missing Unix components, we listed added various other
485   useful software and documentation projects that, we thought, a truly
486   complete system ought to have.
487
488   Today, hardly any Unix components are left in the GNU task list--those
489   jobs have been done, aside from a few inessential ones. But the list is
490   full of projects that some might call "applications". Any program that
491   appeals to more than a narrow class of users would be a useful thing to
492   add to an operating system.
493
494   Even games are included in the task list--and have been since the
495   beginning. Unix included games, so naturally GNU should too. But
496   compatibility was not an issue for games, so we did not follow the list
497   of games that Unix had. Instead, we listed a spectrum of different
498   kinds of games that users might like.
499
500  The GNU Library GPL
501
502   The GNU C library uses a special kind of copyleft called the GNU
503   Library General Public License(1), which gives permission to link
504   proprietary software with the library. Why make this exception?
505
506   It is not a matter of principle; there is no principle that says
507   proprietary software products are entitled to include our code. (Why
508   contribute to a project predicated on refusing to share with us?) Using
509   the LGPL for the C library, or for any library, is a matter of
510   strategy.
511
512   The C library does a generic job; every proprietary system or compiler
513   comes with a C library. Therefore, to make our C library available only
514   to free software would not have given free software any advantage--it
515   would only have discouraged use of our library.
516
517   One system is an exception to this: on the GNU system (and this
518   includes GNU/Linux), the GNU C library is the only C library. So the
519   distribution terms of the GNU C library determine whether it is
520   possible to compile a proprietary program for the GNU system. There is
521   no ethical reason to allow proprietary applications on the GNU system,
522   but strategically it seems that disallowing them would do more to
523   discourage use of the GNU system than to encourage development of free
524   applications.
525
526   That is why using the Library GPL is a good strategy for the C library.
527   For other libraries, the strategic decision needs to be considered on a
528   case-by-case basis. When a library does a special job that can help
529   write certain kinds of programs, then releasing it under the GPL,
530   limiting it to free programs only, is a way of helping other free
531   software developers, giving them an advantage against proprietary
532   software.
533
534   Consider GNU Readline, a library that was developed to provide
535   command-line editing for BASH. Readline is released under the ordinary
536   GNU GPL, not the Library GPL. This probably does reduce the amount
537   Readline is used, but that is no loss for us. Meanwhile, at least one
538   useful application has been made free software specifically so it could
539   use Readline, and that is a real gain for the community.
540
541   Proprietary software developers have the advantages money provides;
542   free software developers need to make advantages for each other. I hope
543   some day we will have a large collection of GPL-covered libraries that
544   have no parallel available to proprietary software, providing useful
545   modules to serve as building blocks in new free software, and adding up
546   to a major advantage for further free software development.
547
548   (1) This license is now called the GNU Lesser General Public License,
549   to avoid giving the idea that all libraries ought to use it.
550   See http://www.gnu.org/philosophy/why-not-lgpl.html.
551
552  Scratching an itch?
553
554   Eric Raymond says that "Every good work of software starts by
555   scratching a developer's personal itch." Maybe that happens sometimes,
556   but many essential pieces of GNU software were developed in order to
557   have a complete free operating system. They come from a vision and a
558   plan, not from impulse.
559
560   For example, we developed the GNU C library because a Unix-like system
561   needs a C library, the Bourne-Again Shell (bash) because a Unix-like
562   system needs a shell, and GNU tar because a Unix-like system needs a
563   tar program. The same is true for my own programs--the GNU C compiler,
564   GNU Emacs, GDB and GNU Make.
565
566   Some GNU programs were developed to cope with specific threats to our
567   freedom. Thus, we developed gzip to replace the Compress program, which
568   had been lost to the community because of the LZW patents. We found
569   people to develop LessTif, and more recently started GNOME and Harmony,
570   to address the problems caused by certain proprietary libraries (see
571   below). We are developing the GNU Privacy Guard to replace popular
572   non-free encryption software, because users should not have to choose
573   between privacy and freedom.
574
575   Of course, the people writing these programs became interested in the
576   work, and many features were added to them by various people for the
577   sake of their own needs and interests. But that is not why the programs
578   exist.
579
580  Unexpected developments
581
582   At the beginning of the GNU project, I imagined that we would develop
583   the whole GNU system, then release it as a whole. That is not how it
584   happened.
585
586   Since each component of the GNU system was implemented on a Unix
587   system, each component could run on Unix systems, long before a
588   complete GNU system existed. Some of these programs became popular, and
589   users began extending them and porting them---to the various
590   incompatible versions of Unix, and sometimes to other systems as well.
591
592   The process made these programs much more powerful, and attracted both
593   funds and contributors to the GNU project. But it probably also delayed
594   completion of a minimal working system by several years, as GNU
595   developers' time was put into maintaining these ports and adding
596   features to the existing components, rather than moving on to write one
597   missing component after another.
598
599  The GNU Hurd
600
601   By 1990, the GNU system was almost complete; the only major missing
602   component was the kernel. We had decided to implement our kernel as a
603   collection of server processes running on top of Mach. Mach is a
604   microkernel developed at Carnegie Mellon University and then at the
605   University of Utah; the GNU HURD is a collection of servers (or ``herd
606   of gnus'') that run on top of Mach, and do the various jobs of the Unix
607   kernel. The start of development was delayed as we waited for Mach to
608   be released as free software, as had been promised.
609
610   One reason for choosing this design was to avoid what seemed to be the
611   hardest part of the job: debugging a kernel program without a
612   source-level debugger to do it with. This part of the job had been done
613   already, in Mach, and we expected to debug the HURD servers as user
614   programs, with GDB. But it took a long time to make that possible, and
615   the multi-threaded servers that send messages to each other have turned
616   out to be very hard to debug. Making the HURD work solidly has
617   stretched on for many years.
618
619  Alix
620
621   The GNU kernel was not originally supposed to be called the HURD. Its
622   original name was Alix--named after the woman who was my sweetheart at
623   the time. She, a Unix system administrator, had pointed out how her
624   name would fit a common naming pattern for Unix system versions; as a
625   joke, she told her friends, "Someone should name a kernel after me." I
626   said nothing, but decided to surprise her with a kernel named Alix.
627
628   It did not stay that way. Michael Bushnell (now Thomas), the main
629   developer of the kernel, preferred the name HURD, and redefined Alix to
630   refer to a certain part of the kernel--the part that would trap system
631   calls and handle them by sending messages to HURD servers.
632
633   Ultimately, Alix and I broke up, and she changed her name;
634   independently, the HURD design was changed so that the C library would
635   send messages directly to servers, and this made the Alix component
636   disappear from the design.
637
638   But before these things happened, a friend of hers came across the name
639   Alix in the HURD source code, and mentioned the name to her. So the
640   name did its job.
641
642  Linux and GNU/Linux
643
644   The GNU Hurd is not ready for production use. Fortunately, another
645   kernel is available. In 1991, Linus Torvalds developed a
646   Unix-compatible kernel and called it Linux. Around 1992, combining
647   Linux with the not-quite-complete GNU system resulted in a complete
648   free operating system. (Combining them was a substantial job in itself,
649   of course.) It is due to Linux that we can actually run a version of
650   the GNU system today.
651
652   We call this system version GNU/Linux, to express its composition as a
653   combination of the GNU system with Linux as the kernel.
654
655  Challenges in our future
656
657   We have proved our ability to develop a broad spectrum of free
658   software. This does not mean we are invincible and unstoppable. Several
659   challenges make the future of free software uncertain; meeting them
660   will require steadfast effort and endurance, sometimes lasting for
661   years. It will require the kind of determination that people display
662   when they value their freedom and will not let anyone take it away.
663
664   The following four sections discuss these challenges.
665
666  Secret hardware
667
668   Hardware manufacturers increasingly tend to keep hardware
669   specifications secret. This makes it difficult to write free drivers so
670   that Linux and XFree86 can support new hardware. We have complete free
671   systems today, but we will not have them tomorrow if we cannot support
672   tomorrow's computers.
673
674   There are two ways to cope with this problem. Programmers can do
675   reverse engineering to figure out how to support the hardware. The rest
676   of us can choose the hardware that is supported by free software; as
677   our numbers increase, secrecy of specifications will become a
678   self-defeating policy.
679
680   Reverse engineering is a big job; will we have programmers with
681   sufficient determination to undertake it? Yes--if we have built up a
682   strong feeling that free software is a matter of principle, and
683   non-free drivers are intolerable. And will large numbers of us spend
684   extra money, or even a little extra time, so we can use free drivers?
685   Yes, if the determination to have freedom is widespread.
686
687  Non-free libraries
688
689   A non-free library that runs on free operating systems acts as a trap
690   for free software developers. The library's attractive features are the
691   bait; if you use the library, you fall into the trap, because your
692   program cannot usefully be part of a free operating system. (Strictly
693   speaking, we could include your program, but it won't run with the
694   library missing.) Even worse, if a program that uses the proprietary
695   library becomes popular, it can lure other unsuspecting programmers
696   into the trap.
697
698   The first instance of this problem was the Motif toolkit, back in the
699   80s. Although there were as yet no free operating systems, it was clear
700   what problem Motif would cause for them later on. The GNU Project
701   responded in two ways: by asking individual free software projects to
702   support the free X toolkit widgets as well as Motif, and by asking for
703   someone to write a free replacement for Motif. The job took many years;
704   LessTif, developed by the Hungry Programmers, became powerful enough to
705   support most Motif applications only in 1997.
706
707   Between 1996 and 1998, another non-free GUI toolkit library, called Qt,
708   was used in a substantial collection of free software, the desktop KDE.
709
710   Free GNU/Linux systems were unable to use KDE, because we could not use
711   the library. However, some commercial distributors of GNU/Linux systems
712   who were not strict about sticking with free software added KDE to
713   their systems--producing a system with more capabilities, but less
714   freedom. The KDE group was actively encouraging more programmers to use
715   Qt, and millions of new "Linux users" had never been exposed to the
716   idea that there was a problem in this. The situation appeared grim.
717
718   The free software community responded to the problem in two ways: GNOME
719   and Harmony.
720
721   GNOME, the GNU Network Object Model Environment, is GNU's desktop
722   project. Started in 1997 by Miguel de Icaza, and developed with the
723   support of Red Hat Software, GNOME set out to provide similar desktop
724   facilities, but using free software exclusively. It has technical
725   advantages as well, such as supporting a variety of languages, not just
726   C++. But its main purpose was freedom: not to require the use of any
727   non-free software.
728
729   Harmony is a compatible replacement library, designed to make it
730   possible to run KDE software without using Qt.
731
732   In November 1998, the developers of Qt announced a change of license
733   which, when carried out, should make Qt free software. There is no way
734   to be sure, but I think that this was partly due to the community's
735   firm response to the problem that Qt posed when it was non-free. (The
736   new license is inconvenient and inequitable, so it remains desirable to
737   avoid using Qt.)
738
739   [Subsequent note: in September 2000, Qt was rereleased under the GNU
740   GPL, which essentially solved this problem.]
741
742   How will we respond to the next tempting non-free library? Will the
743   whole community understand the need to stay out of the trap? Or will
744   many of us give up freedom for convenience, and produce a major
745   problem? Our future depends on our philosophy.
746
747  Software patents
748
749   The worst threat we face comes from software patents, which can put
750   algorithms and features off limits to free software for up to twenty
751   years. The LZW compression algorithm patents were applied for in 1983,
752   and we still cannot release free software to produce proper compressed
753   GIFs. In 1998, a free program to produce MP3 compressed audio was
754   removed from distribution under threat of a patent suit.
755
756   There are ways to cope with patents: we can search for evidence that a
757   patent is invalid, and we can look for alternative ways to do a job.
758   But each of these methods works only sometimes; when both fail, a
759   patent may force all free software to lack some feature that users
760   want. What will we do when this happens?
761
762   Those of us who value free software for freedom's sake will stay with
763   free software anyway. We will manage to get work done without the
764   patented features. But those who value free software because they
765   expect it to be techically superior are likely to call it a failure
766   when a patent holds it back. Thus, while it is useful to talk about the
767   practical effectiveness of the "cathedral" model of development (1),
768   and the reliability and power of some free software, we must not stop
769   there. We must talk about freedom and principle.
770
771   (1) It would have been clearer to write `of the "bazaar" model', since
772   that was the alternative that was new and initially controversial.
773
774  Free documentation
775
776   The biggest deficiency in our free operating systems is not in the
777   software--it is the lack of good free manuals that we can include in
778   our systems. Documentation is an essential part of any software
779   package; when an important free software package does not come with a
780   good free manual, that is a major gap. We have many such gaps today.
781
782   Free documentation, like free software, is a matter of freedom, not
783   price. The criterion for a free manual is pretty much the same as for
784   free software: it is a matter of giving all users certain freedoms.
785   Redistribution (including commercial sale) must be permitted, on-line
786   and on paper, so that the manual can accompany every copy of the
787   program.
788
789   Permission for modification is crucial too. As a general rule, I don't
790   believe that it is essential for people to have permission to modify
791   all sorts of articles and books. For example, I don't think you or I
792   are obliged to give permission to modify articles like this one, which
793   describe our actions and our views.
794
795   But there is a particular reason why the freedom to modify is crucial
796   for documentation for free software. When people exercise their right
797   to modify the software, and add or change its features, if they are
798   conscientious they will change the manual too--so they can provide
799   accurate and usable documentation with the modified program. A manual
800   which does not allow programmers to be conscientious and finish the
801   job, does not fill our community's needs.
802
803   Some kinds of limits on how modifications are done pose no problem. For
804   example, requirements to preserve the original author's copyright
805   notice, the distribution terms, or the list of authors, are ok. It is
806   also no problem to require modified versions to include notice that
807   they were modified, even to have entire sections that may not be
808   deleted or changed, as long as these sections deal with nontechnical
809   topics. These kinds of restrictions are not a problem because they
810   don't stop the conscientious programmer from adapting the manual to fit
811   the modified program. In other words, they don't block the free
812   software community from making full use of the manual.
813
814   However, it must be possible to modify all the *technical* content of
815   the manual, and then distribute the result in all the usual media,
816   through all the usual channels; otherwise, the restrictions do obstruct
817   the community, the manual is not free, and we need another manual.
818
819   Will free software developers have the awareness and determination to
820   produce a full spectrum of free manuals? Once again, our future depends
821   on philosophy.
822
823  We must talk about freedom
824
825   Estimates today are that there are ten million users of GNU/Linux
826   systems such as Debian GNU/Linux and Red Hat Linux. Free software has
827   developed such practical advantages that users are flocking to it for
828   purely practical reasons.
829
830   The good consequences of this are evident: more interest in developing
831   free software, more customers for free software businesses, and more
832   ability to encourage companies to develop commercial free software
833   instead of proprietary software products.
834
835   But interest in the software is growing faster than awareness of the
836   philosophy it is based on, and this leads to trouble. Our ability to
837   meet the challenges and threats described above depends on the will to
838   stand firm for freedom. To make sure our community has this will, we
839   need to spread the idea to the new users as they come into the
840   community.
841
842   But we are failing to do so: the efforts to attract new users into our
843   community are far outstripping the efforts to teach them the civics of
844   our community. We need to do both, and we need to keep the two efforts
845   in balance.
846
847  "Open Source"
848
849   Teaching new users about freedom became more difficult in 1998, when a
850   part of the community decided to stop using the term "free software"
851   and say "open source software" instead.
852
853   Some who favored this term aimed to avoid the confusion of "free" with
854   "gratis"--a valid goal. Others, however, aimed to set aside the spirit
855   of principle that had motivated the free software movement and the GNU
856   project, and to appeal instead to executives and business users, many
857   of whom hold an ideology that places profit above freedom, above
858   community, above principle. Thus, the rhetoric of "open source" focuses
859   on the potential to make high quality, powerful software, but shuns the
860   ideas of freedom, community, and principle.
861
862   The "Linux" magazines are a clear example of this--they are filled with
863   advertisements for proprietary software that works with GNU/Linux. When
864   the next Motif or Qt appears, will these magazines warn programmers to
865   stay away from it, or will they run ads for it?
866
867   The support of business can contribute to the community in many ways;
868   all else being equal, it is useful. But winning their support by
869   speaking even less about freedom and principle can be disastrous; it
870   makes the previous imbalance between outreach and civics education even
871   worse.
872
873   "Free software" and "open source" describe the same category of
874   software, more or less, but say different things about the software,
875   and about values. The GNU Project continues to use the term "free
876   software", to express the idea that freedom, not just technology, is
877   important.
878
879  Try!
880
881   Yoda's philosophy ("There is no `try'") sounds neat, but it doesn't
882   work for me. I have done most of my work while anxious about whether I
883   could do the job, and unsure that it would be enough to achieve the
884   goal if I did. But I tried anyway, because there was no one but me
885   between the enemy and my city. Surprising myself, I have sometimes
886   succeeded.
887
888   Sometimes I failed; some of my cities have fallen. Then I found another
889   threatened city, and got ready for another battle. Over time, I've
890   learned to look for threats and put myself between them and my city,
891   calling on other hackers to come and join me.
892
893   Nowadays, often I'm not the only one. It is a relief and a joy when I
894   see a regiment of hackers digging in to hold the line, and I realize,
895   this city may survive--for now. But the dangers are greater each year,
896   and now Microsoft has explicitly targeted our community. We can't take
897   the future of freedom for granted. Don't take it for granted! If you
898   want to keep your freedom, you must be prepared to defend it.
899
900  Copyright (C) 1998 Richard Stallman
901
902  Verbatim copying and distribution of this entire article is permitted
903  in any medium, provided this notice is preserved.
904