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