declare smobs in alloc.c
[bpt/emacs.git] / etc / THE-GNU-PROJECT
dissimilarity index 99%
index f3d554e..ece9aa6 100644 (file)
@@ -1,903 +1,8 @@
-  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-software 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 led 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.(2)
-
-   (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.
-
-   (2) We now use the GNU Free Documentation License for documentation.
-
-  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 a 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(1), 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.
-
-   (1) This license is now called the GNU Lesser General Public License,
-   to avoid giving the idea that all libraries ought to use it.
-   See http://www.gnu.org/philosophy/why-not-lgpl.html.
-
-  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 manufacturers 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 technically 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 (1),
-   and the reliability and power of some free software, we must not stop
-   there. We must talk about freedom and principle.
-
-   (1) It would have been clearer to write `of the "bazaar" model', since
-   that was the alternative that was new and initially controversial.
-
-  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.
-
-  Copyright (C) 1998 Richard Stallman
-
-  Verbatim copying and distribution of this entire article is permitted
-  in any medium, provided this notice is preserved.
+The GNU Project
+
+Note added March 2014:
+
+This file is obsolete and will be removed in future.
+Please update any references to use
+
+<http://www.gnu.org/gnu/thegnuproject.html>