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