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