<<

Chapter1: The GNU Project 15

When I startedworking at the MIT Artificial Intelligence Lab in 1971, I became part of a software-sharingcommunity that had existed for many years. Sharing of software was not limited to our particular co unity; it is as old as computers,just as sharing of recipesis as old as cooking. But e did it more than most. The AI Lab used a timesharing operating s stem called ITS (the Incompatible Timesharing System) that the lab's staff hack rs had designed and written in as- semblerlanguage for the Digital PDP-I0, one fthe large computersof the era. As a memberof this community, an AI lab staff sy tem hacker, my job was to improve this system. We did not call our software "free software," becausethat term did not yet exist; but that is what it was. Wheneverpeople fro another university or a company wanted to port and use a program, we gladly I t them. If you saw someoneusing an unfamiliar and interestingprogram, you coul always askto seethe sourcecode, so that you could readit, changeit, or cannibali e parts of it to make a newprogram. The use of "hacker" to mean "security break r" is a confusion on the part of the massmedia. We hackersrefuse to recognize t meaning, and continue using the word to mean, "Someonewho loves to pro and enjoys being clever aboutit."!

The situation changeddrastically in the earl 1980s,with the collapseof the AI Lab hacker community followed by the discon nuation of the PDP-10 computer. In 1981, the spin-off company Symbolics h red away nearly all of the hackers from the AI Lab, and the depopulatedcomm nity was unable to maintain itself. (The book Hackers, by StevenLevy, describe these events, as well as giving a

1 It is hard to write a simple definition of something varied as hacking, bu~ I think what most "hacks" havein commonis playfulness,cleverness, an exploration. Thus,hacking means explor- ing the limits of what is possible, in a spirit of playfu cleverness.Activities that display playful clevernesshave "hack value." You can help correct e misunderstandingsimply by making a distinction between security breaking and hacking- y using the term "cracking" for security breaking. The peoplewho do it are "crackers." Some f them may also be hackers,just as some of them may be chessplayers or golfers; most of them are not ("On Hacking," RMS; 2002).

Originally publishedin the book OpenSources: Voices from the0 en SourceRevolution; O'Reilly, 1999.This ver- sion is part of Free Software,Free Society: SelectedEssays ofRi hard M. Stallman,2002, GNU Press (http://www.gnupress.org);ISBN 1-882114-98-1. Verbatimcopying and distribution f this entire article is pemritted in any medium,provided is notice is preserved

1 16 Free Software, FreFSociety: SelectedEssays of Richard M. Stallman clear picture of this community n its prime.) When the AI Lab bought a new PDP- 10 in 1982,its administratorsd cided to use Digital's non-free timesharing system instead of ITS on the new ne. Not long afterwards,Digital discontinued the PDP-IO series. Its architecture, elegant and powerful in the 60 , could not extend naturally to the larger address spacesthat were becoming fea ible in the 80s. This meant that nearly all of the programscomposing ITS were bsolete. That put the last nail in the coffin of ITS; 15 years of work went up in sm ke. The modem computersof th era, such as the VAX or the 68020, had their own operating systems,but none of em were free software: you had to sign a nondis- closure agreementeven to get executablecopy. This meantthat the first stepi using a computerwas to promise not to help your neighbor. A cooperatingcomm nity was forbidden. The rule made by the owners of proprietary software was, "I you share with your neighbor, you are a pirate. If you want any changes,beg us t make them." The idea that the proprietary software social system-the systemthat says you are not allowed to shareor ch ge software-is antisocial, that it is unethical, that it is simply wrong, may come s a surprise to some readers. But what else could we say about a systembased dividing the public and keeping users helpless? Readerswho find the idea surp .sing may have takenthis proprietary-softwareso- cial system as given, or judge it on the terms suggestedby proprietarysoftware businesses.Software publishers have worked long and hard to convincepeople that there is only one way to look at the issue. When software publishers t lk about "enforcing" their "rights" or "stopping piracy," what they actually "sa " is secondary. The real messageof these state- ments is in the unstatedassum tions they take for granted; the public is supposed to acceptthem uncritically. So 1 t's examinethem. One assumptionis that softw e companieshave an unquestionablenatural right to own software and thus hav power over all its users. (If this were a natural right, then no matter how muc harm it does to the public, we could not object.) Interestingly, the U.S. Constitut on and legal tradition reject this view; copyright is not a natural right, but an ~fi ial government-imposedmonopoly that limits the users' natural right to copy. ! Another unstatedassumptio is that the only important thing about software is what jobs it allows you to d that we computerusers should not care what kind of society we are allowed to ha e. A third assumptionis that would have no usable software (or would never have a program to do this or t at particular job) if we did not offer a company power over the usersof the pro ram. This assumptionmay have seemedplausible before the free software movem nt demonstratedthat we can make plenty of useful software without putting chains on it. If we decline to acceptthes assumptions,and judge these issuesbased on or- dinary common-sensemorality while placing the usersfirst, we arrive at very dif- ferent conclusions. Computer sers should be free to modify programsto fit their needs,and free to sharesoftwar , becausehelping other people is the basisof soci- ety. ~ CChapter1: The GNU Project 17

