Changeset 4166 for trunk/etc/THE-GNU-PROJECT
- Timestamp:
- 09/18/06 20:48:14 (2 years ago)
- Files:
-
- trunk/etc/THE-GNU-PROJECT (modified) (35 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/etc/THE-GNU-PROJECT
r3554 r4166 8 8 9 9 When I started working at the MIT Artificial Intelligence Lab in 1971, 10 I became part of a software-sharing community that had existed for 11 many years. Sharing of software was not limited to our particular12 community; it is as old as computers, just as sharing of recipes isas13 old as cooking.But we did it more than most.10 I became part of a software-sharing community that had existed for many 11 years. Sharing of software was not limited to our particular community; 12 it is as old as computers, just as sharing of recipes is as old as 13 cooking. But we did it more than most. 14 14 15 15 The AI Lab used a timesharing operating system called ITS (the 16 16 Incompatible Timesharing System) that the lab's staff hackers (1) had 17 17 designed and written in assembler language for the Digital PDP-10, one 18 of the large computers of the era. As a member of this community, an 19 AI lab staff system hacker, my job was to improve this system. 20 21 We did not call our software "free software", because that term did 22 not yet exist; but that is what it was. Whenever people from another 23 university or a company wanted to port and use a program, we gladly 24 let them. If you saw someone using an unfamiliar and interesting 25 program, you could always ask to see the source code, so that you 26 could read it, change it, or cannibalize parts of it to make a new 27 program. 18 of the large computers of the era. As a member of this community, an AI 19 lab staff system hacker, my job was to improve this system. 20 21 We did not call our software "free software", because that term did not 22 yet exist; but that is what it was. Whenever people from another 23 university or a company wanted to port and use a program, we gladly let 24 them. If you saw someone using an unfamiliar and interesting program, 25 you could always ask to see the source code, so that you could read it, 26 change it, or cannibalize parts of it to make a new program. 28 27 29 28 (1) The use of "hacker" to mean "security breaker" is a confusion on 30 the part of the mass media. We hackers refuse to recognize that29 the part of the mass media. We hackers refuse to recognize that 31 30 meaning, and continue using the word to mean, "Someone who loves to 32 31 program and enjoys being clever about it." … … 35 34 36 35 The situation changed drastically in the early 1980s when Digital 37 discontinued the PDP-10 series. Its architecture, elegant and powerful36 discontinued the PDP-10 series. Its architecture, elegant and powerful 38 37 in the 60s, could not extend naturally to the larger address spaces 39 that were becoming feasible in the 80s. This meant that nearly all of38 that were becoming feasible in the 80s. This meant that nearly all of 40 39 the programs composing ITS were obsolete. 41 40 42 The AI lab hacker community had already collapsed, not long before. In41 The AI lab hacker community had already collapsed, not long before. In 43 42 1981, the spin-off company Symbolics had hired away nearly all of the 44 43 hackers from the AI lab, and the depopulated community was unable to 45 maintain itself. (The book Hackers, by Steve Levy, describes these44 maintain itself. (The book Hackers, by Steve Levy, describes these 46 45 events, as well as giving a clear picture of this community in its 47 prime.) When the AI lab bought a new PDP-10 in 1982, its 48 administrators decided to use Digital's non-free timesharing system 49 instead of ITS. 46 prime.) When the AI lab bought a new PDP-10 in 1982, its administrators 47 decided to use Digital's non-free timesharing system instead of ITS. 50 48 51 49 The modern computers of the era, such as the VAX or the 68020, had … … 54 52 55 53 This meant that the first step in using a computer was to promise not 56 to help your neighbor. A cooperating community was forbidden.The rule57 made by the owners of proprietary software was, "If you share with 58 your neighbor, you are a pirate. If you want any changes, beg us to59 makethem."60 61 The idea that the proprietary software social system--the system that54 to help your neighbor. A cooperating community was forbidden. The rule 55 made by the owners of proprietary software was, "If you share with your 56 neighbor, you are a pirate. If you want any changes, beg us to make 57 them." 58 59 The idea that the proprietary-software social system--the system that 62 60 says you are not allowed to share or change software--is antisocial, 63 61 that it is unethical, that it is simply wrong, may come as a surprise 64 to some readers. But what else could we say about a system based on62 to some readers. But what else could we say about a system based on 65 63 dividing the public and keeping users helpless? Readers who find the 66 idea surprising may have taken proprietary social system as given, or67 judged it on the terms suggested by proprietary software businesses.68 Software publishers have worked long and hard to convince people that69 there is only one way to look at the issue.64 idea surprising may have taken proprietary-software social system as 65 given, or judged it on the terms suggested by proprietary software 66 businesses. Software publishers have worked long and hard to convince 67 people that there is only one way to look at the issue. 70 68 71 69 When software publishers talk about "enforcing" their "rights" or 72 "stopping piracy", what they actually *say* is secondary. The real70 "stopping piracy", what they actually *say* is secondary. The real 73 71 message of these statements is in the unstated assumptions they take 74 for granted; the public is supposed to accept them uncritically. So72 for granted; the public is supposed to accept them uncritically. So 75 73 let's examine them. 76 74 … … 78 76 natural right to own software and thus have power over all its users. 79 77 (If this were a natural right, then no matter how much harm it does to 80 the public, we could not object.) Interestingly, the US Constitution81 and legal tradition reject this view; copyright is not a natural 82 right, but an artificial government-imposed monopoly that limits the83 users'natural right to copy.78 the public, we could not object.) Interestingly, the US Constitution 79 and legal tradition reject this view; copyright is not a natural right, 80 but an artificial government-imposed monopoly that limits the users' 81 natural right to copy. 84 82 85 83 Another unstated assumption is that the only important thing about … … 87 85 should not care what kind of society we are allowed to have. 88 86 89 A third assumption is that we would have no usable software (or ,would87 A third assumption is that we would have no usable software (or would 90 88 never have a program to do this or that particular job) if we did not 91 offer a company power over the users of the program. This assumption89 offer a company power over the users of the program. This assumption 92 90 may have seemed plausible, before the free software movement 93 demonstrated that we can make plenty of useful software without 94 puttingchains on it.95 96 If we decline to accept these assumptions, and judge these issues 97 based on ordinary common-sense morality while placing the users first,98 we arrive at very different conclusions. Computer users should be free99 to modify programs to fit their needs, and free to share software,100 becausehelping other people is the basis of society.91 demonstrated that we can make plenty of useful software without putting 92 chains on it. 93 94 If we decline to accept these assumptions, and judge these issues based 95 on ordinary common-sense morality while placing the users first, we 96 arrive at very different conclusions. Computer users should be free to 97 modify programs to fit their needs, and free to share software, because 98 helping other people is the basis of society. 101 99 102 100 There is no room here for an extensive statement of the reasoning 103 101 behind this conclusion, so I refer the reader to the web page, 104 <http://www.gnu.org/philosophy/why-free.html>.102 http://www.gnu.org/philosophy/why-free.html. 105 103 106 104 A stark moral choice. 107 105 108 With my community gone, to continue as before was impossible. Instead,106 With my community gone, to continue as before was impossible. Instead, 109 107 I faced a stark moral choice. 110 108 111 109 The easy choice was to join the proprietary software world, signing 112 110 nondisclosure agreements and promising not to help my fellow hacker. 113 Most likely I would also be developing software that was released 114 under nondisclosure agreements, thus adding to the pressure on other115 peopleto betray their fellows too.111 Most likely I would also be developing software that was released under 112 nondisclosure agreements, thus adding to the pressure on other people 113 to betray their fellows too. 116 114 117 115 I could have made money this way, and perhaps amused myself writing 118 code. But I knew that at the end of my career, I would look back on116 code. But I knew that at the end of my career, I would look back on 119 117 years of building walls to divide people, and feel I had spent my life 120 118 making the world a worse place. 121 119 122 I had already experienced being on the receiving end of a 123 nondisclosure agreement, when someone refused to give me and the MIT 124 AI lab the source code for the control program for our printer. (The 125 lack of certain features in this program made use of the printer 126 extremely frustrating.) So I could not tell myself that nondisclosure 127 agreements were innocent. I was very angry when he refused to share 128 with us; I could not turn around and do the same thing to everyone 129 else. 120 I had already experienced being on the receiving end of a nondisclosure 121 agreement, when someone refused to give me and the MIT AI lab the 122 source code for the control program for our printer. (The lack of 123 certain features in this program made use of the printer extremely 124 frustrating.) So I could not tell myself that nondisclosure agreements 125 were innocent. I was very angry when he refused to share with us; I 126 could not turn around and do the same thing to everyone else. 130 127 131 128 Another choice, straightforward but unpleasant, was to leave the 132 computer field. That way my skills would not be misused, but they133 would still be wasted. I would not be culpable for dividing and134 restrictingcomputer users, but it would happen nonetheless.129 computer field. That way my skills would not be misused, but they would 130 still be wasted. I would not be culpable for dividing and restricting 131 computer users, but it would happen nonetheless. 135 132 136 133 So I looked for a way that a programmer could do something for the 137 good. I asked myself, was there a program or programs that I could134 good. I asked myself, was there a program or programs that I could 138 135 write, so as to make a community possible once again? 139 136 140 137 The answer was clear: what was needed first was an operating system. 141 That is the crucial software for starting to use a computer. With an138 That is the crucial software for starting to use a computer. With an 142 139 operating system, you can do many things; without one, you cannot run 143 the computer at all. With a free operating system, we could again have144 a community of cooperating hackers--and invite anyone to join. And140 the computer at all. With a free operating system, we could again have 141 a community of cooperating hackers--and invite anyone to join. And 145 142 anyone would be able to use a computer without starting out by 146 143 conspiring to deprive his or her friends. … … 148 145 As an operating system developer, I had the right skills for this job. 149 146 So even though I could not take success for granted, I realized that I 150 was elected to do the job. I chose to make the system compatible with147 was elected to do the job. I chose to make the system compatible with 151 148 Unix so that it would be portable, and so that Unix users could easily 152 switch to it. The name GNU was chosen following a hacker tradition, as149 switch to it. The name GNU was chosen following a hacker tradition, as 153 150 a recursive acronym for "GNU's Not Unix." 154 151 155 152 An operating system does not mean just a kernel, barely enough to run 156 other programs. In the 1970s, every operating system worthy of the157 nameincluded command processors, assemblers, compilers, interpreters,158 debuggers, text editors, mailers, and much more. ITS had them, Multics159 had them, VMS had them, and Unix had them. The GNU operating system153 other programs. In the 1970s, every operating system worthy of the name 154 included command processors, assemblers, compilers, interpreters, 155 debuggers, text editors, mailers, and much more. ITS had them, Multics 156 had them, VMS had them, and Unix had them. The GNU operating system 160 157 would include them too. 161 158 162 159 Later I heard these words, attributed to Hillel (1): 163 160 164 If I am not for myself, who will be for me?165 If I am only for myself, what am I?166 If not now, when?161 If I am not for myself, who will be for me? 162 If I am only for myself, what am I? 163 If not now, when? 167 164 168 165 The decision to start the GNU project was based on a similar spirit. … … 174 171 175 172 The term "free software" is sometimes misunderstood--it has nothing to 176 do with price. It is about freedom.Here, therefore, is the definition173 do with price. It is about freedom. Here, therefore, is the definition 177 174 of free software: a program is free software, for you, a particular 178 175 user, if: 179 180 176 * You have the freedom to run the program, for any purpose. 181 * You have the freedom to modify the program to suit your needs. (To177 * You have the freedom to modify the program to suit your needs. (To 182 178 make this freedom effective in practice, you must have access to 183 179 the source code, since making changes in a program without having 184 180 the source code is exceedingly difficult.) 185 * You have the freedom to redistribute copies, either gratis or for 186 afee.181 * You have the freedom to redistribute copies, either gratis or for a 182 fee. 187 183 * You have the freedom to distribute modified versions of the 188 184 program, so that the community can benefit from your improvements. 189 185 190 Since "free" refers to freedom, not to price, there is no 191 contradiction between selling copies and free software. In fact, the192 freedom to sell copies is crucial: collections of free software sold193 on CD-ROMs are important for the community, and selling them is an194 important way to raise funds for free software development. Therefore,195 a program which people are not free to include on these collections is196 not freesoftware.186 Since "free" refers to freedom, not to price, there is no contradiction 187 between selling copies and free software. In fact, the freedom to sell 188 copies is crucial: collections of free software sold on CD-ROMs are 189 important for the community, and selling them is an important way to 190 raise funds for free software development. Therefore, a program which 191 people are not free to include on these collections is not free 192 software. 197 193 198 194 Because of the ambiguity of "free", people have long looked for 199 alternatives, but no one has found a suitable alternative. The English195 alternatives, but no one has found a suitable alternative. The English 200 196 Language has more words and nuances than any other, but it lacks a 201 simple, unambiguous, word that means "free ,"as in202 freedom--"unfettered ," being the word that comes closest in meaning.203 Such alternatives as "liberated", "freedom" and "open" have either the197 simple, unambiguous, word that means "free", as in 198 freedom--"unfettered" being the word that comes closest in meaning. 199 Such alternatives as "liberated", "freedom", and "open" have either the 204 200 wrong meaning or some other disadvantage. 205 201 206 202 GNU software and the GNU system 207 203 208 Developing a whole system is a very large project. To bring it into204 Developing a whole system is a very large project. To bring it into 209 205 reach, I decided to adapt and use existing pieces of free software 210 wherever that was possible. For example, I decided at the very206 wherever that was possible. For example, I decided at the very 211 207 beginning to use TeX as the principal text formatter; a few years 212 later, I decided to use the X Window System rather than writing 213 anotherwindow system for GNU.208 later, I decided to use the X Window System rather than writing another 209 window system for GNU. 214 210 215 211 Because of this decision, the GNU system is not the same as the 216 collection of all GNU software. The GNU system includes programs that212 collection of all GNU software. The GNU system includes programs that 217 213 are not GNU software, programs that were developed by other people and 218 214 projects for their own purposes, but which we can use because they are … … 223 219 In January 1984 I quit my job at MIT and began writing GNU software. 224 220 Leaving MIT was necessary so that MIT would not be able to interfere 225 with distributing GNU as free software. If I had remained on the226 staff, MIT could have claimed to own the work, and could have imposed227 their own distribution terms, or even turned the work into a228 proprietary software package. I had no intention of doing a large229 amount of work only to see it become useless for its intended purpose:230 creating a newsoftware-sharing community.221 with distributing GNU as free software. If I had remained on the staff, 222 MIT could have claimed to own the work, and could have imposed their 223 own distribution terms, or even turned the work into a proprietary 224 software package. I had no intention of doing a large amount of work 225 only to see it become useless for its intended purpose: creating a new 226 software-sharing community. 231 227 232 228 However, Professor Winston, then the head of the MIT AI Lab, kindly … … 236 232 237 233 Shortly before beginning the GNU project, I heard about the Free 238 University Compiler Kit, also known as VUCK. (The Dutch word for239 "free" is written with a V.) This was a compiler designed to handle240 multiple languages, including C and Pascal, and to support multiple241 target machines.I wrote to its author asking if GNU could use it.234 University Compiler Kit, also known as VUCK. (The Dutch word for "free" 235 is written with a V.) This was a compiler designed to handle multiple 236 languages, including C and Pascal, and to support multiple target 237 machines. I wrote to its author asking if GNU could use it. 242 238 243 239 He responded derisively, stating that the university was free but the 244 compiler was not. I therefore decided that my first program for the245 GNUproject would be a multi-language, multi-platform compiler.246 247 Hoping to avoid the need to write the whole compiler myself, I 248 obtained the source code for the Pastel compiler, which was a249 multi-platform compiler developed at Lawrence Livermore Lab. It250 supported, and was written in, an extended version of Pascal, designed251 to be a system-programming language. I added a C front end, and began252 porting it to the Motorola 68000 computer. But I had to give that up253 when I discovered that the compiler needed many megabytes of stack254 space, andthe available 68000 Unix system would only allow 64k.240 compiler was not. I therefore decided that my first program for the GNU 241 project would be a multi-language, multi-platform compiler. 242 243 Hoping to avoid the need to write the whole compiler myself, I obtained 244 the source code for the Pastel compiler, which was a multi-platform 245 compiler developed at Lawrence Livermore Lab. It supported, and was 246 written in, an extended version of Pascal, designed to be a 247 system-programming language. I added a C front end, and began porting 248 it to the Motorola 68000 computer. But I had to give that up when I 249 discovered that the compiler needed many megabytes of stack space, and 250 the available 68000 Unix system would only allow 64k. 255 251 256 252 I then realized that the Pastel compiler functioned by parsing the 257 253 entire input file into a syntax tree, converting the whole syntax tree 258 254 into a chain of "instructions", and then generating the whole output 259 file, without ever freeing any storage. At this point, I concluded I260 would have to write a new compiler from scratch. That new compiler is255 file, without ever freeing any storage. At this point, I concluded I 256 would have to write a new compiler from scratch. That new compiler is 261 257 now known as GCC; none of the Pastel compiler is used in it, but I 262 managed to adapt and use the C front end that I had written. But that258 managed to adapt and use the C front end that I had written. But that 263 259 was some years later; first, I worked on GNU Emacs. 264 260 … … 266 262 267 263 I began work on GNU Emacs in September 1984, and in early 1985 it was 268 beginning to be usable. This enabled me to begin using Unix systems to264 beginning to be usable. This enabled me to begin using Unix systems to 269 265 do editing; having no interest in learning to use vi or ed, I had done 270 266 my editing on other kinds of machines until then. 271 267 272 268 At this point, people began wanting to use GNU Emacs, which raised the 273 question of how to distribute it. Of course, I put it on the anonymous274 ftp server on the MIT computer that I used. (This computer,269 question of how to distribute it. Of course, I put it on the anonymous 270 ftp server on the MIT computer that I used. (This computer, 275 271 prep.ai.mit.edu, thus became the principal GNU ftp distribution site; 276 272 when it was decommissioned a few years later, we transferred the name 277 to our new ftp server.) But at that time, many of the interested278 people were not on the Internet and could not get a copy by ftp. So279 thequestion was, what would I say to them?280 281 I could have said, "Find a friend who is on the net and who will make 282 a copy for you." Or I could have done what I did with the original283 PDP-10 Emacs: tell them, "Mail me a tape and a SASE, and I will mail284 it back with Emacs on it." But I had no job, and I was looking for285 ways to make money from free software. So I announced that I would286 mail a tape to whoever wanted one, for a fee of $150. In this way, I287 s tarted a free software distribution business, the precursor of the288 companies thattoday distribute entire Linux-based GNU systems.273 to our new ftp server.) But at that time, many of the interested people 274 were not on the Internet and could not get a copy by ftp. So the 275 question was, what would I say to them? 276 277 I could have said, "Find a friend who is on the net and who will make a 278 copy for you." Or I could have done what I did with the original PDP-10 279 Emacs: tell them, "Mail me a tape and a SASE, and I will mail it back 280 with Emacs on it." But I had no job, and I was looking for ways to make 281 money from free software. So I announced that I would mail a tape to 282 whoever wanted one, for a fee of $150. In this way, I started a free 283 software distribution business, the precursor of the companies that 284 today distribute entire Linux-based GNU systems. 289 285 290 286 Is a program free for every user? … … 292 288 If a program is free software when it leaves the hands of its author, 293 289 this does not necessarily mean it will be free software for everyone 294 who has a copy of it. For example, public domain software (software290 who has a copy of it. For example, public domain software (software 295 291 that is not copyrighted) is free software; but anyone can make a 296 proprietary modified version of it. Likewise, many free programs are292 proprietary modified version of it. Likewise, many free programs are 297 293 copyrighted but distributed under simple permissive licenses which 298 294 allow proprietary modified versions. … … 300 296 The paradigmatic example of this problem is the X Window System. 301 297 Developed at MIT, and released as free software with a permissive 302 license, it was soon adopted by various computer companies. They added298 license, it was soon adopted by various computer companies. They added 303 299 X to their proprietary Unix systems, in binary form only, and covered 304 by the same nondisclosure agreement. These copies of X were no more300 by the same nondisclosure agreement. These copies of X were no more 305 301 free software than Unix was. 306 302 307 303 The developers of the X Window System did not consider this a 308 problem--they expected and intended this to happen. Their goal was not309 freedom, just "success", defined as "having many users." They did not304 problem--they expected and intended this to happen. Their goal was not 305 freedom, just "success", defined as "having many users." They did not 310 306 care whether these users had freedom, only that they should be 311 307 numerous. … … 315 311 "Is this program free?" If you judged based on the freedom provided by 316 312 the distribution terms of the MIT release, you would say that X was 317 free software. But if you measured the freedom of the average user of318 X, you would have to say it was proprietary software. Most X users319 were running the proprietary versions that came with Unix systems, not320 thefree version.313 free software. But if you measured the freedom of the average user of 314 X, you would have to say it was proprietary software. Most X users were 315 running the proprietary versions that came with Unix systems, not the 316 free version. 321 317 322 318 Copyleft and the GNU GPL 323 319 324 The goal of GNU was to give users freedom, not just to be popular. So320 The goal of GNU was to give users freedom, not just to be popular. So 325 321 we needed to use distribution terms that would prevent GNU software 326 from being turned into proprietary software. The method we use is322 from being turned into proprietary software. The method we use is 327 323 called "copyleft".(1) 328 324 329 Copyleft uses copyright law, but flips it over to serve the opposite 330 ofits usual purpose: instead of a means of privatizing software, it325 Copyleft uses copyright law, but flips it over to serve the opposite of 326 its usual purpose: instead of a means of privatizing software, it 331 327 becomes a means of keeping software free. 332 328 333 The central idea of copyleft is that we give everyone permission to 334 runthe program, copy the program, modify the program, and distribute335 modified versions--but not permission to add restrictions of their 336 own. Thus, the crucial freedoms that define "free software" are337 guaranteedto everyone who has a copy; they become inalienable rights.338 339 For an effective copyleft, modified versions must also be free. This329 The central idea of copyleft is that we give everyone permission to run 330 the program, copy the program, modify the program, and distribute 331 modified versions--but not permission to add restrictions of their own. 332 Thus, the crucial freedoms that define "free software" are guaranteed 333 to everyone who has a copy; they become inalienable rights. 334 335 For an effective copyleft, modified versions must also be free. This 340 336 ensures that work based on ours becomes available to our community if 341 it is published. When programmers who have jobs as programmers337 it is published. When programmers who have jobs as programmers 342 338 volunteer to improve GNU software, it is copyleft that prevents their 343 339 employers from saying, "You can't share those changes, because we are … … 345 341 346 342 The requirement that changes must be free is essential if we want to 347 ensure freedom for every user of the program. The companies that343 ensure freedom for every user of the program. The companies that 348 344 privatized the X Window System usually made some changes to port it to 349 their systems and hardware. These changes were small compared with the350 great extent of X, but they were not trivial. If making changes were351 an excuse to deny the users freedom, it would be easy for anyone to352 takeadvantage of the excuse.345 their systems and hardware. These changes were small compared with the 346 great extent of X, but they were not trivial. If making changes were an 347 excuse to deny the users freedom, it would be easy for anyone to take 348 advantage of the excuse. 353 349 354 350 A related issue concerns combining a free program with non-free code. 355 Such a combination would inevitably be non-free; whichever freedoms 356 are lacking for the non-free part would be lacking for the whole as357 well. To permit such combinations would open a hole big enough to sink358 a ship.Therefore, a crucial requirement for copyleft is to plug this351 Such a combination would inevitably be non-free; whichever freedoms are 352 lacking for the non-free part would be lacking for the whole as well. 353 To permit such combinations would open a hole big enough to sink a 354 ship. Therefore, a crucial requirement for copyleft is to plug this 359 355 hole: anything added to or combined with a copylefted program must be 360 356 such that the larger combined version is also free and copylefted. 361 357 362 358 The specific implementation of copyleft that we use for most GNU 363 software is the GNU General Public License, or GNU GPL for short. We359 software is the GNU General Public License, or GNU GPL for short. We 364 360 have other kinds of copyleft that are used in specific circumstances. 365 361 GNU manuals are copylefted also, but use a much simpler kind of 366 362 copyleft, because the complexity of the GNU GPL is not necessary for 367 manuals. 363 manuals.(2) 368 364 369 365 (1) In 1984 or 1985, Don Hopkins (a very imaginative fellow) mailed me 370 a letter. On the envelope he had written several amusing sayings,366 a letter. On the envelope he had written several amusing sayings, 371 367 including this one: "Copyleft--all rights reversed." I used the word 372 368 "copyleft" to name the distribution concept I was developing at the 373 369 time. 374 370 371 (2) We now use the GNU Free Documentation License for documentation. 372 375 373 The Free Software Foundation 376 374 377 As interest in using Emacs was growing, other people became involved 378 in the GNU project, and we decided that it was time to seek funding379 once again. So in 1985 we created the Free Software Foundation, a380 tax-exempt charity for free software development. The FSF also took381 over the Emacs tape distribution business; later it extended this by382 adding other free software (both GNU and non-GNU) to the tape, and by383 selling freemanuals as well.375 As interest in using Emacs was growing, other people became involved in 376 the GNU project, and we decided that it was time to seek funding once 377 again. So in 1985 we created the Free Software Foundation, a tax-exempt 378 charity for free software development. The FSF also took over the Emacs 379 tape distribution business; later it extended this by adding other free 380 software (both GNU and non-GNU) to the tape, and by selling free 381 manuals as well. 384 382 385 383 The FSF accepts donations, but most of its income has always come from 386 sales--of copies of free software, and of other related services. 387 Today it sells CD-ROMs of source code, CD-ROMs with binaries, nicely 388 printed manuals (all with freedom to redistribute and modify), and 389 Deluxe Distributions (where we build the whole collection of software 390 for your choice of platform). 391 392 Free Software Foundation employees have written and maintained a 393 number of GNU software packages. Two notable ones are the C library 394 and the shell. The GNU C library is what every program running on a 395 GNU/Linux system uses to communicate with Linux. It was developed by a 396 member of the Free Software Foundation staff, Roland McGrath. The 397 shell used on most GNU/Linux systems is BASH, the Bourne Again 398 Shell(1), which was developed by FSF employee Brian Fox. 399 400 We funded development of these programs because the GNU project was 401 not just about tools or a development environment. Our goal was a 402 complete operating system, and these programs were needed for that 403 goal. 384 sales--of copies of free software, and of other related services. Today 385 it sells CD-ROMs of source code, CD-ROMs with binaries, nicely printed 386 manuals (all with freedom to redistribute and modify), and Deluxe 387 Distributions (where we build the whole collection of software for your 388 choice of platform). 389 390 Free Software Foundation employees have written and maintained a number 391 of GNU software packages. Two notable ones are the C library and the 392 shell. The GNU C library is what every program running on a GNU/Linux 393 system uses to communicate with Linux. It was developed by a member of 394 the Free Software Foundation staff, Roland McGrath. The shell used on 395 most GNU/Linux systems is BASH, the Bourne Again Shell(1), which was 396 developed by FSF employee Brian Fox. 397 398 We funded development of these programs because the GNU project was not 399 just about tools or a development environment. Our goal was a complete 400 operating system, and these programs were needed for that goal. 404 401 405 402 (1) "Bourne again Shell" is a joke on the name ``Bourne Shell'', which … … 409 406 410 407 The free software philosophy rejects a specific widespread business 411 practice, but it is not against business. When businesses respect the408 practice, but it is not against business. When businesses respect the 412 409 users' freedom, we wish them success. 413 410 414 411 Selling copies of Emacs demonstrates one kind of free software 415 business. When the FSF took over that business, I needed another way416 to make a living.I found it in selling services relating to the free417 software I had developed. This included teaching, for subjects such as412 business. When the FSF took over that business, I needed another way to 413 make a living. I found it in selling services relating to the free 414 software I had developed. This included teaching, for subjects such as 418 415 how to program GNU Emacs and how to customize GCC, and software 419 416 development, mostly porting GCC to new platforms. 420 417 421 418 Today each of these kinds of free software business is practiced by a 422 number of corporations. Some distribute free software collections on419 number of corporations. Some distribute free software collections on 423 420 CD-ROM; others sell support at levels ranging from answering user 424 questions, to fixing bugs, to adding major new features. We are even421 questions, to fixing bugs, to adding major new features. We are even 425 422 beginning to see free software companies based on launching new free 426 423 software products. 427 424 428 Watch out, though--a number of companies that associate themselves 429 withthe term "open source" actually base their business on non-free430 software that works with free software. These are not free software431 companies, they are proprietary software companies whose products 432 tempt users away from freedom. They call these "value added", which433 reflects the values they would like us to adopt: convenience above434 freedom. If we value freedom more, we should call them "freedom435 subtracted"products.425 Watch out, though--a number of companies that associate themselves with 426 the term "open source" actually base their business on non-free 427 software that works with free software. These are not free software 428 companies, they are proprietary software companies whose products tempt 429 users away from freedom. They call these "value added", which reflects 430 the values they would like us to adopt: convenience above freedom. If 431 we value freedom more, we should call them "freedom subtracted" 432 products. 436 433 437 434 Technical goals 438 435 439 The principal goal of GNU was to be free software. Even if GNU had no436 The principal goal of GNU was to be free software. Even if GNU had no 440 437 technical advantage over Unix, it would have a social advantage, 441 438 allowing users to cooperate, and an ethical advantage, respecting the 442 439 user's freedom. 443 440 444 But it was natural to apply the known standards of good practice to 445 thework--for example, dynamically allocating data structures to avoid441 But it was natural to apply the known standards of good practice to the 442 work--for example, dynamically allocating data structures to avoid 446 443 arbitrary fixed size limits, and handling all the possible 8-bit codes 447 444 wherever that made sense. … … 451 448 machines would be the norm by the time the GNU system was finished), 452 449 and to make no effort to reduce memory usage unless it exceeded a 453 megabyte. In programs for which handling very large files was not450 megabyte. In programs for which handling very large files was not 454 451 crucial, we encouraged programmers to read an entire input file into 455 452 core, then scan its contents without having to worry about I/O. … … 461 458 462 459 As the GNU project's reputation grew, people began offering to donate 463 machines running UNIX to the project. These were very useful, because460 machines running UNIX to the project. These were very useful, because 464 461 the easiest way to develop components of GNU was to do it on a UNIX 465 system, and replace the components of that system one by one. But they462 system, and replace the components of that system one by one. But they 466 463 raised an ethical issue: whether it was right for us to have a copy of 467 464 UNIX at all. 468 465 469 466 UNIX was (and is) proprietary software, and the GNU project's 470 philosophy said that we should not use proprietary software. But,467 philosophy said that we should not use proprietary software. But, 471 468 applying the same reasoning that leads to the conclusion that violence 472 in self defense is justified, I concluded that it was legitimate to 473 use a proprietary package when that was crucial for developingfree469 in self defense is justified, I concluded that it was legitimate to use 470 a proprietary package when that was crucial for developing a free 474 471 replacement that would help others stop using the proprietary package. 475 472 476 But, even if this was a justifiable evil, it was still an evil. Today473 But, even if this was a justifiable evil, it was still an evil. Today 477 474 we no longer have any copies of Unix, because we have replaced them 478 with free operating systems. If we could not replace a machine's475 with free operating systems. If we could not replace a machine's 479 476 operating system with a free one, we replaced the machine instead. 480 477 … … 482 479 483 480 As the GNU project proceeded, and increasing numbers of system 484 components were found or developed, eventually it became useful to 485 make a list of the remaining gaps. We used it to recruit developers to486 write the missing pieces. This list became known as the GNU task list.487 Inaddition to missing Unix components, we listed added various other481 components were found or developed, eventually it became useful to make 482 a list of the remaining gaps. We used it to recruit developers to write 483 the missing pieces. This list became known as the GNU task list. In 484 addition to missing Unix components, we listed added various other 488 485 useful software and documentation projects that, we thought, a truly 489 486 complete system ought to have. 490 487 491 488 Today, hardly any Unix components are left in the GNU task list--those 492 jobs have been done, aside from a few inessential ones. But the list493 is full of projects that some might call "applications". Any program494 that appeals to more than a narrow class of users would be a useful495 thing toadd to an operating system.489 jobs have been done, aside from a few inessential ones. But the list is 490 full of projects that some might call "applications". Any program that 491 appeals to more than a narrow class of users would be a useful thing to 492 add to an operating system. 496 493 497 494 Even games are included in the task list--and have been since the 498 beginning. Unix included games, so naturally GNU should too.But499 compatibility was not an issue for games, so we did not follow the 500 list of games that Unix had. Instead, we listed a spectrum of501 differentkinds of games that users might like.495 beginning. Unix included games, so naturally GNU should too. But 496 compatibility was not an issue for games, so we did not follow the list 497 of games that Unix had. Instead, we listed a spectrum of different 498 kinds of games that users might like. 502 499 503 500 The GNU Library GPL 504 501 505 502 The GNU C library uses a special kind of copyleft called the GNU 506 Library General Public License , which gives permission to link507 proprietary software with the library. Why make this exception?503 Library General Public License(1), which gives permission to link 504 proprietary software with the library. Why make this exception? 508 505 509 506 It is not a matter of principle; there is no principle that says 510 proprietary software products are entitled to include our code. (Why511 contribute to a project predicated on refusing to share with us?) 512 Usingthe LGPL for the C library, or for any library, is a matter of507 proprietary software products are entitled to include our code. (Why 508 contribute to a project predicated on refusing to share with us?) Using 509 the LGPL for the C library, or for any library, is a matter of 513 510 strategy. 514 511 515 512 The C library does a generic job; every proprietary system or compiler 516 comes with a C library. Therefore, to make our C library available517 only to free software would not have given free software any518 advantage--itwould only have discouraged use of our library.513 comes with a C library. Therefore, to make our C library available only 514 to free software would not have given free software any advantage--it 515 would only have discouraged use of our library. 519 516 520 517 One system is an exception to this: on the GNU system (and this 521 includes GNU/Linux), the GNU C library is the only C library. So the518 includes GNU/Linux), the GNU C library is the only C library. So the 522 519 distribution terms of the GNU C library determine whether it is 523 possible to compile a proprietary program for the GNU system. There is520 possible to compile a proprietary program for the GNU system. There is 524 521 no ethical reason to allow proprietary applications on the GNU system, 525 522 but strategically it seems that disallowing them would do more to … … 527 524 applications. 528 525 529 That is why using the Library GPL is a good strategy for the C 530 library. For other libraries, the strategic decision needs to be531 c onsidered on a case-by-case basis. When a library does a special job532 that can help write certain kinds of programs, then releasing it under533 the GPL, limiting it to free programs only, is a way of helping other534 freesoftware developers, giving them an advantage against proprietary526 That is why using the Library GPL is a good strategy for the C library. 527 For other libraries, the strategic decision needs to be considered on a 528 case-by-case basis. When a library does a special job that can help 529 write certain kinds of programs, then releasing it under the GPL, 530 limiting it to free programs only, is a way of helping other free 531 software developers, giving them an advantage against proprietary 535 532 software. 536 533 537 534 Consider GNU Readline, a library that was developed to provide 538 command-line editing for BASH. Readline is released under the ordinary539 GNU GPL, not the Library GPL. This probably does reduce the amount540 Readline is used, but that is no loss for us. Meanwhile, at least one541 useful application has been made free software specifically so it 542 coulduse Readline, and that is a real gain for the community.535 command-line editing for BASH. Readline is released under the ordinary 536 GNU GPL, not the Library GPL. This probably does reduce the amount 537 Readline is used, but that is no loss for us. Meanwhile, at least one 538 useful application has been made free software specifically so it could 539 use Readline, and that is a real gain for the community. 543 540 544 541 Proprietary software developers have the advantages money provides; 545 free software developers need to make advantages for each other. I 546 hope some day we will have a large collection of GPL-covered libraries 547 that have no parallel available to proprietary software, providing 548 useful modules to serve as building blocks in new free software, and 549 adding up to a major advantage for further free software development. 542 free software developers need to make advantages for each other. I hope 543 some day we will have a large collection of GPL-covered libraries that 544 have no parallel available to proprietary software, providing useful 545 modules to serve as building blocks in new free software, and adding up 546 to a major advantage for further free software development. 547 548 (1) This license is now called the GNU Lesser General Public License, 549 to avoid giving the idea that all libraries ought to use it. 550 See http://www.gnu.org/philosophy/why-not-lgpl.html. 550 551 551 552 Scratching an itch? 552 553 553 554 Eric Raymond says that "Every good work of software starts by 554 scratching a developer's personal itch." Maybe that happens sometimes,555 scratching a developer's personal itch." Maybe that happens sometimes, 555 556 but many essential pieces of GNU software were developed in order to 556 have a complete free operating system. They come from a vision and a557 have a complete free operating system. They come from a vision and a 557 558 plan, not from impulse. 558 559 … … 560 561 needs a C library, the Bourne-Again Shell (bash) because a Unix-like 561 562 system needs a shell, and GNU tar because a Unix-like system needs a 562 tar program. The same is true for my own programs--the GNU C compiler,563 tar program. The same is true for my own programs--the GNU C compiler, 563 564 GNU Emacs, GDB and GNU Make. 564 565 565 566 Some GNU programs were developed to cope with specific threats to our 566 freedom. Thus, we developed gzip to replace the Compress program,567 which had been lost to the community because of the LZW patents. We568 found people to develop LessTif, and more recently started GNOME and569 Harmony, to address the problems caused by certain proprietary570 libraries (see below). We are developing the GNU Privacy Guard to571 replace popular non-free encryption software, because users should not572 have to choosebetween privacy and freedom.567 freedom. Thus, we developed gzip to replace the Compress program, which 568 had been lost to the community because of the LZW patents. We found 569 people to develop LessTif, and more recently started GNOME and Harmony, 570 to address the problems caused by certain proprietary libraries (see 571 below). We are developing the GNU Privacy Guard to replace popular 572 non-free encryption software, because users should not have to choose 573 between privacy and freedom. 573 574 574 575 Of course, the people writing these programs became interested in the 575 576 work, and many features were added to them by various people for the 576 sake of their own needs and interests. But that is not why the577 programsexist.577 sake of their own needs and interests. But that is not why the programs 578 exist. 578 579 579 580 Unexpected developments 580 581 581 582 At the beginning of the GNU project, I imagined that we would develop 582 the whole GNU system, then release it as a whole. That is not how it583 the whole GNU system, then release it as a whole. That is not how it 583 584 happened. 584 585 585 586 Since each component of the GNU system was implemented on a Unix 586 587 system, each component could run on Unix systems, long before a 587 complete GNU system existed. Some of these programs became popular,588 andusers began extending them and porting them---to the various588 complete GNU system existed. Some of these programs became popular, and 589 users began extending them and porting them---to the various 589 590 incompatible versions of Unix, and sometimes to other systems as well. 590 591 591 592 The process made these programs much more powerful, and attracted both 592 funds and contributors to the GNU project. But it probably also593 delayed completion of a minimal working system by several years, as594 GNUdevelopers' time was put into maintaining these ports and adding595 features to the existing components, rather than moving on to write 596 onemissing component after another.593
