summaryrefslogtreecommitdiff
path: root/examples/blog/articles/scrap1_2.html
diff options
context:
space:
mode:
Diffstat (limited to 'examples/blog/articles/scrap1_2.html')
-rw-r--r--examples/blog/articles/scrap1_2.html1366
1 files changed, 1366 insertions, 0 deletions
diff --git a/examples/blog/articles/scrap1_2.html b/examples/blog/articles/scrap1_2.html
new file mode 100644
index 00000000..f104a7b1
--- /dev/null
+++ b/examples/blog/articles/scrap1_2.html
@@ -0,0 +1,1366 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- This is the second edition of Free Software, Free Society: Selected Essays of Richard M. Stallman.
+
+Free Software Foundation
+
+51 Franklin Street, Fifth Floor
+
+Boston, MA 02110-1335
+Copyright C 2002, 2010 Free Software Foundation, Inc.
+Verbatim copying and distribution of this entire book are permitted
+worldwide, without royalty, in any medium, provided this notice is
+preserved. Permission is granted to copy and distribute translations
+of this book from the original English into another language provided
+the translation has been approved by the Free Software Foundation and
+the copyright notice and this permission notice are preserved on all
+copies.
+
+ISBN 978-0-9831592-0-9
+Cover design by Rob Myers.
+
+Cover photograph by Peter Hinely.
+ -->
+<!-- Created on February 18, 2016 by texi2html 1.82
+texi2html was written by:
+ Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+-->
+<head>
+<title>Free Software, Free Society, 2nd ed.: 2. The GNU Project</title>
+
+<meta name="description" content="This is the second edition of Richard Stallman's collection of essays.">
+<meta name="keywords" content="Free Software, Free Society, 2nd ed.: 2. The GNU Project">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+<link rel="stylesheet" type="text/css" href="../style.css">
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="GNU-Project"></a>
+<header><div id="logo"><img src="../gnu.svg" height="100" width="100"></div><h1>Free Software, Free Society, 2nd ed.</h1></header><section id="main"><a name="The-GNU-Project"></a>
+<h1 class="chapter"> 2. The GNU Project </h1>
+
+
+<a name="index-GNU-Project-_0028see-also-GNU_0029"></a>
+<a name="index-GNU_002c-GNU-Project"></a>
+<a name="The-First-Software_002dSharing-Community"></a>
+<h3 class="subheading"> The First Software-Sharing Community </h3>
+
+<a name="index-AI-_0028Artificial-Intelligence_0029-Lab_002c-MIT-_0028see-also-MIT_0029"></a>
+<p>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.
+</p>
+<p>The AI Lab used a timesharing operating system called
+<a name="index-ITS-_0028Incompatible-Timesharing-System_0029"></a>
+ITS (the
+Incompatible Timesharing System) that the lab&rsquo;s staff
+<a name="index-hackers"></a>
+hackers<a name="DOCF2" href="#FOOT2">(2)</a> 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.
+</p>
+<p>We did not call our software &ldquo;free software,&rdquo; 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.
+</p>
+<a name="The-Collapse-of-the-Community"></a>
+<h3 class="subheading"> The Collapse of the Community </h3>
+
+<p>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.
+</p>
+
+<p>The AI Lab hacker community had already collapsed, not long before.
+In 1981, the spin-off company
+<a name="index-Symbolics"></a>
+Symbolics had hired away nearly all of
+the hackers from the AI Lab, and the depopulated community was unable
+to maintain itself.
+<a name="index-Levy_002c-Steven"></a>
+(The book <cite>Hackers,</cite> 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&rsquo;s nonfree timesharing system instead of
+<a name="index-ITS-_0028Incompatible-Timesharing-System_0029-1"></a>
+ITS.
+</p>
+<p>The modern computers of the era, such as the
+<a name="index-VAX"></a>
+VAX or the
+<a name="index-68000_002dclass-hardware"></a>
+68020, had their own operating systems, but none of them were free software: you
+had to sign a
+<a name="index-nondisclosure-agreements"></a>
+nondisclosure agreement even to get an executable copy.
+</p>
+<p>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
+<a name="index-ownership_002c-and-damage-to-social-cohesion"></a>
+<a name="index-ownership_002c-and-users_0027-freedom"></a>
+owners of proprietary software was, &ldquo;If you
+share with your neighbor, you are a pirate. If you want any changes,
+beg us to make them.&rdquo;
+</p>
+<a name="index-citizen-values_002c-proprietary-software-and"></a>
+<p>The idea that the proprietary software social system&mdash;the system that
+says you are not allowed to share or change software&mdash;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 the proprietary software social system as
+a 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.
+</p>
+<a name="index-_0060_0060piracy_002c_0027_0027-erroneous-use-of-term-1"></a>
+<p>When software publishers talk about &ldquo;enforcing&rdquo; their
+&ldquo;rights&rdquo; or &ldquo;stopping piracy,&rdquo; what they
+actually <em>say</em> is secondary. The real message of these statements is
+in the unstated assumptions they take for granted, which the public is
+asked to accept without examination. Let&rsquo;s therefore examine them.
+</p>
+<p>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
+<a name="index-Constitution_002c-US"></a>
+US Constitution and
+legal tradition reject this view; copyright is not a natural right,
+but an artificial government-imposed monopoly that limits the users&rsquo;
+natural right to copy.
+</p>
+<p>Another unstated assumption is that the only important thing about
+software is what jobs it allows you to do&mdash;that we computer users
+should not care what kind of society we are allowed to have.
+</p>
+<p>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.
+</p>
+<p>If we decline to accept these assumptions, and judge these issues
+based on ordinary commonsense 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.
+</p>
+<p>There is no room here for an extensive statement of the reasoning
+behind this conclusion, so I refer the reader to the article &ldquo;Why
+Software Should Not Have Owners&rdquo; (p.&nbsp;@refx{Why Free-pg}{).
+</p>
+<a name="A-Stark-Moral-Choice"></a>
+<h3 class="subheading"> A Stark Moral Choice </h3>
+
+<p>With my community gone, to continue as before was impossible.
+Instead, I faced a stark moral choice.
+</p>
+<p>The easy choice was to join the proprietary software world, signing
+<a name="index-nondisclosure-agreements-1"></a>
+nondisclosure agreements and promising not to help my fellow
+<a name="index-hackers-1"></a>
+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.
+</p>
+<p>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.
+</p>
+<a name="index-MIT_002c-AI-_0028Artificial-Intelligence_0029-Lab"></a>
+<p>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.
+</p>
+<p>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.
+</p>
+<a name="index-call-to-action_002c-contribute-to-GNU"></a>
+<p>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?
+</p>
+<a name="index-GNU-_0028see-also-both-software-and-GNU_0029"></a>
+<p>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
+<a name="index-hackers-2"></a>
+hackers&mdash;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.
+</p>
+<a name="index-developers_002c-_0028see-also-programmers_0029"></a>
+<p>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.
+<a name="index-Unix-compatibility_002c-reason-for"></a>
+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
+<a name="index-hackers-3"></a>
+hacker tradition, as
+a recursive acronym for
+<a name="index-GNU_002c-acronym"></a>
+&ldquo;GNU&rsquo;s Not Unix.&rdquo;
+</p>
+<a name="index-GNU_002c-operating-system-parts"></a>
+<p>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.
+<a name="index-ITS-_0028Incompatible-Timesharing-System_0029-2"></a>
+ITS had them,
+<a name="index-Multics"></a>
+Multics had them,
+<a name="index-VMS"></a>
+VMS had them, and Unix had them. The GNU
+operating system would include them too.
+</p>
+<p>Later I heard these words, attributed to
+<a name="index-Hillel-_0028the-Elder_0029"></a>
+Hillel:<a name="DOCF3" href="#FOOT3">(3)</a>
+</p>
+<blockquote class="smallquotation"><p> If I am not for myself, who will be for me?<br>
+ If I am only for myself, what am I?<br>
+ If not now, when?<br>
+</p></blockquote>
+
+<p>The decision to start the GNU Project was based on a similar spirit.
+</p>
+<a name="Free-as-in-Freedom"></a>
+<h3 class="subheading"> Free as in Freedom </h3>
+
+<p>The term &ldquo;free software&rdquo; is sometimes misunderstood&mdash;it
+has nothing to do with price. It is about freedom. Here, therefore,
+is the definition of free software.
+</p>
+<p>A program is free software, for you, a particular user, if:
+</p><ul>
+<li>
+You have the freedom to run the program as you wish, for any purpose.
+
+</li><li>
+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.)
+
+</li><li>
+You have the freedom to redistribute copies, either gratis or for a
+fee.
+
+</li><li>
+<a name="index-copyleft_002c-modified-versions"></a>
+You have the freedom to distribute modified versions of the program,
+so that the community can benefit from your improvements.
+
+</li></ul>
+
+<a name="index-development_002c-fundraising"></a>
+<a name="index-selling_002c-free-software"></a>
+<p>Since &ldquo;free&rdquo; 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.
+</p>
+<a name="index-_0060_0060free-software_002c_0027_0027-unambiguous-translations-of"></a>
+<p>Because of the ambiguity of &ldquo;free,&rdquo; people have long
+looked for alternatives, but no one has found a better term.
+The English language has more words and nuances than any other, but it
+lacks a simple, unambiguous, word that means &ldquo;free,&rdquo; as in
+freedom&mdash;&ldquo;unfettered&rdquo; being the word that comes closest in
+meaning. Such alternatives as &ldquo;liberated,&rdquo;
+&ldquo;freedom,&rdquo; and &ldquo;open&rdquo; have either the wrong
+meaning or some other disadvantage.
+</p>
+<a name="GNU-Software-and-the-GNU-System"></a>
+<h3 class="subheading"> GNU Software and the GNU System </h3>
+
+<a name="index-GNU_002c-GNU-software_002c-as-distinguished-from-the-GNU-system"></a>
+<p>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
+<a name="index-TeX"></a>
+TeX as the principal text formatter; a few years
+later, I decided to use the
+<a name="index-X-Window-System"></a>
+X Window System rather than writing
+another window system for GNU.
+</p>
+<p>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.
+</p>
+<a name="Commencing-the-Project"></a>
+<h3 class="subheading"> Commencing the Project </h3>
+
+<a name="index-MIT_002c-AI-_0028Artificial-Intelligence_0029-Lab-1"></a>
+<a name="index-universities_002c-releasing-free-software-at"></a>
+<p>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.
+</p>
+<p>However, Professor
+<a name="index-Winston_002c-Patrick"></a>
+Winston, then the head of the MIT AI
+Lab, kindly invited me to keep using the lab&rsquo;s facilities.
+</p>
+<a name="The-First-Steps"></a>
+<h3 class="subheading"> The First Steps </h3>
+
+<a name="index-Free-University-Compiler-Kit-_0028VUCK_0029"></a>
+<p>Shortly before beginning the GNU Project, I heard about the Free
+University Compiler Kit, also known as VUCK. (The Dutch word for
+&ldquo;free&rdquo; is written with a <em>v.</em>) This was a compiler designed
+to handle multiple languages, including
+C and
+<a name="index-Pascal"></a>
+Pascal, and to support
+multiple target machines. I wrote to its author asking if GNU could
+use it.
+</p>
+<a name="index-GNU_002c-operating-system-parts-1"></a>
+<p>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 multilanguage, multiplatform compiler.
+</p>
+<a name="index-Pastel_002c-compiler"></a>
+<p>Hoping to avoid the need to write the whole compiler myself, I
+obtained the source code for the Pastel compiler, which was a
+multiplatform compiler developed at
+<a name="index-Lawrence-Livermore-Lab"></a>
+Lawrence Livermore Lab. It
+supported, and was written in, an extended version of Pascal, designed
+to be a system-programming language. I added a
+<a name="index-C"></a>
+C front end, and began
+porting it to the
+<a name="index-Motorola"></a>
+<a name="index-68000_002dclass-hardware-1"></a>
+Motorola 68000 computer. But I had to give that
+up when I discovered that the compiler needed many megabytes of stack
+space, while the available 68000 Unix system would only allow 64k.
+</p>
+<p>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 &ldquo;instructions,&rdquo; 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
+<a name="index-GNU_002c-GCC"></a>
+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
+<a name="index-GNU_002c-GNU-Emacs"></a>
+<a name="index-Emacs_002c-GNU"></a>
+GNU Emacs.
+</p>
+<a name="GNU-Emacs"></a>
+<h3 class="subheading"> GNU Emacs </h3>
+
+<p>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
+<a name="index-vi"></a>
+vi or
+<a name="index-ed"></a>
+ed, I had done my editing on other kinds of machines until then.
+</p>
+<p>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,
+<a name="index-prep_002eai_002emit_002eedu"></a>
+<code>prep.ai.mit.edu</code>, thus became the principal
+<a name="index-GNU_002c-GNU-ftp-distribution-site"></a>
+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?
+</p>
+<a name="index-programmers_002c-income-for"></a>
+
+<p>I could have said, &ldquo;Find a friend who is on the net and who will make
+a copy for you.&rdquo; Or I could have done what I did with the original
+PDP-10 Emacs: tell them, &ldquo;Mail me a tape and a SASE (self-addressed
+stamped envelope), and I will mail it back with Emacs on it.&rdquo; 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.
+</p>
+<a name="Is-a-Program-Free-for-Every-User_003f"></a>
+<h3 class="subheading"> Is a Program Free for Every User? </h3>
+
+<a name="index-copyleft_002c-modified-versions-1"></a>
+<p>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,
+<a name="index-public-domain-software-_0028see-also-software_0029"></a>
+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.
+</p>
+<a name="index-X-Window-System-1"></a>
+<a name="index-MIT_002c-X-Window-System-and"></a>
+<p>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
+<a name="index-nondisclosure-agreements-2"></a>
+nondisclosure agreement. These copies of X
+were no more free software than Unix was.
+</p>
+<a name="index-developers_002c-proprietary-software"></a>
+<a name="index-proprietary-software_002c-paradox-of-permissive-license"></a>
+<p>The developers of the X Window System did not consider this a
+problem&mdash;they expected and intended this to happen. Their goal was
+not freedom, just &ldquo;success,&rdquo; defined as &ldquo;having many
+users.&rdquo; They did not care whether these users had freedom, only
+about having many of them.
+</p>
+<p>This led to a paradoxical situation where two different ways of
+counting the amount of freedom gave different answers to the question,
+&ldquo;Is this program free?&rdquo; 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.
+</p>
+<a name="Copyleft-and-the-GNU-GPL"></a>
+<h3 class="subheading"> Copyleft and the GNU GPL </h3>
+
+<a name="index-GPL_002c-copyleft-and"></a>
+<a name="index-copyleft_002c-GPL-and"></a>
+<p>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 &ldquo;copyleft.&rdquo;<a name="DOCF4" href="#FOOT4">(4)</a>
+</p>
+<p>Copyleft uses copyright law, but flips it over to serve the opposite
+of its usual purpose: instead of a means for restricting a program, it
+becomes a means for keeping the program free.
+</p>
+<p>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&mdash;but not permission to add restrictions of their
+own. Thus, the crucial freedoms that define &ldquo;free
+software&rdquo; are guaranteed to everyone who has a copy; they become
+inalienable rights.
+</p>
+<p>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, &ldquo;You can&rsquo;t share those changes, because
+we are going to use them to make our proprietary version of the
+program.&rdquo;
+<a name="index-copyleft_002c-modified-versions-2"></a>
+</p>
+<p>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 name="index-X-Window-System-2"></a>
+</p>
+<p>A related issue concerns combining a free program with nonfree code.
+Such a combination would inevitably be nonfree; whichever freedoms
+are lacking for the nonfree 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.
+</p>
+<p>The specific implementation of copyleft that we use for most GNU
+software is the
+<a name="index-GPL"></a>
+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.<a name="DOCF5" href="#FOOT5">(5)</a>) for documentation.
+
+<a name="index-copyleft_002c-GPL-and-1"></a>
+<a name="index-GPL_002c-copyleft-and-1"></a>
+</p>
+<a name="The-Free-Software-Foundation"></a>
+<h3 class="subheading"> The Free Software Foundation </h3>
+
+<a name="index-Free-Software-Foundation-_0028FSF_0029-_0028see-also-FSF_0029"></a>
+<a name="index-development_002c-funding-for"></a>
+<p>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 (FSF), 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.
+</p>
+<p>Most of the FSF&rsquo;s income used to come from sales of copies of free
+software and of other related services (CD-ROMs of source code,
+CD-ROMs with binaries, nicely printed manuals, all with the freedom to
+redistribute and modify), and
+<a name="index-Deluxe-Distributions_002c-FSF"></a>
+<a name="index-FSF_002c-Deluxe-Distributions"></a>
+<a name="index-FSF_002c-fundraising"></a>
+Deluxe Distributions (distributions for
+which we built the whole collection of software for the customer&rsquo;s
+choice of platform). Today the FSF
+still sells manuals and other
+gear, but it gets the bulk of its funding from members&rsquo; dues. You
+can join the FSF at <a href="http://fsf.org/join">http://fsf.org/join</a>.
+</p>
+<p>Free Software Foundation employees have written and maintained a
+number of GNU software packages. Two notable ones are the
+<a name="index-C-library"></a>
+<a name="index-libraries-_0028comp_002e_0029_002c-C"></a>
+C library
+and the shell. The
+<a name="index-GNU_002c-GNU-C-Library"></a>
+<a name="index-libraries-_0028comp_002e_0029_002c-GNU-C-Library-_0028see-also-GNU_0029"></a>
+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,
+<a name="index-McGrath_002c-Roland"></a>
+Roland McGrath.
+<a name="index-GNU_002c-GNU-BASH-_0028Bourne-Again-Shell_0029"></a>
+<a name="index-BASH-_0028Bourne-Again-Shell_0029_002c-GNU"></a>
+The
+shell used on most GNU/Linux systems is BASH, the Bourne Again
+Shell,<a name="DOCF6" href="#FOOT6">(6)</a> which was developed by
+FSF employee
+<a name="index-Fox_002c-Brian"></a>
+Brian Fox.
+</p>
+<p>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.
+</p>
+<a name="Free-Software-Support"></a>
+<h3 class="subheading"> Free Software Support </h3>
+
+<p>The free software philosophy rejects a specific widespread business
+practice, but it is not against business. When businesses respect the
+users&rsquo; freedom, we wish them success.
+</p>
+<a name="index-programmers_002c-income-for-1"></a>
+<a name="index-selling_002c-free-software-1"></a>
+<p>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
+<a name="index-GNU_002c-GCC-1"></a>
+GCC, and software development, mostly
+porting GCC to new platforms.
+<a name="index-GNU_002c-GNU-Emacs-1"></a>
+<a name="index-Emacs_002c-GNU-1"></a>
+</p>
+<p>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.
+</p>
+<a name="index-_0060_0060open_002c_0027_0027-misleading-use-of-term"></a>
+<a name="index-traps_002c-_0060_0060open-source_0027_0027"></a>
+<a name="index-citizen-values_002c-convenience-v_002e"></a>
+<p>Watch out, though&mdash;a number of companies that associate themselves
+with the term &ldquo;open source&rdquo; actually base their business
+on nonfree 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 programs
+&ldquo;value-added packages,&rdquo; which shows the values they
+would like us to adopt: convenience above freedom. If we value freedom
+more, we should
+<a name="index-call-to-action_002c-use-correct-terminology-_0028see-also-terminology_0029-1"></a>
+call them &ldquo;freedom-subtracted&rdquo; packages.
+<a name="index-Free-Software-Foundation-_0028FSF_0029-_0028see-also-FSF_0029-1"></a>
+<a name="index-development_002c-funding-for-1"></a>
+</p>
+<a name="Technical-Goals"></a>
+<h3 class="subheading"> Technical Goals </h3>
+
+<p>The principal goal of GNU is 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&rsquo;s freedom.
+</p>
+<p>But it was natural to apply the known standards of good practice to
+the work&mdash;for example, dynamically allocating data structures to avoid
+arbitrary fixed size limits, and handling all the possible 8-bit codes
+wherever that made sense.
+</p>
+<p>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.
+</p>
+<p>These decisions enabled many GNU programs to surpass their Unix
+counterparts in reliability and speed.
+</p>
+<a name="Donated-Computers"></a>
+<h3 class="subheading"> Donated Computers </h3>
+
+<a name="index-development_002c-contributions-and-donations"></a>
+<p>As the GNU Project&rsquo;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.
+</p>
+<p>Unix was (and is) proprietary software, and the GNU Project&rsquo;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.
+</p>
+<p>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&rsquo;s
+operating system with a free one, we replaced the machine instead.
+</p>
+<a name="The-GNU-Task-List"></a>
+<h3 class="subheading"> The GNU Task List </h3>
+
+<a name="index-GNU_002c-GNU-Task-List"></a>
+<p>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
+<a name="index-developers_002c-GNU-Project"></a>
+developers
+to write the missing pieces. This list became known as the GNU Task
+List. In addition to missing Unix components, we listed various
+other useful software and documentation projects that, we thought, a
+truly complete system ought to have.
+</p>
+<p>Today,<a name="DOCF7" href="#FOOT7">(7)</a> hardly any Unix components are left in the GNU Task List&mdash;those
+jobs had been done, aside from a few inessential ones. But the list
+is full of projects that some might call &ldquo;applications.&rdquo;
+Any program that appeals to more than a narrow class of users would be
+a useful thing to add to an operating system.
+</p>
+<a name="index-games_002c-Unix-compatibility-and"></a>
+<p>Even games are included in the task list&mdash;and have been since the
+beginning.
+<a name="index-Unix-compatibility_002c-games-and"></a>
+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.
+</p>
+<a name="The-GNU-Library-GPL"></a>
+<h3 class="subheading"> The GNU Library GPL </h3>
+
+<a name="index-LGPL_002c-GNU-C-library-and"></a>
+<a name="index-developers_002c-collaboration-between"></a>
+<p>The GNU C library uses a special kind of copyleft called the GNU
+Library General Public License,<a name="DOCF8" href="#FOOT8">(8)</a> which gives permission to link
+proprietary software with the library. Why make this exception?
+</p>
+<p>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
+<a name="index-C-library-1"></a>
+<a name="index-libraries-_0028comp_002e_0029_002c-C-1"></a>
+C library, or for any library, is a matter of
+strategy.
+</p>
+<a name="index-C-library-2"></a>
+<a name="index-libraries-_0028comp_002e_0029_002c-C-2"></a>
+<p>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&mdash;it would only have discouraged use of our library.
+</p>
+<a name="index-GNU_002c-GNU-C-Library-1"></a>
+<a name="index-libraries-_0028comp_002e_0029_002c-GNU-C-Library-_0028see-also-GNU_0029-1"></a>
+<p>One system is an exception to this: on the GNU system (and this
+includes GNU/Linux), the GNU C library is the only
+<a name="index-C-library-3"></a>
+<a name="index-libraries-_0028comp_002e_0029_002c-C-3"></a>
+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.
+</p>
+<p>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.
+</p>
+<a name="index-GNU_002c-GNU-Readline"></a>
+<a name="index-Readline_002c-GNU-_0028see-also-libraries-_0028comp_002e_0029_002c-GNU_0029"></a>
+<a name="index-libraries-_0028comp_002e_0029_002c-GNU"></a>
+<a name="index-BASH-_0028Bourne-Again-Shell_0029_002c-GNU-1"></a>
+<a name="index-GNU_002c-GNU-BASH-_0028Bourne-Again-Shell_0029-1"></a>
+<p>Consider GNU Readline, a library that was developed to provide
+command-line editing for BASH. Readline is
+released under the ordinary
+<a name="index-GPL-1"></a>
+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.
+</p>
+<p>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.
+<a name="index-developers_002c-collaboration-between-1"></a>
+<a name="index-LGPL_002c-GNU-C-library-and-1"></a>
+</p>
+<a name="Scratching-an-Itch_003f"></a>
+<h3 class="subheading"> Scratching an Itch? </h3>
+
+<a name="index-developers_002c-incentive-for"></a>
+<a name="index-Raymond_002c-Eric"></a>
+<p>Eric Raymond<a name="DOCF9" href="#FOOT9">(9)</a>).
+ says that &ldquo;Every good work of software
+starts by scratching a developer&rsquo;s personal itch.&rdquo;<a name="DOCF10" href="#FOOT10">(10)</a> Maybe that happens sometimes, but many
+essential pieces of
+<a name="index-GNU_002c-GNU-software-_0028see-also-software_0029"></a>
+GNU software were developed in order to have a
+complete free operating system. They come from a vision and a plan,
+not from impulse.
+</p>
+<a name="index-GNU_002c-GNU-C-Library-2"></a>
+<p>For example, we developed the GNU C library because a Unix-like system
+needs a
+<a name="index-C-library-4"></a>
+<a name="index-libraries-_0028comp_002e_0029_002c-C-4"></a>
+C library, BASH
+because a Unix-like system needs a shell, and
+<a name="index-GNU_002c-GNU-tar"></a>
+GNU tar because a
+Unix-like system needs a tar program. The same is true for my own
+programs&mdash;the
+<a name="index-GNU_002c-GNU-C-compiler-_0028see-also-GNU_002c-GCC_0029"></a>
+GNU C compiler,
+<a name="index-GNU_002c-GNU-Emacs-2"></a>
+<a name="index-Emacs_002c-GNU-2"></a>
+GNU Emacs,
+<a name="index-GNU_002c-GDB"></a>
+GDB and
+<a name="index-GNU_002c-GNU-Make"></a>
+GNU Make.
+<a name="index-GNU_002c-GNU-C-Library-3"></a>
+</p>
+<a name="index-BASH-_0028Bourne-Again-Shell_0029_002c-GNU-2"></a>
+<a name="index-GNU_002c-GNU-BASH-_0028Bourne-Again-Shell_0029-2"></a>
+
+<a name="index-GNU_002c-programs-developed-to-cope-with-specific-threats"></a>
+<p>Some GNU programs were developed to cope with specific threats to our
+freedom. Thus, we developed
+<a name="index-gzip"></a>
+gzip to replace the
+<a name="index-Compress-program"></a>
+Compress program,
+which had been lost to the community because of
+the
+<a name="index-LZW-_0028Lempel_002dZiv_002dWelch_0029-data-compression-algorithm-_0028see-also-patents_0029"></a>
+LZW patents. We found
+people to develop
+<a name="index-LessTif-_0028see-also-Motif_0029"></a>
+LessTif, and more recently started
+<a name="index-GNOME-_0028GNU-Network-Object-Model-Environment_0029"></a>
+<a name="index-GNU_002c-GNOME-_0028GNU-Network-Object-Model-Environment_0029"></a>
+GNOME and
+<a name="index-GNU_002c-Harmony"></a>
+<a name="index-Harmony"></a>
+Harmony, to address the problems caused by certain proprietary
+libraries (see below). We are developing the
+<a name="index-GNU_002c-GNU-Privacy-Guard-_0028GPG_0029"></a>
+<a name="index-GPG-_0028GNU-Privacy-Guard_0029"></a>
+<a name="index-Privacy-Guard-_0028GPG_0029_002c-GNU"></a>
+GNU Privacy Guard to
+replace popular nonfree encryption software, because users should not
+have to choose between privacy and freedom.
+</p>
+<p>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.
+</p>
+<a name="Unexpected-Developments"></a>
+<h3 class="subheading"> Unexpected Developments </h3>
+
+<p>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.
+</p>
+<a name="index-Unix-compatibility_002c-GNU-Project-development-and"></a>
+<p>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&mdash;to the various
+incompatible versions of Unix, and sometimes to other systems as well.
+</p>
+<p>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
+<a name="index-developers_002c-GNU-Project-1"></a>
+GNU developers&rsquo; 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.
+<a name="index-Unix-compatibility_002c-GNU-Project-development-and-1"></a>
+</p>
+<a name="The-GNU-Hurd"></a>
+<h3 class="subheading"> The GNU Hurd </h3>
+
+<a name="index-Hurd_002c-GNU"></a>
+<a name="index-kernel_002c-GNU-Hurd"></a>
+<a name="index-GNU_002c-GNU-Hurd"></a>
+<a name="index-Mach-microkernel"></a>
+<p>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
+<a name="index-Carnegie-Mellon-University"></a>
+Carnegie Mellon University and then at the
+<a name="index-University-of-Utah"></a>
+University of Utah; the GNU Hurd is a collection of servers (i.e., a
+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.
+</p>
+<a name="index-GNU_002c-operating-system-parts-2"></a>
+<p>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
+<a name="index-GNU_002c-GDB-1"></a>
+GDB. But it took a long time to make that possible,
+and the multithreaded 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.
+</p>
+<a name="Alix"></a>
+<h3 class="subheading"> Alix </h3>
+
+<a name="index-Hurd_002c-original-name-of"></a>
+<a name="index-Alix"></a>
+<p>The GNU kernel was not originally supposed to be called the Hurd. Its
+original name was Alix&mdash;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, &ldquo;Someone should name a kernel after
+me.&rdquo; I said nothing, but decided to surprise her with a kernel
+named Alix.
+</p>
+<p>It did not stay that way.
+<a name="index-Bushnell_002c-Michael-_0028now-Thomas_0029"></a>
+Michael (now Thomas) Bushnell, the main
+<a name="index-developers_002c-_0028see-also-programmers_0029-1"></a>
+developer of the kernel, preferred the name Hurd, and redefined Alix
+to refer to a certain part of the kernel&mdash;the part that would trap
+system calls and handle them by sending messages to Hurd servers.
+</p>
+<p>Later, Alix and I broke up, and she changed her name;
+independently, the Hurd design was changed so that the
+<a name="index-C-library-5"></a>
+<a name="index-libraries-_0028comp_002e_0029_002c-C-5"></a>
+C library would
+send messages directly to servers, and this made the Alix component
+disappear from the design.
+</p>
+<p>But before these things happened, a friend of hers came across the
+name Alix in the Hurd source code, and mentioned it to her. So
+she did have the chance to find a kernel named after her.
+</p>
+<a name="Linux-and-GNU_002fLinux"></a>
+<h3 class="subheading"> Linux and GNU/Linux </h3>
+
+<p>The GNU Hurd is not suitable for production use, and we don&rsquo;t know
+if it ever will be. The capability-based design has problems that
+result directly from the flexibility of the design, and it is not
+clear solutions exist.
+</p>
+<p>Fortunately, another kernel is available.
+<a name="index-Unix-compatibility_002c-Linux-kernel-and"></a>
+In 1991,
+<a name="index-Torvalds_002c-Linus"></a>
+Linus Torvalds developed a
+<a name="index-Linux-kernel"></a>
+<a name="index-kernel_002c-Linux"></a>
+Unix-compatible kernel and called it Linux. In 1992, he made Linux
+free software; combining Linux with the not-quite-complete
+<a name="index-GNU-_0028see-also-both-software-and-GNU_0029-1"></a>
+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.
+</p>
+<p>We call this system version GNU/Linux, to express its composition as a
+combination of the GNU system with Linux as the kernel.
+<a name="index-GNU_002c-GNU-Hurd-1"></a>
+</p>
+<a name="Challenges-in-Our-Future"></a>
+<h3 class="subheading"> Challenges in Our Future </h3>
+
+<a name="index-call-to-action_002c-future-challenges"></a>
+<a name="index-citizen-values_002c-future-challenges-to"></a>
+<p>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.
+</p>
+<p>The following four sections discuss these challenges.
+</p>
+<a name="Secret-Hardware"></a>
+<h3 class="subheading"> Secret Hardware </h3>
+
+<p>Hardware manufacturers increasingly tend to keep hardware
+specifications secret. This makes it difficult to write free drivers
+so that Linux and
+<a name="index-XFree86"></a>
+XFree86 can support new hardware. We have complete
+free systems today, but we will not have them tomorrow if we cannot
+support tomorrow&rsquo;s computers.
+</p>
+<p>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.
+</p>
+<p>Reverse engineering is a big job; will we have programmers with
+sufficient determination to undertake it? Yes&mdash;if we have built up a
+strong feeling that free software is a matter of principle, and
+nonfree 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.
+</p>
+<p>[2008 note: this issue extends to the BIOS as well.
+There is a free BIOS, coreboot; the problem is getting specs
+for machines so that coreboot can support them.]
+</p>
+<a name="Nonfree-Libraries"></a>
+<h3 class="subheading"> Nonfree Libraries </h3>
+
+<a name="index-traps_002c-nonfree-libraries"></a>
+<a name="index-developers_002c-traps-for"></a>
+<p>A nonfree library that runs on free operating systems acts as a trap
+for free software developers. The library&rsquo;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&rsquo;t <em>run</em> 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.
+</p>
+<a name="index-Motif-_0028see-also-LessTif_0029"></a>
+<p>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
+<a name="index-X-Toolkit"></a>
+X Toolkit widgets as well as Motif, and
+by asking for someone to write a free replacement for Motif. The job
+took many years;
+<a name="index-LessTif-_0028see-also-Motif_0029-1"></a>
+LessTif, developed by the
+<a name="index-Hungry-Programmers"></a>
+Hungry Programmers, became
+powerful enough to support most Motif applications only in 1997.
+</p>
+<a name="index-Qt"></a>
+<a name="index-KDE"></a>
+<p>Between 1996 and 1998, another nonfree GUI toolkit library, called
+Qt, was used in a substantial collection of free software, the desktop
+KDE.
+</p>
+<p>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&mdash;producing a system with more capabilities, but less freedom.
+The KDE group was actively encouraging more
+programmers to use Qt, and millions of new &ldquo;Linux users&rdquo;
+had never been exposed to the idea that there was a problem in this.
+The situation appeared grim.
+</p>
+<a name="index-GNU_002c-GNOME-_0028GNU-Network-Object-Model-Environment_0029-1"></a>
+<a name="index-GNOME-_0028GNU-Network-Object-Model-Environment_0029-1"></a>
+<a name="index-GNU_002c-Harmony-1"></a>
+<a name="index-Harmony-1"></a>
+<p>The free software community responded to the problem in two ways:
+GNOME and Harmony.
+</p>
+<a name="index-de-Icaza_002c-Miguel"></a>
+<a name="index-Red-Hat-Software"></a>
+<a name="index-C_002b_002b_002c-language"></a>
+<p>GNOME, the GNU Network Object Model Environment, is
+GNU&rsquo;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 nonfree software.
+</p>
+<p>Harmony is a compatible replacement library, designed to make it
+possible to run KDE software without using Qt.
+</p>
+<p>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&rsquo;s firm response to the problem that Qt posed when it was
+nonfree. (The new license is inconvenient and inequitable, so it
+remains desirable to avoid using Qt.)
+</p>
+<p>[Subsequent note: in September 2000, Qt was rereleased under the
+GNU GPL, which essentially solved this problem.]
+</p>
+<a name="index-citizen-values_002c-convenience-v_002e-1"></a>
+<p>How will we respond to the next tempting nonfree 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.
+</p>
+<a name="Software-Patents"></a>
+<h3 class="subheading"> Software Patents </h3>
+
+<a name="index-LZW-_0028Lempel_002dZiv_002dWelch_0029-data-compression-algorithm-_0028see-also-patents_0029-1"></a>
+<a name="index-patents"></a>
+<a name="index-patents_002c-LZW-data-compression-algorithm"></a>
+<p>The worst threat we face comes from software patents, which can put
+algorithms and features off limits to free software for up to 20
+years. The LZW compression algorithm patents were
+applied for in 1983, and we still cannot release free software to
+produce proper compressed
+<a name="index-GIF"></a>
+GIFs. [As of 2009 they have expired.] In 1998, a free program to produce
+<a name="index-MP3"></a>
+MP3 compressed audio was
+removed from distribution under threat of a patent suit.
+</p>
+<p>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?
+</p>
+<p>Those of us who value free software for freedom&rsquo;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 &ldquo;bazaar&rdquo; model of
+development, and the reliability and power of some free software,
+we must not stop there. We must talk about freedom and principle.
+</p>
+<a name="Free-Documentation"></a>
+<h3 class="subheading"> Free Documentation </h3>
+
+<a name="index-documentation-_0028see-also-both-FDL-and-manuals_0029"></a>
+<a name="index-manuals_002c-need-for"></a>
+<p>The biggest deficiency in our free operating systems is not in the
+software&mdash;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.
+</p>
+<p>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, online
+and on paper, so that the manual can accompany every copy of the
+program.
+</p>
+<p>Permission for modification is crucial too. As a general rule, I
+don&rsquo;t believe that it is essential for people to have permission to
+modify all sorts of articles and books. For example, I don&rsquo;t think
+you or I are obliged to give permission to modify articles like this
+one, which describe our actions and our views.
+</p>
+<p>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&mdash;so they can
+provide accurate and usable documentation with the modified program.
+A nonfree manual, which does not allow programmers to be conscientious
+and finish the job, does not fill our community&rsquo;s needs.
+</p>
+<p>Some kinds of limits on how modifications are done pose no problem.
+For example, requirements to preserve the original author&rsquo;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&rsquo;t stop the conscientious programmer from adapting the manual to
+fit the modified program. In other words, they don&rsquo;t block the free
+software community from making full use of the manual.
+</p>
+<p>However, it must be possible to modify all the <em>technical</em> 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.
+</p>
+<a name="index-developers_002c-manuals"></a>
+<p>Will free software developers have the awareness and determination to
+produce a full spectrum of free manuals? Once again, our future
+depends on philosophy.
+</p>
+<a name="index-documentation-_0028see-also-both-FDL-and-manuals_0029-1"></a>
+<a name="index-manuals_002c-need-for-1"></a>
+<a name="index-citizen-values_002c-future-challenges-to-1"></a>
+
+<a name="We-Must-Talk-about-Freedom"></a>
+<h3 class="subheading"> We Must Talk about Freedom </h3>
+
+<a name="index-call-to-action_002c-talk-about-freedom"></a>
+<p>Estimates today are that there are ten million users of GNU/Linux
+systems such as
+<a name="index-Debian-GNU_002fLinux"></a>
+Debian GNU/Linux and
+<a name="index-Red-Hat-Linux-_0028see-also-_0060_0060Linux_002c_0027_0027-erroneous-use-of-term_0029"></a>
+Red Hat &ldquo;Linux.&rdquo;
+Free software has developed such practical advantages that users are
+flocking to it for purely practical reasons.
+</p>
+<a name="index-commercial-use-and-development-1"></a>
+<p>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.
+</p>
+<p>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.
+</p>
+<p>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.
+</p>
+<a name="g_t_0060_0060Open-Source_0027_0027"></a>
+<h3 class="subheading"> &ldquo;Open Source&rdquo; </h3>
+
+<a name="index-_0060_0060open-source_002c_0027_0027-values-of"></a>
+<p>Teaching new users about freedom became more difficult in 1998, when a
+part of the community decided to stop using the term &ldquo;free
+software&rdquo; and say &ldquo;open source software&rdquo;
+instead.
+</p>
+<p>Some who favored this term aimed to avoid the confusion of
+&ldquo;free&rdquo; with &ldquo;gratis&rdquo;&mdash;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 &ldquo;open source&rdquo; focuses on the potential to
+make high-quality, powerful software, but shuns the ideas of freedom,
+community, and principle.
+</p>
+<a name="index-_0060_0060Linux_002c_0027_0027-erroneous-use-of-term-_0028see-also-open-source_0029"></a>
+<p>The &ldquo;Linux&rdquo; magazines are a clear example of this&mdash;they
+are filled with advertisements for proprietary software that works
+with GNU/Linux. When the next
+<a name="index-Motif-_0028see-also-LessTif_0029-1"></a>
+Motif or
+<a name="index-Qt-1"></a>
+Qt appears, will these
+magazines warn programmers to stay away from it, or will they run ads
+for it?
+</p>
+<p>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.
+</p>
+<a name="index-citizen-values_002c-open-source-v_002e-free-software"></a>
+<a name="index-open-source_002c-essential-difference-between-free-software-and"></a>
+<a name="index-free-software_002c-essential-difference-between-open-source-and"></a>
+<p>&ldquo;Free software&rdquo; and &ldquo;open source&rdquo; 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 &ldquo;free software,&rdquo; to express the idea that
+freedom, not just technology, is important.
+<a name="index-_0060_0060open-source_002c_0027_0027-values-of-1"></a>
+</p>
+<a name="Try_0021"></a>
+<h3 class="subheading"> Try! </h3>
+
+<a name="index-Yoda"></a>
+<p>Yoda&rsquo;s aphorism (&ldquo;There is no &lsquo;try&rsquo;&rdquo;) sounds
+neat, but it doesn&rsquo;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.
+</p>
+<p>Sometimes I failed; some of my cities have fallen. Then I found
+another threatened city, and got ready for another battle. Over time,
+I&rsquo;ve learned to look for threats and put myself between them and my
+city, calling on other
+<a name="index-hackers-4"></a>
+hackers to come and join me.
+</p>
+<p>Nowadays, often I&rsquo;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&mdash;for now. But the dangers are greater each
+year, and now Microsoft has explicitly targeted our community. We
+can&rsquo;t take the future of freedom for granted. Don&rsquo;t take it for
+granted! If you want to keep your freedom, you must be prepared to
+defend it.
+<a name="index-call-to-action_002c-future-challenges-1"></a>
+<a name="index-GNU_002c-GNU-Project-1"></a>
+<a name="index-GNU-Project-_0028see-also-GNU_0029-1"></a>
+</p><div class="footnote">
+<hr>
+<h3>Footnotes</h3>
+<h3><a name="FOOT2" href="#DOCF2">(2)</a></h3>
+<p>The use of
+<a name="index-_0060_0060hacker_002c_0027_0027-actual-meaning-of-term-_0028see-also-_0060_0060cracker_0027_0027_0029"></a>
+&ldquo;hacker&rdquo; to mean &ldquo;security breaker&rdquo; 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, someone
+who enjoys playful cleverness, or the combination of the two. See my
+article, &ldquo;On Hacking,&rdquo; at
+<a href="http://stallman.org/articles/on-hacking.html">http://stallman.org/articles/on-hacking.html</a>.
+</p><h3><a name="FOOT3" href="#DOCF3">(3)</a></h3>
+<p>As an
+Atheist, I don&rsquo;t follow any religious leaders, but I sometimes find I
+admire something one of them has said.
+</p><h3><a name="FOOT4" href="#DOCF4">(4)</a></h3>
+<p>In 1984 or 1985,
+<a name="index-Hopkins_002c-Don"></a>
+Don Hopkins (a very
+imaginative fellow) mailed me a letter. On the envelope he had written
+several amusing sayings, including this one: &ldquo;Copyleft&mdash;all rights
+reversed.&rdquo; I used the word &ldquo;copyleft&rdquo; to name the distribution
+concept I was developing at the time.
+</p><h3><a name="FOOT5" href="#DOCF5">(5)</a></h3>
+<p>We now use the
+<a name="index-FDL-_0028see-also-both-manuals-and-documentation_0029"></a>
+GNU Free
+Documentation License (p.&nbsp;@refx{FDL-pg}{
+</p><h3><a name="FOOT6" href="#DOCF6">(6)</a></h3>
+<p>&ldquo;Bourne Again Shell&rdquo; is a play on the name &ldquo;Bourne
+Shell,&rdquo; which was the usual shell on Unix.
+</p><h3><a name="FOOT7" href="#DOCF7">(7)</a></h3>
+<p>That was written in 1998. In 2009 we no longer maintain a long
+task list. The community develops free software so fast that we can&rsquo;t
+even keep track of it all. Instead, we have a list of High Priority
+Projects, a much shorter list of projects we really want to encourage
+people to write.
+</p><h3><a name="FOOT8" href="#DOCF8">(8)</a></h3>
+<p>This license is now called
+the GNU Lesser General Public License, to avoid giving the idea that
+all libraries ought to use it.
+</p><h3><a name="FOOT9" href="#DOCF9">(9)</a></h3>
+<p>Eric Raymond is a prominent open source advocate; see &ldquo;Why Open
+Source Misses the Point&rdquo; (p.&nbsp;@refx{OS Misses Point-pg}{
+</p><h3><a name="FOOT10" href="#DOCF10">(10)</a></h3>
+<p>Eric&nbsp;S.&nbsp;Raymond, <cite>The Cathedral and the Bazaar: Musings on Linux and
+Open Source by an Accidental Revolutionary,</cite> rev. ed. (Sebastopol,
+Calif.: O&rsquo;Reilly, 2001), p. 23.
+</p></div>
+<hr size="2">
+</body>
+</html>