With my community gone,to continue as efore was impossible. Instead,I faced a starkmoral choice. The easychoice was to join the propriet software world, signing nondisclo- sure agreementsand promising not to help y fellow hacker. Most likely I would alsobe developingsoftware that was release undernondisclosure agreements, thus adding to the pressureon other people to be ay their fellows too. I could have made money this way, and erhapsamused myself writing code. But I knew that at the end of my career, I ould look back on years of building walls to divide people, and feel I had spent y life making the world a worseplace. I had alreadyexperienced being on the r ceiving end of a nondisclosureagree- ment, when someonerefused to give me and eMIT AI Lab the sourcecode for the control program for our printer. (The lack 0 certainfeatures in this program made use of the printer extremely frustrating.) So I could not tell myself that nondisclo- sureagreements were innocent. I was very gry when he refused to sharewith us; I could not turn around and do the samethin to everyoneelse. Another choice, straightforward but unpl ant, was to leave the computerfield. That way my skills would not be misused, t they would still be wasted. I would not be culpable for dividing and restricting computer ~sers, but it would happen nonetheless. ! So I looked for a way that a programme could do something for the good. I askedmyself, was there a program or progr s that I could write, so as to make a community possibleonce again? The answerwas clear: what was needed rst was an . That is the crucial software for starting to use a co puter. With an operating system, you can do many things; without one, you cann t run the computer at all. With a free operating system,we could againhave a co unity of cooperating hackers-and invite anyoneto join. And anyonewould be ble to use a computer without starting out by conspiring to deprive his or her frien s. As an operating system developer, I had the right skills for this job. So even though I could not take successfor grante , I realized that I was elected to do the job. I chose to make the system com atible with Unix so that it would be portable, and so that Unix users could eas'ly switch to it. The name GNU was chosenfollowing a hackertradition, as a rec rsive acronymfor "GNU's Not Unix." An operating system does not mean just a kernel, barely enough to run other programs. In the 1970s,every operating sys em worthy of the name included com- mand processors,assemblers, compilers, int rpreters,debuggers, text editors, mail- ers, and much more. ITS had them, Multic had them, VMS had them, and Unix had them. The GNU operating systemwoul include them too. Later I heard thesewords, attributedto H.llel: "If I am not for myself, who will be for e? If I am only for myself, what am I? If not now, when?" The decision to start the GNU project wa basedon a similar spirit. As an atheist, I don't follow any religiqus leaders,but I sometimesfind I admire something one of them has said. I Free Software,Free Societyf SelectedEssays of Richard M. 18

Free as in Freedom The term "free software" is sometimesmisunderstood-it has nothing to do with price. It is about freedom. Here, there ore, is the definition of free software: a programis free software, for you, a parti ular user,if: .You have the freedomto run the pr gram, for any purpose. .You have the freedomto modify the programto suit your needs.(To make this freedom effective in practice, you ust have accessto the sourcecode, since making changesin a program with ut having the sourcecode is exceedingly a difficult. ) .You have the freedomto redistri~ut copies, either gratis or for a fee. Pa co .You have the freedom to distribute modified versionsof the program, so that

the community can benefit from yo r improvements. Wi Since "free" refers to freedom, not t price, there is no contradiction between m selling copies and free software. In f ct, the freedom to sell copies is crucial: collections of free software sold on C -ROMs are important for the community, so and selling them is an important way to raise funds for free software development. or Therefore, a program that people are no free to include on thesecollections is not ve fu free software. Becauseof the ambiguity of "free," ople havelong looked for alternatives,but th, no one has found a suitablealternative. e English Languagehas more words and an nuancesthan any other, but it lacks a si pIe, unambiguousword that means"free," as in freedom-"unfettered" being the ord that comes closest in meaning. Such In alternativesas "liberated," "freedom," d "open" have either the wrong meaning an pc or some other disadvantage. cc m ye Developing a whole systemis a ve large project. To bring it into reach, I de- cided to adaptand use existing pieces f free software whereverthat was possible. G For example, I decided at the very beg.nning to use TeX as the principal text for- matter; a few yearslater, I decidedto u e the X Window Systemrather than writing anotherwindow systemfor GNU. gl Becauseof this decision, the GNU s stemis not the sameas the collection of all ha GNU software. The GNU systeminc udes programs that are not GNU software, of programs that were developedby other people and projects for their own purposes, but that we can use becausethey are fr e software. tic M cr trc In January 1984I quit my job at M and beganwriting GNU software. Leaving pE MIT was necessaryso that MIT wou d not be able to interfere with distributing W. GNU as free software. If I had remai ed on the staff, MIT could have claimed to own the work, and could have impose their own distribution terms, or eventurned y< the work into a proprietary software ackage. I had no intention of doing a large "~

