Commit | Line | Data |
---|---|---|
baebd8a5 GM |
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 | ||
989b6695 | 668 | Hardware manufacturers increasingly tend to keep hardware |
baebd8a5 GM |
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. | |
5bf4787d GM |
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. |