From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from femail40.sdc1.sfba.home.com ([24.254.60.34]) by speech.braille.uwo.ca with esmtp (Exim 3.32 #1 (Debian)) id 16UySc-0005oy-00 for ; Sun, 27 Jan 2002 18:11:42 -0500 Received: from cj2204215a ([68.50.5.81]) by femail40.sdc1.sfba.home.com (InterMail vM.4.01.03.20 201-229-121-120-20010223) with SMTP id <20020127231139.GSKJ2370.femail40.sdc1.sfba.home.com@cj2204215a> for ; Sun, 27 Jan 2002 15:11:39 -0800 Message-ID: <011a01c1a787$28771180$0100a8c0@mshome.net> From: "Amanda Lee" To: References: Subject: Re: Richard Stallman on Free Software Date: Sun, 27 Jan 2002 18:05:47 -0500 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0117_01C1A75D.3F23EA40" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 Sender: speakup-admin@braille.uwo.ca Errors-To: speakup-admin@braille.uwo.ca X-BeenThere: speakup@braille.uwo.ca X-Mailman-Version: 2.0.7 Precedence: bulk Reply-To: speakup@braille.uwo.ca X-Reply-To: "Amanda Lee" List-Help: List-Post: List-Subscribe: , List-Id: Speakup is a screen review system for Linux. List-Unsubscribe: , List-Archive: This is a multi-part message in MIME format. ------=_NextPart_000_0117_01C1A75D.3F23EA40 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Did you look for pluggins for the other players on the Vorbis site? That's how I obtained the one for Winamp. Perhaps I shouldn't do this but I will anyway. Here's what appears to be most, if not all of the transcript form this lecture. I did not remove any extraneous junk from the file which saved from the web page. Enjoy! Amands Lee Please see the attached file: stallman.txt ----- Original Message ----- From: "Steve Holmes" To: Sent: Sunday, January 27, 2002 5:54 PM Subject: Re: Richard Stallman on Free Software > Hey, that presentation was great! He can be quite the philosopher, can't > he. > > About the Vorbis utilities, is there any way to play selective parts of an > ogg file ala trplayer style? Example, I was listening to the lecture > yesterday and wanted to pause it a time or two and cannot do that with > ogg123. At least with mpg123 and trplayer, you can move around within the > file while playing and you can pause and start up the program at will. > Are there any similar formatted players for Vorbis files? > > > > _______________________________________________ > Speakup mailing list > Speakup@braille.uwo.ca > http://speech.braille.uwo.ca/mailman/listinfo/speakup > > ------=_NextPart_000_0117_01C1A75D.3F23EA40 Content-Type: text/plain; name="stallman.txt" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="stallman.txt" The GNU Project - Free Software Foundation (FSF)The GNU Project by Richard Stallman originally published in the book "Open Sources"=20 [ English | French | Indonesian | Italian | Korean | Russian | Spanish = ]=20 The first software-sharing community When I started working at the MIT Artificial Intelligence Lab in 1971, I = became=20 part of a software-sharing community that had existed for many years. = Sharing of=20 software was not limited to our particular community; it is as old as = computers,=20 just as sharing of recipes is as old as cooking. But we did it more than = most.=20 The AI Lab used a timesharing operating system called ITS (the = Incompatible=20 Timesharing System) that the lab's staff hackers (1) had designed and = written in=20 assembler language for the Digital PDP-10, one of the large computers of = the=20 era. As a member of this community, an AI lab staff system hacker, my = job was to=20 improve this system.=20 We did not call our software "free software", because that term did not = yet=20 exist; but that is what it was. Whenever people from another university = or a=20 company wanted to port and use a program, we gladly let them. If you saw = someone=20 using an unfamiliar and interesting program, you could always ask to see = the=20 source code, so that you could read it, change it, or cannibalize parts = of it to=20 make a new program.=20 (1) The use of "hacker" to mean "security breaker" is a confusion on the = part of=20 the mass media. We hackers refuse to recognize that meaning, and = continue using=20 the word to mean, "Someone who loves to program and enjoys being clever = about=20 it."=20 The collapse of the community The situation changed drastically in the early 1980s when Digital = discontinued=20 the PDP-10 series. Its architecture, elegant and powerful in the 60s, = could not=20 extend naturally to the larger address spaces that were becoming = feasible in the=20 80s. This meant that nearly all of the programs composing ITS were = obsolete.=20 The AI lab hacker community had already collapsed, not long before. In = 1981, the=20 spin-off company Symbolics had hired away nearly all of the hackers from = the AI=20 lab, and the depopulated community was unable to maintain itself. (The = book=20 Hackers, by Steve Levy, describes these events, as well as giving a = clear=20 picture of this community in its prime.) When the AI lab bought a new = PDP-10 in=20 1982, its administrators decided to use Digital's non-free timesharing = system=20 instead of ITS.=20 The modern computers of the era, such as the VAX or the 68020, had their = own=20 operating systems, but none of them were free software: you had to sign = a=20 nondisclosure agreement even to get an executable copy.=20 This meant that the first step in using a computer was to promise not to = help=20 your neighbor. A cooperating community was forbidden. The rule made by = the=20 owners of proprietary software was, "If you share with your neighbor, = you are a=20 pirate. If you want any changes, beg us to make them."=20 The idea that the proprietary software social system--the system that = says you=20 are not allowed to share or change software--is antisocial, that it is=20 unethical, that it is simply wrong, may come as a surprise to some = readers. But=20 what else could we say about a system based on dividing the public and = keeping=20 users helpless? Readers who find the idea surprising may have taken = proprietary=20 social system as given, or judged it on the terms suggested by = proprietary=20 software businesses. Software publishers have worked long and hard to = convince=20 people that there is only one way to look at the issue.=20 When software publishers talk about "enforcing" their "rights" or = "stopping=20 piracy", what they actually *say* is secondary. The real message of = these=20 statements is in the unstated assumptions they take for granted; the = public is=20 supposed to accept them uncritically. So let's examine them.=20 One assumption is that software companies have an unquestionable natural = right=20 to own software and thus have power over all its users. (If this were a = natural=20 right, then no matter how much harm it does to the public, we could not = object.)=20 Interestingly, the US Constitution and legal tradition reject this view; = copyright is not a natural right, but an artificial government-imposed = monopoly=20 that limits the users' natural right to copy.=20 Another unstated assumption is that the only important thing about = software is=20 what jobs it allows you to do--that we computer users should not care = what kind=20 of society we are allowed to have.=20 A third assumption is that we would have no usable software (or, would = never=20 have a program to do this or that particular job) if we did not offer a = company=20 power over the users of the program. This assumption may have seemed = plausible,=20 before the free software movement demonstrated that we can make plenty = of useful=20 software without putting chains on it.=20 If we decline to accept these assumptions, and judge these issues based = on=20 ordinary common-sense morality while placing the users first, we arrive = at very=20 different conclusions. Computer users should be free to modify programs = to fit=20 their needs, and free to share software, because helping other people is = the=20 basis of society.=20 There is no room here for an extensive statement of the reasoning behind = this=20 conclusion, so I refer the reader to the web page,=20 http://www.gnu.org/philosophy/why-free.html.=20 A stark moral choice. With my community gone, to continue as before was impossible. Instead, I = faced a=20 stark moral choice.=20 The easy choice was to join the proprietary software world, signing=20 nondisclosure agreements and promising not to help my fellow hacker. = Most likely=20 I would also be developing software that was released under = nondisclosure=20 agreements, thus adding to the pressure on other people to betray their = fellows=20 too.=20 I could have made money this way, and perhaps amused myself writing = code. But I=20 knew that at the end of my career, I would look back on years of = building walls=20 to divide people, and feel I had spent my life making the world a worse = place.=20 I had already experienced being on the receiving end of a nondisclosure=20 agreement, when someone refused to give me and the MIT AI lab the source = code=20 for the control program for our printer. (The lack of certain features = in this=20 program made use of the printer extremely frustrating.) So I could not = tell=20 myself that nondisclosure agreements were innocent. I was very angry = when he=20 refused to share with us; I could not turn around and do the same thing = to=20 everyone else.=20 Another choice, straightforward but unpleasant, was to leave the = computer field.=20 That way my skills would not be misused, but they would still be wasted. = I would=20 not be culpable for dividing and restricting computer users, but it = would happen=20 nonetheless.=20 So I looked for a way that a programmer could do something for the good. = I asked=20 myself, was there a program or programs that I could write, so as to = make a=20 community possible once again?=20 The answer was clear: what was needed first was an operating system. = That is the=20 crucial software for starting to use a computer. With an operating = system, you=20 can do many things; without one, you cannot run the computer at all. = With a free=20 operating system, we could again have a community of cooperating = hackers--and=20 invite anyone to join. And anyone would be able to use a computer = without=20 starting out by conspiring to deprive his or her friends.=20 As an operating system developer, I had the right skills for this job. = So even=20 though I could not take success for granted, I realized that I was = elected to do=20 the job. I chose to make the system compatible with Unix so that it = would be=20 portable, and so that Unix users could easily switch to it. The name GNU = was=20 chosen following a hacker tradition, as a recursive acronym for "GNU's = Not=20 Unix."=20 An operating system does not mean just a kernel, barely enough to run = other=20 programs. In the 1970s, every operating system worthy of the name = included=20 command processors, assemblers, compilers, interpreters, debuggers, text = editors, mailers, and much more. ITS had them, Multics had them, VMS had = them,=20 and Unix had them. The GNU operating system would include them too.=20 Later I heard these words, attributed to Hillel (1):=20 If I am not for myself, who will be for me? If I am only for myself, what am I? If not now, when?=20 The decision to start the GNU project was based on a similar spirit.=20 (1) As an Atheist, I don't follow any religious leaders, but I sometimes = find I=20 admire something one of them has said.=20 Free as in freedom The term "free software" is sometimes misunderstood--it has nothing to = do with=20 price. It is about freedom. Here, therefore, is the definition of free = software:=20 a program is free software, for you, a particular user, if:=20 You have the freedom to run the program, for any purpose.=20 You have the freedom to modify the program to suit your needs. (To = make this=20 freedom effective in practice, you must have access to the source = code, since=20 making changes in a program without having the source code is = exceedingly=20 difficult.)=20 You have the freedom to redistribute copies, either gratis or for a = fee.=20 You have the freedom to distribute modified versions of the program, = so that=20 the community can benefit from your improvements.=20 Since "free" refers to freedom, not to price, there is no contradiction = between=20 selling copies and free software. In fact, the freedom to sell copies is = crucial: collections of free software sold on CD-ROMs are important for = the=20 community, and selling them is an important way to raise funds for free = software=20 development. Therefore, a program which people are not free to include = on these=20 collections is not free software.=20 Because of the ambiguity of "free", people have long looked for = alternatives,=20 but no one has found a suitable alternative. The English Language has = more words=20 and nuances than any other, but it lacks a simple, unambiguous, word = that means=20 "free," as in freedom--"unfettered," being the word that comes closest = in=20 meaning. Such alternatives as "liberated", "freedom" and "open" have = either the=20 wrong meaning or some other disadvantage.=20 GNU software and the GNU system Developing a whole system is a very large project. To bring it into = reach, I=20 decided to adapt and use existing pieces of free software wherever that = was=20 possible. For example, I decided at the very beginning to use TeX as the = principal text formatter; a few years later, I decided to use the X = Window=20 System rather than writing another window system for GNU.=20 Because of this decision, the GNU system is not the same as the = collection of=20 all GNU software. The GNU system includes programs that are not GNU = software,=20 programs that were developed by other people and projects for their own=20 purposes, but which we can use because they are free software.=20 Commencing the project In January 1984 I quit my job at MIT and began writing GNU software. = Leaving MIT=20 was necessary so that MIT would not be able to interfere with = distributing GNU=20 as free software. If I had remained on the staff, MIT could have claimed = to own=20 the work, and could have imposed their own distribution terms, or even = turned=20 the work into a proprietary software package. I had no intention of = doing a=20 large amount of work only to see it become useless for its intended = purpose:=20 creating a new software-sharing community.=20 However, Professor Winston, then the head of the MIT AI Lab, kindly = invited me=20 to keep using the lab's facilities.=20 The first steps Shortly before beginning the GNU project, I heard about the Free = University=20 Compiler Kit, also known as VUCK. (The Dutch word for "free" is written = with a=20 V.) This was a compiler designed to handle multiple languages, including = C and=20 Pascal, and to support multiple target machines. I wrote to its author = asking if=20 GNU could use it.=20 He responded derisively, stating that the university was free but the = compiler=20 was not. I therefore decided that my first program for the GNU project = would be=20 a multi-language, multi-platform compiler.=20 Hoping to avoid the need to write the whole compiler myself, I obtained = the=20 source code for the Pastel compiler, which was a multi-platform compiler = developed at Lawrence Livermore Lab. It supported, and was written in, = an=20 extended version of Pascal, designed to be a system-programming = language. I=20 added a C front end, and began porting it to the Motorola 68000 = computer. But I=20 had to give that up when I discovered that the compiler needed many = megabytes of=20 stack space, and the available 68000 Unix system would only allow 64k.=20 I then realized that the Pastel compiler functioned by parsing the = entire input=20 file into a syntax tree, converting the whole syntax tree into a chain = of=20 "instructions", and then generating the whole output file, without ever = freeing=20 any storage. At this point, I concluded I would have to write a new = compiler=20 from scratch. That new compiler is now known as GCC; none of the Pastel = compiler=20 is used in it, but I managed to adapt and use the C front end that I had = written. But that was some years later; first, I worked on GNU Emacs.=20 GNU Emacs I began work on GNU Emacs in September 1984, and in early 1985 it was = beginning=20 to be usable. This enabled me to begin using Unix systems to do editing; = having=20 no interest in learning to use vi or ed, I had done my editing on other = kinds of=20 machines until then.=20 At this point, people began wanting to use GNU Emacs, which raised the = question=20 of how to distribute it. Of course, I put it on the anonymous ftp server = on the=20 MIT computer that I used. (This computer, prep.ai.mit.edu, thus became = the=20 principal GNU ftp distribution site; when it was decommissioned a few = years=20 later, we transferred the name to our new ftp server.) But at that time, = many of=20 the interested people were not on the Internet and could not get a copy = by ftp.=20 So the question was, what would I say to them?=20 I could have said, "Find a friend who is on the net and who will make a = copy for=20 you." Or I could have done what I did with the original PDP-10 Emacs: = tell them,=20 "Mail me a tape and a SASE, and I will mail it back with Emacs on it." = But I had=20 no job, and I was looking for ways to make money from free software. So = I=20 announced that I would mail a tape to whoever wanted one, for a fee of = $150. In=20 this way, I started a free software distribution business, the precursor = of the=20 companies that today distribute entire Linux-based GNU systems.=20 Is a program free for every user? If a program is free software when it leaves the hands of its author, = this does=20 not necessarily mean it will be free software for everyone who has a = copy of it.=20 For example, public domain software (software that is not copyrighted) = is free=20 software; but anyone can make a proprietary modified version of it. = Likewise,=20 many free programs are copyrighted but distributed under simple = permissive=20 licenses which allow proprietary modified versions.=20 The paradigmatic example of this problem is the X Window System. = Developed at=20 MIT, and released as free software with a permissive license, it was = soon=20 adopted by various computer companies. They added X to their proprietary = Unix=20 systems, in binary form only, and covered by the same nondisclosure = agreement.=20 These copies of X were no more free software than Unix was.=20 The developers of the X Window System did not consider this a = problem--they=20 expected and intended this to happen. Their goal was not freedom, just=20 "success", defined as "having many users." They did not care whether = these users=20 had freedom, only that they should be numerous.=20 This lead to a paradoxical situation where two different ways of = counting the=20 amount of freedom gave different answers to the question, "Is this = program=20 free?" If you judged based on the freedom provided by the distribution = terms of=20 the MIT release, you would say that X was free software. But if you = measured the=20 freedom of the average user of X, you would have to say it was = proprietary=20 software. Most X users were running the proprietary versions that came = with Unix=20 systems, not the free version.=20 Copyleft and the GNU GPL The goal of GNU was to give users freedom, not just to be popular. So we = needed=20 to use distribution terms that would prevent GNU software from being = turned into=20 proprietary software. The method we use is called "copyleft".(1)=20 Copyleft uses copyright law, but flips it over to serve the opposite of = its=20 usual purpose: instead of a means of privatizing software, it becomes a = means of=20 keeping software free.=20 The central idea of copyleft is that we give everyone permission to run = the=20 program, copy the program, modify the program, and distribute modified=20 versions--but not permission to add restrictions of their own. Thus, the = crucial=20 freedoms that define "free software" are guaranteed to everyone who has = a copy;=20 they become inalienable rights.=20 For an effective copyleft, modified versions must also be free. This = ensures=20 that work based on ours becomes available to our community if it is = published.=20 When programmers who have jobs as programmers volunteer to improve GNU = software,=20 it is copyleft that prevents their employers from saying, "You can't = share those=20 changes, because we are going to use them to make our proprietary = version of the=20 program."=20 The requirement that changes must be free is essential if we want to = ensure=20 freedom for every user of the program. The companies that privatized the = X=20 Window System usually made some changes to port it to their systems and=20 hardware. These changes were small compared with the great extent of X, = but they=20 were not trivial. If making changes were an excuse to deny the users = freedom, it=20 would be easy for anyone to take advantage of the excuse.=20 A related issue concerns combining a free program with non-free code. = Such a=20 combination would inevitably be non-free; whichever freedoms are lacking = for the=20 non-free part would be lacking for the whole as well. To permit such=20 combinations would open a hole big enough to sink a ship. Therefore, a = crucial=20 requirement for copyleft is to plug this hole: anything added to or = combined=20 with a copylefted program must be such that the larger combined version = is also=20 free and copylefted.=20 The specific implementation of copyleft that we use for most GNU = software is the=20 GNU General Public License, or GNU GPL for short. We have other kinds of = copyleft that are used in specific circumstances. GNU manuals are = copylefted=20 also, but use a much simpler kind of copyleft, because the complexity of = the GNU=20 GPL is not necessary for manuals.=20 (1) In 1984 or 1985, Don Hopkins (a very imaginative fellow) mailed me a = letter.=20 On the envelope he had written several amusing sayings, including this = one:=20 "Copyleft--all rights reversed." I used the word "copyleft" to name the=20 distribution concept I was developing at the time.=20 The Free Software Foundation As interest in using Emacs was growing, other people became involved in = the GNU=20 project, and we decided that it was time to seek funding once again. So = in 1985=20 we created the Free Software Foundation, a tax-exempt charity for free = software=20 development. The FSF also took over the Emacs tape distribution = business; later=20 it extended this by adding other free software (both GNU and non-GNU) to = the=20 tape, and by selling free manuals as well.=20 The FSF accepts donations, but most of its income has always come from = sales--of=20 copies of free software, and of other related services. Today it sells = CD-ROMs=20 of source code, CD-ROMs with binaries, nicely printed manuals (all with = freedom=20 to redistribute and modify), and Deluxe Distributions (where we build = the whole=20 collection of software for your choice of platform).=20 Free Software Foundation employees have written and maintained a number = of GNU=20 software packages. Two notable ones are the C library and the shell. The = GNU C=20 library is what every program running on a GNU/Linux system uses to = communicate=20 with Linux. It was developed by a member of the Free Software Foundation = staff,=20 Roland McGrath. The shell used on most GNU/Linux systems is BASH, the = Bourne=20 Again Shell(1), which was developed by FSF employee Brian Fox.=20 We funded development of these programs because the GNU project was not = just=20 about tools or a development environment. Our goal was a complete = operating=20 system, and these programs were needed for that goal.=20 (1) "Bourne again Shell" is a joke on the name ``Bourne Shell'', which = was the=20 usual shell on Unix.=20 Free software support The free software philosophy rejects a specific widespread business = practice,=20 but it is not against business. When businesses respect the users' = freedom, we=20 wish them success.=20 Selling copies of Emacs demonstrates one kind of free software business. = When=20 the FSF took over that business, I needed another way to make a living. = I found=20 it in selling services relating to the free software I had developed. = This=20 included teaching, for subjects such as how to program GNU Emacs and how = to=20 customize GCC, and software development, mostly porting GCC to new = platforms.=20 Today each of these kinds of free software business is practiced by a = number of=20 corporations. Some distribute free software collections on CD-ROM; = others sell=20 support at levels ranging from answering user questions, to fixing bugs, = to=20 adding major new features. We are even beginning to see free software = companies=20 based on launching new free software products.=20 Watch out, though--a number of companies that associate themselves with = the term=20 "open source" actually base their business on non-free software that = works with=20 free software. These are not free software companies, they are = proprietary=20 software companies whose products tempt users away from freedom. They = call these=20 "value added", which reflects the values they would like us to adopt:=20 convenience above freedom. If we value freedom more, we should call them = "freedom subtracted" products.=20 Technical goals The principal goal of GNU was to be free software. Even if GNU had no = technical=20 advantage over Unix, it would have a social advantage, allowing users to = cooperate, and an ethical advantage, respecting the user's freedom.=20 But it was natural to apply the known standards of good practice to the=20 work--for example, dynamically allocating data structures to avoid = arbitrary=20 fixed size limits, and handling all the possible 8-bit codes wherever = that made=20 sense.=20 In addition, we rejected the Unix focus on small memory size, by = deciding not to=20 support 16-bit machines (it was clear that 32-bit machines would be the = norm by=20 the time the GNU system was finished), and to make no effort to reduce = memory=20 usage unless it exceeded a megabyte. In programs for which handling very = large=20 files was not crucial, we encouraged programmers to read an entire input = file=20 into core, then scan its contents without having to worry about I/O.=20 These decisions enabled many GNU programs to surpass their Unix = counterparts in=20 reliability and speed.=20 Donated computers As the GNU project's reputation grew, people began offering to donate = machines=20 running UNIX to the project. These were very useful, because the easiest = way to=20 develop components of GNU was to do it on a UNIX system, and replace the = components of that system one by one. But they raised an ethical issue: = whether=20 it was right for us to have a copy of UNIX at all.=20 UNIX was (and is) proprietary software, and the GNU project's philosophy = said=20 that we should not use proprietary software. But, applying the same = reasoning=20 that leads to the conclusion that violence in self defense is justified, = I=20 concluded that it was legitimate to use a proprietary package when that = was=20 crucial for developing free replacement that would help others stop = using the=20 proprietary package.=20 But, even if this was a justifiable evil, it was still an evil. Today we = no=20 longer have any copies of Unix, because we have replaced them with free=20 operating systems. If we could not replace a machine's operating system = with a=20 free one, we replaced the machine instead.=20 The GNU Task List As the GNU project proceeded, and increasing numbers of system = components were=20 found or developed, eventually it became useful to make a list of the = remaining=20 gaps. We used it to recruit developers to write the missing pieces. This = list=20 became known as the GNU task list. In addition to missing Unix = components, we=20 listed added various other useful software and documentation projects = that, we=20 thought, a truly complete system ought to have.=20 Today, hardly any Unix components are left in the GNU task list--those = jobs have=20 been done, aside from a few inessential ones. But the list is full of = projects=20 that some might call "applications". Any program that appeals to more = than a=20 narrow class of users would be a useful thing to add to an operating = system.=20 Even games are included in the task list--and have been since the = beginning.=20 Unix included games, so naturally GNU should too. But compatibility was = not an=20 issue for games, so we did not follow the list of games that Unix had. = Instead,=20 we listed a spectrum of different kinds of games that users might like.=20 The GNU Library GPL The GNU C library uses a special kind of copyleft called the GNU Library = General=20 Public License, which gives permission to link proprietary software with = the=20 library. Why make this exception?=20 It is not a matter of principle; there is no principle that says = proprietary=20 software products are entitled to include our code. (Why contribute to a = project=20 predicated on refusing to share with us?) Using the LGPL for the C = library, or=20 for any library, is a matter of strategy.=20 The C library does a generic job; every proprietary system or compiler = comes=20 with a C library. Therefore, to make our C library available only to = free=20 software would not have given free software any advantage--it would only = have=20 discouraged use of our library.=20 One system is an exception to this: on the GNU system (and this includes = GNU/Linux), the GNU C library is the only C library. So the distribution = terms=20 of the GNU C library determine whether it is possible to compile a = proprietary=20 program for the GNU system. There is no ethical reason to allow = proprietary=20 applications on the GNU system, but strategically it seems that = disallowing them=20 would do more to discourage use of the GNU system than to encourage = development=20 of free applications.=20 That is why using the Library GPL is a good strategy for the C library. = For=20 other libraries, the strategic decision needs to be considered on a = case-by-case=20 basis. When a library does a special job that can help write certain = kinds of=20 programs, then releasing it under the GPL, limiting it to free programs = only, is=20 a way of helping other free software developers, giving them an = advantage=20 against proprietary software.=20 Consider GNU Readline, a library that was developed to provide = command-line=20 editing for BASH. Readline is released under the ordinary GNU GPL, not = the=20 Library GPL. This probably does reduce the amount Readline is used, but = that is=20 no loss for us. Meanwhile, at least one useful application has been made = free=20 software specifically so it could use Readline, and that is a real gain = for the=20 community.=20 Proprietary software developers have the advantages money provides; free = software developers need to make advantages for each other. I hope some = day we=20 will have a large collection of GPL-covered libraries that have no = parallel=20 available to proprietary software, providing useful modules to serve as = building=20 blocks in new free software, and adding up to a major advantage for = further free=20 software development.=20 Scratching an itch? Eric Raymond says that "Every good work of software starts by scratching = a=20 developer's personal itch." Maybe that happens sometimes, but many = essential=20 pieces of GNU software were developed in order to have a complete free = operating=20 system. They come from a vision and a plan, not from impulse.=20 For example, we developed the GNU C library because a Unix-like system = needs a C=20 library, the Bourne-Again Shell (bash) because a Unix-like system needs = a shell,=20 and GNU tar because a Unix-like system needs a tar program. The same is = true for=20 my own programs--the GNU C compiler, GNU Emacs, GDB and GNU Make.=20 Some GNU programs were developed to cope with specific threats to our = freedom.=20 Thus, we developed gzip to replace the Compress program, which had been = lost to=20 the community because of the LZW patents. We found people to develop = LessTif,=20 and more recently started GNOME and Harmony, to address the problems = caused by=20 certain proprietary libraries (see below). We are developing the GNU = Privacy=20 Guard to replace popular non-free encryption software, because users = should not=20 have to choose between privacy and freedom.=20 Of course, the people writing these programs became interested in the = work, and=20 many features were added to them by various people for the sake of their = own=20 needs and interests. But that is not why the programs exist.=20 Unexpected developments At the beginning of the GNU project, I imagined that we would develop = the whole=20 GNU system, then release it as a whole. That is not how it happened.=20 Since each component of the GNU system was implemented on a Unix system, = each=20 component could run on Unix systems, long before a complete GNU system = existed.=20 Some of these programs became popular, and users began extending them = and=20 porting them---to the various incompatible versions of Unix, and = sometimes to=20 other systems as well.=20 The process made these programs much more powerful, and attracted both = funds and=20 contributors to the GNU project. But it probably also delayed completion = of a=20 minimal working system by several years, as GNU developers' time was put = into=20 maintaining these ports and adding features to the existing components, = rather=20 than moving on to write one missing component after another.=20 The GNU Hurd By 1990, the GNU system was almost complete; the only major missing = component=20 was the kernel. We had decided to implement our kernel as a collection = of server=20 processes running on top of Mach. Mach is a microkernel developed at = Carnegie=20 Mellon University and then at the University of Utah; the GNU HURD is a=20 collection of servers (or ``herd of gnus'') that run on top of Mach, and = do the=20 various jobs of the Unix kernel. The start of development was delayed as = we=20 waited for Mach to be released as free software, as had been promised.=20 One reason for choosing this design was to avoid what seemed to be the = hardest=20 part of the job: debugging a kernel program without a source-level = debugger to=20 do it with. This part of the job had been done already, in Mach, and we = expected=20 to debug the HURD servers as user programs, with GDB. But it took a long = time to=20 make that possible, and the multi-threaded servers that send messages to = each=20 other have turned out to be very hard to debug. Making the HURD work = solidly has=20 stretched on for many years.=20 Alix The GNU kernel was not originally supposed to be called the HURD. Its = original=20 name was Alix--named after the woman who was my sweetheart at the time. = She, a=20 Unix system administrator, had pointed out how her name would fit a = common=20 naming pattern for Unix system versions; as a joke, she told her = friends,=20 "Someone should name a kernel after me." I said nothing, but decided to = surprise=20 her with a kernel named Alix.=20 It did not stay that way. Michael Bushnell (now Thomas), the main = developer of=20 the kernel, preferred the name HURD, and redefined Alix to refer to a = certain=20 part of the kernel--the part that would trap system calls and handle = them by=20 sending messages to HURD servers.=20 Ultimately, Alix and I broke up, and she changed her name; = independently, the=20 HURD design was changed so that the C library would send messages = directly to=20 servers, and this made the Alix component disappear from the design.=20 But before these things happened, a friend of hers came across the name = Alix in=20 the HURD source code, and mentioned the name to her. So the name did its = job.=20 Linux and GNU/Linux The GNU Hurd is not ready for production use. Fortunately, another = kernel is=20 available. In 1991, Linus Torvalds developed a Unix-compatible kernel = and called=20 it Linux. Around 1992, combining Linux with the not-quite-complete GNU = system=20 resulted in a complete free operating system. (Combining them was a = substantial=20 job in itself, of course.) It is due to Linux that we can actually run a = version=20 of the GNU system today.=20 We call this system version GNU/Linux, to express its composition as a=20 combination of the GNU system with Linux as the kernel.=20 Challenges in our future We have proved our ability to develop a broad spectrum of free software. = This=20 does not mean we are invincible and unstoppable. Several challenges make = the=20 future of free software uncertain; meeting them will require steadfast = effort=20 and endurance, sometimes lasting for years. It will require the kind of=20 determination that people display when they value their freedom and will = not let=20 anyone take it away.=20 The following four sections discuss these challenges.=20 Secret hardware Hardware manufactures increasingly tend to keep hardware specifications = secret.=20 This makes it difficult to write free drivers so that Linux and XFree86 = can=20 support new hardware. We have complete free systems today, but we will = not have=20 them tomorrow if we cannot support tomorrow's computers.=20 There are two ways to cope with this problem. Programmers can do reverse = engineering to figure out how to support the hardware. The rest of us = can choose=20 the hardware that is supported by free software; as our numbers = increase,=20 secrecy of specifications will become a self-defeating policy.=20 Reverse engineering is a big job; will we have programmers with = sufficient=20 determination to undertake it? Yes--if we have built up a strong feeling = that=20 free software is a matter of principle, and non-free drivers are = intolerable.=20 And will large numbers of us spend extra money, or even a little extra = time, so=20 we can use free drivers? Yes, if the determination to have freedom is=20 widespread.=20 Non-free libraries A non-free library that runs on free operating systems acts as a trap = for free=20 software developers. The library's attractive features are the bait; if = you use=20 the library, you fall into the trap, because your program cannot = usefully be=20 part of a free operating system. (Strictly speaking, we could include = your=20 program, but it won't run with the library missing.) Even worse, if a = program=20 that uses the proprietary library becomes popular, it can lure other=20 unsuspecting programmers into the trap.=20 The first instance of this problem was the Motif toolkit, back in the = 80s.=20 Although there were as yet no free operating systems, it was clear what = problem=20 Motif would cause for them later on. The GNU Project responded in two = ways: by=20 asking individual free software projects to support the free X toolkit = widgets=20 as well as Motif, and by asking for someone to write a free replacement = for=20 Motif. The job took many years; LessTif, developed by the Hungry = Programmers,=20 became powerful enough to support most Motif applications only in 1997.=20 Between 1996 and 1998, another non-free GUI toolkit library, called Qt, = was used=20 in a substantial collection of free software, the desktop KDE.=20 Free GNU/Linux systems were unable to use KDE, because we could not use = the=20 library. However, some commercial distributors of GNU/Linux systems who = were not=20 strict about sticking with free software added KDE to their = systems--producing a=20 system with more capabilities, but less freedom. The KDE group was = actively=20 encouraging more programmers to use Qt, and millions of new "Linux = users" had=20 never been exposed to the idea that there was a problem in this. The = situation=20 appeared grim.=20 The free software community responded to the problem in two ways: GNOME = and=20 Harmony.=20 GNOME, the GNU Network Object Model Environment, is GNU's desktop = project.=20 Started in 1997 by Miguel de Icaza, and developed with the support of = Red Hat=20 Software, GNOME set out to provide similar desktop facilities, but using = free=20 software exclusively. It has technical advantages as well, such as = supporting a=20 variety of languages, not just C++. But its main purpose was freedom: = not to=20 require the use of any non-free software.=20 Harmony is a compatible replacement library, designed to make it = possible to run=20 KDE software without using Qt.=20 In November 1998, the developers of Qt announced a change of license = which, when=20 carried out, should make Qt free software. There is no way to be sure, = but I=20 think that this was partly due to the community's firm response to the = problem=20 that Qt posed when it was non-free. (The new license is inconvenient and = inequitable, so it remains desirable to avoid using Qt.)=20 [Subsequent note: in September 2000, Qt was rereleased under the GNU = GPL, which=20 essentially solved this problem.]=20 How will we respond to the next tempting non-free library? Will the = whole=20 community understand the need to stay out of the trap? Or will many of = us give=20 up freedom for convenience, and produce a major problem? Our future = depends on=20 our philosophy.=20 Software patents The worst threat we face comes from software patents, which can put = algorithms=20 and features off limits to free software for up to twenty years. The LZW = compression algorithm patents were applied for in 1983, and we still = cannot=20 release free software to produce proper compressed GIFs. In 1998, a free = program=20 to produce MP3 compressed audio was removed from distribution under = threat of a=20 patent suit.=20 There are ways to cope with patents: we can search for evidence that a = patent is=20 invalid, and we can look for alternative ways to do a job. But each of = these=20 methods works only sometimes; when both fail, a patent may force all = free=20 software to lack some feature that users want. What will we do when this = happens?=20 Those of us who value free software for freedom's sake will stay with = free=20 software anyway. We will manage to get work done without the patented = features.=20 But those who value free software because they expect it to be = techically=20 superior are likely to call it a failure when a patent holds it back. = Thus,=20 while it is useful to talk about the practical effectiveness of the = "cathedral"=20 model of development, and the reliability and power of some free = software, we=20 must not stop there. We must talk about freedom and principle.=20 Free documentation The biggest deficiency in our free operating systems is not in the = software--it=20 is the lack of good free manuals that we can include in our systems.=20 Documentation is an essential part of any software package; when an = important=20 free software package does not come with a good free manual, that is a = major=20 gap. We have many such gaps today.=20 Free documentation, like free software, is a matter of freedom, not = price. The=20 criterion for a free manual is pretty much the same as for free = software: it is=20 a matter of giving all users certain freedoms. Redistribution (including = commercial sale) must be permitted, on-line and on paper, so that the = manual can=20 accompany every copy of the program.=20 Permission for modification is crucial too. As a general rule, I don't = believe=20 that it is essential for people to have permission to modify all sorts = of=20 articles and books. For example, I don't think you or I are obliged to = give=20 permission to modify articles like this one, which describe our actions = and our=20 views.=20 But there is a particular reason why the freedom to modify is crucial = for=20 documentation for free software. When people exercise their right to = modify the=20 software, and add or change its features, if they are conscientious they = will=20 change the manual too--so they can provide accurate and usable = documentation=20 with the modified program. A manual which does not allow programmers to = be=20 conscientious and finish the job, does not fill our community's needs.=20 Some kinds of limits on how modifications are done pose no problem. For = example,=20 requirements to preserve the original author's copyright notice, the=20 distribution terms, or the list of authors, are ok. It is also no = problem to=20 require modified versions to include notice that they were modified, = even to=20 have entire sections that may not be deleted or changed, as long as = these=20 sections deal with nontechnical topics. These kinds of restrictions are = not a=20 problem because they don't stop the conscientious programmer from = adapting the=20 manual to fit the modified program. In other words, they don't block the = free=20 software community from making full use of the manual.=20 However, it must be possible to modify all the *technical* content of = the=20 manual, and then distribute the result in all the usual media, through = all the=20 usual channels; otherwise, the restrictions do obstruct the community, = the=20 manual is not free, and we need another manual.=20 Will free software developers have the awareness and determination to = produce a=20 full spectrum of free manuals? Once again, our future depends on = philosophy.=20 We must talk about freedom Estimates today are that there are ten million users of GNU/Linux = systems such=20 as Debian GNU/Linux and Red Hat Linux. Free software has developed such=20 practical advantages that users are flocking to it for purely practical = reasons.=20 The good consequences of this are evident: more interest in developing = free=20 software, more customers for free software businesses, and more ability = to=20 encourage companies to develop commercial free software instead of = proprietary=20 software products.=20 But interest in the software is growing faster than awareness of the = philosophy=20 it is based on, and this leads to trouble. Our ability to meet the = challenges=20 and threats described above depends on the will to stand firm for = freedom. To=20 make sure our community has this will, we need to spread the idea to the = new=20 users as they come into the community.=20 But we are failing to do so: the efforts to attract new users into our = community=20 are far outstripping the efforts to teach them the civics of our = community. We=20 need to do both, and we need to keep the two efforts in balance.=20 "Open Source" Teaching new users about freedom became more difficult in 1998, when a = part of=20 the community decided to stop using the term "free software" and say = "open=20 source software" instead.=20 Some who favored this term aimed to avoid the confusion of "free" with=20 "gratis"--a valid goal. Others, however, aimed to set aside the spirit = of=20 principle that had motivated the free software movement and the GNU = project, and=20 to appeal instead to executives and business users, many of whom hold an = ideology that places profit above freedom, above community, above = principle.=20 Thus, the rhetoric of "open source" focuses on the potential to make = high=20 quality, powerful software, but shuns the ideas of freedom, community, = and=20 principle.=20 The "Linux" magazines are a clear example of this--they are filled with=20 advertisements for proprietary software that works with GNU/Linux. When = the next=20 Motif or Qt appears, will these magazines warn programmers to stay away = from it,=20 or will they run ads for it?=20 The support of business can contribute to the community in many ways; = all else=20 being equal, it is useful. But winning their support by speaking even = less about=20 freedom and principle can be disastrous; it makes the previous imbalance = between=20 outreach and civics education even worse.=20 "Free software" and "open source" describe the same category of = software, more=20 or less, but say different things about the software, and about values. = The GNU=20 Project continues to use the term "free software", to express the idea = that=20 freedom, not just technology, is important.=20 Try! Yoda's philosophy ("There is no `try'") sounds neat, but it doesn't work = for me.=20 I have done most of my work while anxious about whether I could do the = job, and=20 unsure that it would be enough to achieve the goal if I did. But I tried = anyway,=20 because there was no one but me between the enemy and my city. = Surprising=20 myself, I have sometimes succeeded.=20 Sometimes I failed; some of my cities have fallen. Then I found another=20 threatened city, and got ready for another battle. Over time, I've = learned to=20 look for threats and put myself between them and my city, calling on = other=20 hackers to come and join me.=20 Nowadays, often I'm not the only one. It is a relief and a joy when I = see a=20 regiment of hackers digging in to hold the line, and I realize, this = city may=20 survive--for now. But the dangers are greater each year, and now = Microsoft has=20 explicitly targeted our community. We can't take the future of freedom = for=20 granted. Don't take it for granted! If you want to keep your freedom, = you must=20 be prepared to defend it.=20 [ English | French | Indonesian | Italian | Korean | Russian | Spanish ] = Return to GNU's home page.=20 Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are = also other=20 ways to contact the FSF.=20 Please send comments on these web pages to webmasters@gnu.org, send = other=20 questions to gnu@gnu.org.=20 Copyright (C) 1998, 2001 Richard Stallman.=20 Verbatim copying and distribution of this entire article is permitted in = any=20 medium, provided this notice is preserved.=20 Updated: $Date: 2001/12/28 00:09:59 $ $Author: mitya $=20 ------=_NextPart_000_0117_01C1A75D.3F23EA40--