I 18 Free Software,Free Soc,ety: SelectedEssays of Richard M.

Free as in Freedom

The tenn "free software" is someti es misunderstood-it has nothing to do with price. It is about freedom. Here, th refore, is the definition of free software: a program is free software, for you, a p icular user, if: .You have the freedom to run the rogram, for any purpose. .You have the freedom to modify' e program to suit your needs. (To make this freedom effective in practice, yo must have access to the source code, since making changes in a programl w thout having the source code is exceedingly difficult. ) .You have the freedom to redistri ute copies, either gratis or for a fee. .You have the freedom to distrib te modified versions of the program, so that the community can benefit from our improvements. Since "free" refers to freedom, no to price, there is no contradiction between selling copies and free software. ! In fact, the freedom to sell copies is crucial: collections of free software sold oh D-ROMs are important for the community, and selling them is an important way 0 raise funds for free software development. Therefore, a program that people are ot free to include on these collections is not free software. Because of the ambiguity of "free," people have long looked for alternatives, but no one has found a suitable alternativ .The English Language has more words and nuances than any other, but it lacks a imple, unambiguous word that means "free," I as in freedom-"unfettered" being! th word that comes closest in meaning. Such alternatives as "liberated," "freedo~,' and "open" have either the wrong meaning or some other disadvantage. i I

Developing a whole systemis a ve large project. To bring it into reach, I de- cided to adaptand use existing piecesof free software whereverthat was possible. For example, I decided at the very b ginning to use TeX as the principal text for- matter; a few yearslater, I decidedto se the X Window Systemrather than writing another window systemfor GNU. 1 Becauseof this decision,the GNU ystem is not the sameas the collection of all J GNU software. The GNU systemin ludes programs that are not GNU software, programs that were developedby oth r people and projects for their own purposes, but that we can use becausethey are ee software. t 1

( t In January 1984I quit my job at M T and beganwriting GNU software. Leaving I MIT was necessaryso that MIT wo ld not be able to interfere with distributing \ GNU as free software. If I had rem .ned on the staff, MIT could have claimed to own the work, and could haveimpose their own distribution terms, or eventurned ) the work into a proprietary software ackage. I had no intention of doing a large ,. 19

amountof work o~y to see it ?ecome~s r ess for its intended purpose: creating a new software-sharIng commumty. However,Professor Winston, then ~e ead of the MIT AI Lab, kindly invited me to keepusing the lab's facilities.

Shortly before beginning the GNU pr ~ect, I heard about the Free University Compiler Kit, also known as YUCK. ( Dutch word for "free" is written with a .) This was a compiler designedto han Ie multiple languages,including C and Pascal,and to supportmultiple targetmfC 'nes. I wrote to its authorasking if GNU could useit. He respondedderisively, stating that e university was free but the compiler was not. I therefore decided that my first rogram for the GNU project would be a multi-language,multi-platform compiler. Hoping to avoid the need to write the whole compiler myself, I obt,ainedthe sourcecode for the Pastel compiler, whic was a multi-platform compiler devel- oped at Lawrence Livermore Lab. It sup orted, and was written in, an extended version of Pascal, designed to be a syste -. I added a C front end, and beganporting it to the Mot rola 68000 computer. But I had to give that up when I discoveredthat the compile neededmany megabytesof stackspace, and the available 68000 Unix systemwou only allow 64k. I thenrealized that the Pastelcompiler f nctioned by parsing the entire input file into a syntax tree, converting the whole s ntax tree into a chain of "instructions," and then generatingthe whole output file, ithout everfreeing any storage. At this point, I concluded I would have to write new compiler from scratch. That new compiler is now known as GCC; none 0 the Pastel compiler is used in it, but I managedto adapt and use the C front en that I had written. But that was some yearslater; first, I worked on GNU Em~cs

GNU Emacs

