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