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