I began work on GNU Emacs in Septe ber 1984, and in early 1985 it was be- ginning to be usable. This enabled me to egin using Unix systems to do editing; having no interest in learning to use vi ~r d, I had done my editing on other kinds of machines until then. ! i At this point, people began wanting to se GNU Emacs, which raised the ques- tion of how to distribute it. Of course, I p t it on the anonymous ftp server on the MIT computer that I used. (This compute, prep.ai.mit.edu, thus became the prin- cipal GNU ftp distribution site; when it w s decommissioned a few years later, we transferred the name to our new ftp servfr. But at that time, many of the interested people were not on the Internet and corl not get a copy by ftp. So the question was, what would I say to them? : I could have said, "Find a friend who lis n the net and who will make a copy for you." Or I could have done what I did wi the original PDP-I0 Emacs: tell them, "Mail me a tape and a SASE, and I will m I it back with Emacs on it." But I had no 20 Free Software,Free Society: SelectedEssays of Richard M. Stallman job, and I was looking for ways to mak~ oneYfrom free software. So I announced it that I would mail a tape to whoeverw ted one, for a fee of $150. In this way, I cl started a free software distribution busi ess, the precursor of the companies that pJ today distribute entire Linux-basedaN systems. dc S: cl If a program is free software when it eavesthe handsof its author, this does not If necessarilymean it will be free software for everyonewho has a copy of it. For ex- ar ample, public domain software (softw that is not copyrighted) is free software; but anyonecan make a proprietarymodi ed versionof it. Likewise, many free pro- co grams are copyrighted but distributed u der simple permissive licenses that allow DC proprietary modified versions. W( The paradigmaticexample of this pro lem is the X Window System. Developed foJ at MIT, and releasedas free softwarewi a permissivelicense, it was soonadopted pr. by various computer companies.They dded X to their proprietary Unix systems, in binary form only, and covered by t e same nondisclosure agreement. These the copies of X were no more free software an Unix was. CO] The developersof the X Window Sys em did not considerthis a problem-they bul expectedand intended this to happen. eir goal was not freedom, just "success," is] defined as "having manyusers." They di not care whetherthese users had freedom, only that they should be numerous. fer. This lead to a paradoxical situatidn here two different ways of counting the "Co amount of freedom gave different an~w rs to the question, "Is this program free?" tiol If you judged based on the freedompro ided by the distribution terms of the MIT release,you would say that X was free ftware. But if you measuredthe freedom of the averageuser of X, you would ha e to say it was proprietary software. Most X userswere running the proprietaryve ions that came with Unix systems,not the TI free version. j j GN 198 The goal of GNU was to give users fre dom, not just to be popular. So we needed war to use distribution terms that would pre ent GNU software from being turned into late proprietary software. The method we us is called copyleft. the Copy left uses copyright law, but flip it over to serve the opposite of its usual 1 purpose: instead of a means of privati~i g software, it becomes a means of keeping ofc software free. . ofs The central idea of copy left is that w give everyone permission to run the pro- to fI gram, copy the program, modify the pr gram, and distribute modified versions- coil but not permission to add restrictions1of their own. Thus, the crucial freedoms that F define "free software" are guarantee~ t everyone who has a copy; they become GNl inalienable rights. i GNl For an effective copyleft, modified Iv sions must also be free. This ensures that com work based on ours becomes available 0 our community if it is published. When Foul programmers who have jobs as progra mers volunteer to improve GNU software, BA~ Chapter GNU Projec 2

it is copyleft that prevents their e ployers from saying, "You can't share those changes,because we are going to se them to make our proprietary version of the program." The requirementthat changesm st be free is essentialif we want to ensurefree- dom for every user of the program The companiesthat privatized the X Window Systemusually made somechange to port it to their systemsand hardware.These changeswere small comparedwith the great extent of X, but they were not trivial. If making changeswere an excuse 0 deny the usersfreedom, it would be easy for anyoneto take advantageof the ex use. A related issue concernscombin ng a free program with non-free code. Such a combination would inevitably be n n-free; whicheverfreedoms are lacking for the non-free part would be lacking for e whole as well. To permit suchcombinations would open a hole big enough to ink a ship. Therefore, a crucial requirement for copyleft is to plug this hole: an thing addedto or combined with a copylefted :l program must be such that the larg combined version is also free and copylefted. d The specific implementationof opyleft that we use for most GNU software is the GNU General Public License, r GNU GPL for short. We have other kinds of ie copyleft that are used in specific cir umstances.GNU manualsare copylefted also, but use a much simpler kind of cop left, becausethe complexity of the GNU GPL ~y is not necessaryfor manuals. " In 1984 or 1985, Don Hopkins (a very imaginative fellow) mailed me a let- ll, ter. On the envelopehe had writte severalamusing sayings, including this one: "Copyleft-all rights reversed." I sed the word "copyleft" to name the distribu- he tion conceptI was developing at th time. :?" IT )ffi ost the The Free Software Foun4ation As interest in using Emacs was rowing, other people becameinvolved in the GNU project, and we decided that t was time to seekfunding once again. So in 1985 we createdthe Free Software oundation, a tax-exempt charity for free soft- ware development. The FSF also t ok over the Emacs tape distribution business; ded later it extendedthis by adding oth r free software (both GNU and non-GNU) to into the tape, and by selling free manual as well. The FSF acceptsdonations, but m st of its income has always come from sales- sual of copies of free software, and of 0 er related services. Today it sells CD-ROMs pmg of sourcecode, CD-ROMs with bin .es, nicely printed manuals (all with freedom to redistribute and modify), and D uxe Distributions (where we build the whole pro- collection of software for your choi e of platform). ns- Free Software Foundationemplo eeshave written and maintained a number of ; that GNU software packages. Two not ble ones are the C library and the shell. The ;ome GNU C library is what every prog am running on a GNU/Linux systemuses to communicatewith Linux. It was eveloped by a member of the Free Software s that Foundationstaff, Roland McGrath. e shell used on most GNU/Linux systemsis When : BASH, the Bourne Again Shell, will h was developedby FSF employeeBrian Fox. :ware,

