summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/scrap1_2.html
diff options
context:
space:
mode:
Diffstat (limited to 'talermerchantdemos/blog/articles/scrap1_2.html')
-rw-r--r--talermerchantdemos/blog/articles/scrap1_2.html1857
1 files changed, 0 insertions, 1857 deletions
diff --git a/talermerchantdemos/blog/articles/scrap1_2.html b/talermerchantdemos/blog/articles/scrap1_2.html
deleted file mode 100644
index 379807f..0000000
--- a/talermerchantdemos/blog/articles/scrap1_2.html
+++ /dev/null
@@ -1,1857 +0,0 @@
-<!-- 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.
- -->
-
-
- <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’s staff
- <a name="index-hackers">
- </a>
- hackers
- <a href="#FOOT2" name="DOCF2">
- (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 “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.
- </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’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, “If you
-share with your neighbor, you are a pirate. If you want any changes,
-beg us to make them.”
- </p>
- <a name="index-citizen-values_002c-proprietary-software-and">
- </a>
- <p>
- 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 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 “enforcing” their
-“rights” or “stopping piracy,” 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’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’
-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—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 “Why
-Software Should Not Have Owners” (p. @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—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>
- “GNU’s Not Unix.”
- </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 href="#FOOT3" name="DOCF3">
- (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/>
- </br>
- </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 “free software” is sometimes misunderstood—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 “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.
- </p>
- <a name="index-_0060_0060free-software_002c_0027_0027-unambiguous-translations-of">
- </a>
- <p>
- Because of the ambiguity of “free,” 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 “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.
- </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’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
-“free” 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 “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
- <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, “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 (self-addressed
-stamped envelope), 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.
- </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—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
-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,
-“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.
- </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 “copyleft.”
- <a href="#FOOT4" name="DOCF4">
- (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—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.
- </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, “You can’t share those changes, because
-we are going to use them to make our proprietary version of the
-program.”
- <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 href="#FOOT5" name="DOCF5">
- (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’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’s
-choice of platform). Today the FSF
-still sells manuals and other
-gear, but it gets the bulk of its funding from members’ 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 href="#FOOT6" name="DOCF6">
- (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’ 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—a number of companies that associate themselves
-with the term “open source” 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
-“value-added packages,” 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 “freedom-subtracted” 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’s freedom.
- </p>
- <p>
- 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.
- </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’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’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’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 href="#FOOT7" name="DOCF7">
- (7)
- </a>
- hardly any Unix components are left in the GNU Task List—those
-jobs had 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.
- </p>
- <a name="index-games_002c-Unix-compatibility-and">
- </a>
- <p>
- Even games are included in the task list—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 href="#FOOT8" name="DOCF8">
- (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—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 href="#FOOT9" name="DOCF9">
- (9)
- </a>
- ).
- says that “Every good work of software
-starts by scratching a developer’s personal itch.”
- <a href="#FOOT10" name="DOCF10">
- (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—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—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’ 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—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.
- </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—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’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’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—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’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
- <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—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.
- </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’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’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’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 “bazaar” 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—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’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.
- </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—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’s needs.
- </p>
- <p>
- 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.
- </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 “Linux.”
-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">
- “Open Source”
- </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 “free
-software” and say “open source software”
-instead.
- </p>
- <p>
- 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.
- </p>
- <a name="index-_0060_0060Linux_002c_0027_0027-erroneous-use-of-term-_0028see-also-open-source_0029">
- </a>
- <p>
- 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
- <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>
- “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.
- <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’s aphorism (“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.
- </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’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’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.
- <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 href="#DOCF2" name="FOOT2">
- (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>
- “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, someone
-who enjoys playful cleverness, or the combination of the two. See my
-article, “On Hacking,” at
- <a href="http://stallman.org/articles/on-hacking.html">
- http://stallman.org/articles/on-hacking.html
- </a>
- .
- </p>
- <h3>
- <a href="#DOCF3" name="FOOT3">
- (3)
- </a>
- </h3>
- <p>
- As an
-Atheist, I don’t follow any religious leaders, but I sometimes find I
-admire something one of them has said.
- </p>
- <h3>
- <a href="#DOCF4" name="FOOT4">
- (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: “Copyleft—all rights
-reversed.” I used the word “copyleft” to name the distribution
-concept I was developing at the time.
- </p>
- <h3>
- <a href="#DOCF5" name="FOOT5">
- (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. @refx{FDL-pg}{
- </p>
- <h3>
- <a href="#DOCF6" name="FOOT6">
- (6)
- </a>
- </h3>
- <p>
- “Bourne Again Shell” is a play on the name “Bourne
-Shell,” which was the usual shell on Unix.
- </p>
- <h3>
- <a href="#DOCF7" name="FOOT7">
- (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’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 href="#DOCF8" name="FOOT8">
- (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 href="#DOCF9" name="FOOT9">
- (9)
- </a>
- </h3>
- <p>
- Eric Raymond is a prominent open source advocate; see “Why Open
-Source Misses the Point” (p. @refx{OS Misses Point-pg}{
- </p>
- <h3>
- <a href="#DOCF10" name="FOOT10">
- (10)
- </a>
- </h3>
- <p>
- Eric S. Raymond,
- <cite>
- The Cathedral and the Bazaar: Musings on Linux and
-Open Source by an Accidental Revolutionary,
- </cite>
- rev. ed. (Sebastopol,
-Calif.: O’Reilly, 2001), p. 23.
- </p>
- </hr>
- </div>
- <hr size="2"/>
-