['he 22 Free Software,Free Societt: SelectedEssays of Richard M. Stallman

We funded developmentof these pr grams becausethe GNU project was not just abouttools or a developmentenviro ent. Our goal was a complete operating system,and theseprograms were neede for that goal. "Bourne againShell" is a joke on the ame "Bourne Shell," which was the usual I shell on Unix. ( I r Free Software Support t The free software philosophy rejects specific widespreadbusiness practice, but 1 it is not againstbusiness. When bu~in sses respectthe users' freedom, we wish \' them success. I f Selling copies of Emacsdemonstrate one kind of free softwarebusiness. When the FSF took over that business,I nee ed another way to make a living. I found a it in selling servicesrelating to the fre software I had developed. This included v teaching, for subjects such as how to p gram GNU Emacsand how to customize n GCC, and software development,mostl porting GCC to new platforms. Today eachof thesekinds of free so ware businessis practiced by a number of corporations. Some distribute free so are collections on CD-ROM; others sell 1 support at various levels ranging from swering user questions,to fixing bugs, to adding major new features.We are eve beginning to seefree software companies basedon launching new free software p oducts. ~ Watch out, though-a number of co panies that associatethemselves with the g term "open source" actually base their business on non-free software that works k with free software. These are not fre software companies,they are proprietary V software companieswhose products t pt users away from freedom. They call c' these"value added," which reflects the values they would like us to adopt: conve- nience abovefreedom. If we value ire dom more, we should call them "freedom h subtracted"products. .I tl n.

U is The principal goal of GNU was to b free software. Even if GNU had no tech- Ii nical advantageover Unix, it would ave a social advantage,allowing users to cooperate,and an ethical advantage,re pecting the user's freedom. But it was natural to apply the known standardsof good practiceto the work-for 1 example,dynamically allocating datas ctures to avoid arbitrary fixed size limits, and handling all the possible 8-bit cod s whereverthat madesense. In addition, we rejected the Unix fo us on small memory size, by deciding not eI to support 16-bit machines(it was cle that 32-bit machineswould be the norm by Iii the time the GNU systemwas finishe , and to make no effort to reduce memory ~ usageunless it exceededa megabyte. n programs for which handling very large I pI ~ 01 files was not crucial, we encouragedp ogrammersto read an entire input file into ~ core, then scanits contentswithout ha ing to worry aboutI/O. ~t; IS Thesedecisions enabled many GNU programsto surpasstheir Unix counterparts w in reliability and speed. I Chapter1: The GNU Project 23

As the GNU project's reputationg ew, peoplebegan offering to donatemachines running Unix to the project. These were very useful, becausethe easiestway to developcomponents of GNU was to do it on a Unix system,and replace the com- ponentsof that systemone by one. ut they raised an ethical issue: whether it was right for us to have a copy of Unix a all. Unix was (and is) proprietary so are, and the GNU project's philosophy said that we should not use proprietary s ftware. But, applying the samereasoning that leads to the conclusion that violence in self defenseis justified, I concluded that it was legitimate to use a proprietary p ckage when that was crucial for developing a free replacementthat would help oth rs stopusing the proprietary package. But, evenif this was a justifiable e iI, it was still an evil. Todaywe no longer have any copiesof Unix, becausewe have replacedthem with free operatingsystems. If we could not replacea machine's 0 ating systemwith a free one, we replacedthe machineinstead.

The GNU Task List

As the GNU project proceeded, d increasingnumbers of systemcomponents were found or developed,eventually i becameuseful to makea list of the remaining "'~ gaps.We used it to recruit developer to write the missing pieces.This list became s known as the GNU task list. In add tion to missing Unix components,we listed y various other useful software and do umentationprojects that, we thought, a truly II complete systemought to have. :- Today, hardly any Unix compone ts are left in the GNU task list-those jobs n have beendone, aside from a few in ssentialones. But the list is full of projects that some might call "applications." Any program that appealsto more than a narrow classof userswould be a use I thing to add to an operatingsystem. Even gamesare included in the k list-and have been since the beginning. Unix included games,so naturally G should too. But compatibility was not an issue for games,so we did not folIo the list of gamesthat Unix had. Instead, we li- listed a spectrumof different kinds 0 gamesthat usersmight like. to I or ts, The GNU C library uses a special °nd of copyleft called the GNU Library Gen- eral Public License, which gives pe 0ssion to link proprietary software with the lot by library 0Why make this exception? I >ry It is not a matter of principle; there is no principle that says proprietary software ~ge products are entitled to include our c de. (Why contribute to a project predicated (lto .onrefusing to share with us?) Using e LGPL for the C library, or for any library, IS a matter of strategy. ifts The C library does a generic job; very proprietary system or compiler comes with a C library. Therefore, to make ur C library available only to free software 24 Free Software, ~ree Society: SelectedEssays of Richard M. Stallman would not have given free sot ware any advantage-it would only havediscouraged use of our library. , One system is an exce~ti n to this: on the GNU system (and this includes GNU/Linux), the GNU C Ii rary is the only C library. So the distribution terms of the GNU C library det~ 'ne whether it is possible to compile a proprietary programfor the GNU system There is no ethical reasonto allow proprietary appli- cations on the GNU systet , ut strategicallyit seemsthat disallowing them would do more to discourageuse 0 the GNU systemthan to encouragedevelopment of free applications. That is why using the i rary GPL is a good strategy for the C library. For other libraries, the strategic cis ion needsto be consideredon a case-by-caseba- sis. When a library doesa sp cial job that can help write certainkinds of programs, then releasingit under the G L, limiting it to free programsonly, is a way of help- ing other free software deye pers, giving them an advantageagainst proprietary software. I Consider GNU Readline,2a library that was developedto provide command- line editing for BASH. Readl ne is releasedunder the ordinary GNU GPL, not the Library GPL. This probably oesreduce the amountReadline is used, but that is no loss for us. Meanwhile, at Ie t one useful applicationhas beenmade free software specifically so it could use R adline, and that is a real gain for the community. Proprietarysoftware devel pers have the advantagesmoney provides; free soft- ware developersneed to rmtk advantagesfor eachother. I hope some day we will have a large collection of G L-covered libraries that have no parallel available to proprietary software, providi g useful modules to serveas building blocks in new free software, and adding fP to a major advantagefor further free software devel- opment. !

Eric Raymond says that" very good work of software starts by scratching a developer's personal itch." aybe that happens sometimes, but many essential pieces of GNU software wfr developed in order to have a complete free operating system. They come from a vi ion and a plan, not from impulse. For example, we develope the GNU C library because a Unix-like system needs a C library, the Bourne Agai Shell (BASH) because a Unix-like system needs a shell, and GNU tar because Unix-like system needs a tar program. The same is true for my own programg the GNU C compiler, GNU Emacs, GDB and GNU Make. / I Some GNU programs Jer dev~loped to cope with specific threats to our free- dom. Thus, we developed g ip to replace the Compress program, which had been lost to the community becau e of the LZw3 patents. We found people to develop LessTif, and more recentl~ st ed GNOME and Harmony, to address the problems

2 The GNU Readlinelibrary ptov$es a set of functions for use by applicationsthat allow users to edit commandlines as they are ped in. 3 The Lempel-Ziv-Welch algo~th is used for compressingdata. Chapter1: The GNU Project 25

caused by certain proprietary libraries see "Non-Free Libraries" below). We are

developing the GNU Privacy Guard to replace popular non-free encryption soft- ' ware, because users should not have to hoose between privacy and freedom. Ir Of course, the people writing these p ograms became interested in the work, and many features were added to them by v .ous people for the sake of their own needs and interests. But that is not why the pr grams exist.

At the beginning of the GNU proj t, I imagined that we would develop the whole GNU system,then releaseit as a whole. That is not how it happened. Since each componentof the GNU s stemwas implementedon a Unix system, eachcomponent could run on Unix sy ems, long before a complete GNU system existed. Some of theseprograms beca e popular, and usersbegan extending them and porting them-to the various inco patible versionsof Unix, and sometimesto other systemsas well. The processmade these programs m ch more powerful, and attractedboth funds and contributors to the GNU project. ut it probably also delayed completion of a minimal working system by severalye s, as GNU developers' time was put into maintaining theseports and adding feat es to the existing components,rather than moving on to write one missing compo ent after another.

The GNU Hurd

By 1990, the GNU systemwas aIm st complete; the only major missing com- ponent was the kernel. We had decid d to implement our kernel as a collection of serverprocesses running on top of ach. Mach is a developed at CarnegieMellon University and then t the University of Utah; the GNU Hurd is a a collection of servers(or "herd of ") that run on top of Mach, and do the var- at ious jobs of the Unix kernel. The st of developmentwas delayed as we waited 19 for Mach to be releasedas free softw , as had beenpromised. One reasonfor choosing this designwas to avoid what seemedto be the hardest ds part of the job: debugging a kernel p ogram without a source-level debuggerto :a do it with. This part of the job had be n done already,in Mach, and we expected IS to debug the Hurd serversas user pI grams, with GDB. But it took a long time ~U to make that possible, and the multi- eadedservers that send messagesto each otherhave turned out to be very hard t debug. Making the Hurd work solidly has ee- stretchedon for many years. ~en lop Alix ~ms The GNU kernel was not originally supposedto be called the Hurd. Its original namewas Alix-named after the wo who was my sweetheartat the time. She, a Unix systemadministrator, had poi ted out how her name would fit a common naming patternfor Unix systemversio s; as a joke, shetold her friends, "Someone 26 Free Software,free Society: SelectedEssays of Richard M. Stallman

should name a kernel afte~ e." I said nothing, but decided to surprise her with a kernel named Alix. It did not stay that way ichael Bushnell (now Thomas), the main developer of the kernel, preferred th n e Hurd, and redefined Alix to refer to a certainpart of the kernel-the part thft ould trap system calls and handle them by sending messagesto Hurd servers. Ultimately, Alix and I ~ro e up, and she changedher name; independently,the Hurd design was changeds that the C library would send messagesdirectly to servers,and this madethe Al x componentdisappear from the design. But before thesethings ha pened,a friend of hers came acrossthe name Alixin the Hurd sourcecode, and m ntioned the name to her. So the namedid its job.

Linux and GNU/LinJlx

The GNU Hurd is not rea y for production use. Fortunately, anotherkernel is available. In-1991, Linus To alds developeda Unix-compatible kernel and called it Linux. Around 1992,collnb ning Linux with the not-quite-completeGNU system resulted in a complete free 0 erating system. (Combining them was a substantial job in itself, of course.) It is ue to Linux that we can actually run a versionof the GNU systemtoday. We call this systemversio GNU/Linux, to expressits composition as a combi- nation of the GNU systemwi Linux as the kernel.

We have proved our abilit to develop a broad spectrumof free software. This does not mean we are invin ible and unstoppable. Several challengesmake the future of free software unce ain; meeting them will require steadfasteffort and endurance,sometimes lastin for years. It will require the kind of determination that people display when the value their freedom and will not let anyone take it away. The following four sectipn discussthese challenges.

Secret Hardware

Hardwaremanufactures in reasinglytend to keephardware specifications secret. This makesit difficult to writ free drivers so that Linux and XFree864can support new hardware. We have co plete.free systemstoday, but we will not have them tomorrow if we cannotsuppo tomorrow's computers. There are two ways to co e with this problem. Programmerscan do reverse engineeringto figure out ho to support the hardware. The rest of us can choose the hardware that is supporte by free software; as our numbersincrease, secrecy of specificationswill becomea self-defeatingpolicy. I 4 XFree86is a programthat provi4es a desktopenvironment that interfaceswith your display hard- ware (mouse,keyboard, etc). ~tr\Ins on many different platforms. Chapter1: The GNU Project 27

Reverseengineering is a big job; will e have programmerswith sufficient de- termination to undertake it? Yes-if ~e have built up a strong feeling that free software is a matter of principle, and no -free drivers are intolerable. And will large numbers of us spendextra money, r even a little extra time, so we can use free drivers? Yes, if the determinationto ve freedomis widespread.

Non-Free Libraries

A non-free library that runs on free 0 erating systemsacts as a trap for free software developers. The library's attrac .ve features are the bait; if you use the library, you fall into the trap, becauseyour rogram cannotusefully be part of a free operating system. (Strictly speaking,we uld include your program, but it won't run with the library missing.) Even wars , if a program that uses the proprietary library becomespopular, it can lure other nsuspectingprogrammers into the trap. The first instance of this problem was e Motif5 toolkit, back in the 80s. Al- though there were as yet no free operati g systems, it was clear what problem Motif would cause for them later on. th GNU Project respondedin two ways: by asking individual free software project to supportthe free X toolkit widgets as well as Motif, and by asking for some~n to write a free replacementfor Motif. The job took many years;LessTif, develop d by the Hungry Programmers,became powerful enoughto support most Motif lap lications only in 1997. Between1996 and 1998, anothernon-fr e Graphical UserInterface (Gill) toolkit library, called Qt, was used in a substantia collection of free software, the desktop KDE. l Free GNU/Linux systemswere unable 0 use KDE, becausewe could not use the library. However, some commercial d stributors of GNU/Linux systemswho were not strict about sticking with free s ftware added KDE to their systems- producing a systemwith more capabilities but less freedom. The KDE group was actively encouraging more programmers 0 use Qt, and millions of new "Linux users" had never been exposedto the i ~ e that there was a problem in this. The situation appeared grim. The free software community respon e to the problem in two ways: GNOME and Harmony. GNOME, the GNU Network Object odel Environment, is GNU's desktop project. Started in 1997 by Miguel de Ic za, and developed with the support of Red Hat Software, GNOME set out to pro ide similar desktopfacilities, but using free software exclusively. It has techni al advantagesas well, such as supporting a variety of languages, not just C++. ut its main purpose was freedom: not to require the use of any non-free software Harmony is a compatible replaceme t 'brary, designedto make it possible to run KDE software without using Qt. In November 1998, the developersof Q announceda changeof license which, when carried out, should make Qt free sot ware. There is no way to be sure, but I think that this was partly due to the comm nity's firm responseto the problem that

5 M~tifi~raphica1 interface and window managtr that runs on top of X Windows.

I 28 Free Software,Ftee Society: SelectedEssays of Richard M. Stallman

Qt posed when it was non-fre .(The new license is inconvenientand inequitable, so it remainsdesirable to avoi using Qt.)6 How will we respond td e next tempting non-free library? Will the whole community understandthe ne d to stay out of the trap? Or will many of us give up freedom for convenienc" d produce a major problem? Our future depends on our philosophy.

Software Patents

The worst threatwe face fo es from softwarepatents, which can put algorithms and featuresoff limits to free oftware for up to twenty years. The LZW compres- sion algorithm patents were a plied for in 1983, and we still cannot releasefree software to produce proper co pressedGlFs. In 1998, a free program to produce MP3 compressedaudio was,re oved from distribution under threatof a patentsuit. There are ways to cope wi patents: we can searchfor evidencethat a patentis invalid, and we can look foral mative ways to do a job. But eachof thesemethods works only sometimes;when oth fail, a patent may force all free software to lack some feature that userswant. at will we do when this happens? Those of us who value frce oftware for freedom's sakewill stay with free soft- ware anyway. We will man~geto get work done without the patentedfeatures. But those who value free software becausethey expect it to be techically superior are likely to call it a failure when patentholds it back. Thus, while it is useful to talk aboutthe practical effectivene s of the "cathedral" model of development,7and the reliability and power of so~e ee software, we must not stop there. We must talk about freedomand principlq.

Free Documentatiolll

The biggest deficiencyino free operatingsystems is not in the software-it is the lack of good free manualst at we caninclude in our systems.Documentation is an essentialpart of any softwar package;when an important free softwarepackage does not come with a good Ifr e manual, that is a major gap. We have many such gaps today. Free documentation,like Ifr e software, is a matter of freedom, not price. The criterion for a free manual ,is pretty much the same as for free software: it is a matter of giving all users cert .n freedoms. Redistribution (including commercial sale) must be permitted, ontli e and on paper, so that the manual can accompany every copy of the program. Permissionfor modificati n is crucial too. As a general rule, I don't believe that it is essentialfor peopleto h.v permissionto modify all sortsof articles and books. For example,I don't think you r I are obliged to give permissionto modify articles like this one, which describe0 r actionsand our views.

6 In September2000, Qt wasrereJle t ed under the GNU GPL, which essentially solved this problem. 7 I probably meant to write "of je' azaar' model," since that was the alternativethat was new and initially controversial.

I

30 Free Softwarq,~ree Society: SelectedEssays of Richard M. Stallman

Some who favored this t rm aimed to avoid the confusion of "free" with "gratis"-a valid goal. Oth s, however, aimed to set aside the spirit of princi- ple that had motivated the fr e software movement and the GNU project, and to appealinstead to executives d businessusers, many of whom hold an ideology that places profit above fr~e om, above community, above principle. Thus, the rhetoric of "open source" roc ses on the potential to make high-quality, powerful software, but shunsthe ideas f freedom, community, and principle. The "Linux" magazinesar a clear example of this-they are filled with adver- tisements for proprietary sofiware that works with GNU/Linux. When the next Motif or Qt appears,will ~es magazineswarn programmersto stay away from it, or will they run ads for it? The supportof businessc contribute to the community in many ways; all else being equal, it is useful. Bu winning their support by speaking even less about freedom and principle can be disastrous;it makesthe previous imbalancebetween outreachand civics educationeven worse. "Free software" and "op~n ource" describethe samecategory of software,more or less, but say different thin s about the software, and about values. The GNU Project continuesto use th~ t rm "free software," to expressthe idea that freedom, not just technology,is import t.

Yoda's philosophy("There is no 'try"') soundsneat, but it doesn't work for me. I have done most of my work while anxious about whether I could do the job, and unsure that it would be enoug to achievethe goal if I did. But I tried anyway, be- causethere was no one butm betweenthe enemyand my city. Surprising myself, I have sometimessucceeded. SometimesI failed; some f my cities have fallen. Then I found anotherthreat- ened city, and got ready for another battle. Over time, I've learned to look for threatsand put myselfbetwee them and my city, calling on other hackersto come and join me. I Nowadays, often I'm n~t e only one. It is a relief and a joy when I see a regimentof hackersdigging i to hold the line, and I realize, this city may survive- for now. But the dangers'4fe greater eachyear, and now Microsoft has explicitly targeted our community. We can't take the future of freedom for granted. Don't take it for granted! If you w t to keep your freedom, you must be preparedto defend it. I