(XSETMARKBIT): Remove unused macro.
[emacs.git] / etc / THE-GNU-PROJECT
blob1df8c8bdac07c5215686c89b5c38abd37ef71ea1
1   The GNU Project
3    by Richard Stallman
5    originally published in the book "Open Sources"
7   The first software-sharing community
9    When I started working at the MIT Artificial Intelligence Lab in 1971,
10    I became part of a software-sharing community that had existed for
11    many years.  Sharing of software was not limited to our particular
12    community; it is as old as computers, just as sharing of recipes is as
13    old as cooking.  But we did it more than most.
15    The AI Lab used a timesharing operating system called ITS (the
16    Incompatible Timesharing System) that the lab's staff hackers (1) had
17    designed and written in assembler language for the Digital PDP-10, one
18    of the large computers of the era.  As a member of this community, an
19    AI lab staff system hacker, my job was to improve this system.
21    We did not call our software "free software", because that term did
22    not yet exist; but that is what it was.  Whenever people from another
23    university or a company wanted to port and use a program, we gladly
24    let them.  If you saw someone using an unfamiliar and interesting
25    program, you could always ask to see the source code, so that you
26    could read it, change it, or cannibalize parts of it to make a new
27    program.
29    (1) The use of "hacker" to mean "security breaker" is a confusion on
30    the part of the mass media.  We hackers refuse to recognize that
31    meaning, and continue using the word to mean, "Someone who loves to
32    program and enjoys being clever about it."
34   The collapse of the community
36    The situation changed drastically in the early 1980s when Digital
37    discontinued the PDP-10 series.  Its architecture, elegant and powerful
38    in the 60s, could not extend naturally to the larger address spaces
39    that were becoming feasible in the 80s.  This meant that nearly all of
40    the programs composing ITS were obsolete.
42    The AI lab hacker community had already collapsed, not long before.  In
43    1981, the spin-off company Symbolics had hired away nearly all of the
44    hackers from the AI lab, and the depopulated community was unable to
45    maintain itself.  (The book Hackers, by Steve Levy, describes these
46    events, as well as giving a clear picture of this community in its
47    prime.)  When the AI lab bought a new PDP-10 in 1982, its
48    administrators decided to use Digital's non-free timesharing system
49    instead of ITS.
51    The modern computers of the era, such as the VAX or the 68020, had
52    their own operating systems, but none of them were free software: you
53    had to sign a nondisclosure agreement even to get an executable copy.
55    This meant that the first step in using a computer was to promise not
56    to help your neighbor.  A cooperating community was forbidden.  The rule
57    made by the owners of proprietary software was, "If you share with
58    your neighbor, you are a pirate.  If you want any changes, beg us to
59    make them."
61    The idea that the proprietary software social system--the system that
62    says you are not allowed to share or change software--is antisocial,
63    that it is unethical, that it is simply wrong, may come as a surprise
64    to some readers.  But what else could we say about a system based on
65    dividing the public and keeping users helpless? Readers who find the
66    idea surprising may have taken proprietary social system as given, or
67    judged it on the terms suggested by proprietary software businesses.
68    Software publishers have worked long and hard to convince people that
69    there is only one way to look at the issue.
71    When software publishers talk about "enforcing" their "rights" or
72    "stopping piracy", what they actually *say* is secondary.  The real
73    message of these statements is in the unstated assumptions they take
74    for granted; the public is supposed to accept them uncritically.  So
75    let's examine them.
77    One assumption is that software companies have an unquestionable
78    natural right to own software and thus have power over all its users.
79    (If this were a natural right, then no matter how much harm it does to
80    the public, we could not object.)  Interestingly, the US Constitution
81    and legal tradition reject this view; copyright is not a natural
82    right, but an artificial government-imposed monopoly that limits the
83    users' natural right to copy.
85    Another unstated assumption is that the only important thing about
86    software is what jobs it allows you to do--that we computer users
87    should not care what kind of society we are allowed to have.
89    A third assumption is that we would have no usable software (or, would
90    never have a program to do this or that particular job) if we did not
91    offer a company power over the users of the program.  This assumption
92    may have seemed plausible, before the free software movement
93    demonstrated that we can make plenty of useful software without
94    putting chains on it.
96    If we decline to accept these assumptions, and judge these issues
97    based on ordinary common-sense morality while placing the users first,
98    we arrive at very different conclusions.  Computer users should be free
99    to modify programs to fit their needs, and free to share software,
100    because helping other people is the basis of society.
102    There is no room here for an extensive statement of the reasoning
103    behind this conclusion, so I refer the reader to the web page,
104    <http://www.gnu.org/philosophy/why-free.html>.
106   A stark moral choice.
108    With my community gone, to continue as before was impossible.  Instead,
109    I faced a stark moral choice.
111    The easy choice was to join the proprietary software world, signing
112    nondisclosure agreements and promising not to help my fellow hacker.
113    Most likely I would also be developing software that was released
114    under nondisclosure agreements, thus adding to the pressure on other
115    people to betray their fellows too.
117    I could have made money this way, and perhaps amused myself writing
118    code.  But I knew that at the end of my career, I would look back on
119    years of building walls to divide people, and feel I had spent my life
120    making the world a worse place.
122    I had already experienced being on the receiving end of a
123    nondisclosure agreement, when someone refused to give me and the MIT
124    AI lab the source code for the control program for our printer.  (The
125    lack of certain features in this program made use of the printer
126    extremely frustrating.)  So I could not tell myself that nondisclosure
127    agreements were innocent.  I was very angry when he refused to share
128    with us; I could not turn around and do the same thing to everyone
129    else.
131    Another choice, straightforward but unpleasant, was to leave the
132    computer field.  That way my skills would not be misused, but they
133    would still be wasted.  I would not be culpable for dividing and
134    restricting computer users, but it would happen nonetheless.
136    So I looked for a way that a programmer could do something for the
137    good.  I asked myself, was there a program or programs that I could
138    write, so as to make a community possible once again?
140    The answer was clear: what was needed first was an operating system.
141    That is the crucial software for starting to use a computer.  With an
142    operating system, you can do many things; without one, you cannot run
143    the computer at all.  With a free operating system, we could again have
144    a community of cooperating hackers--and invite anyone to join.  And
145    anyone would be able to use a computer without starting out by
146    conspiring to deprive his or her friends.
148    As an operating system developer, I had the right skills for this job.
149    So even though I could not take success for granted, I realized that I
150    was elected to do the job.  I chose to make the system compatible with
151    Unix so that it would be portable, and so that Unix users could easily
152    switch to it.  The name GNU was chosen following a hacker tradition, as
153    a recursive acronym for "GNU's Not Unix."
155    An operating system does not mean just a kernel, barely enough to run
156    other programs.  In the 1970s, every operating system worthy of the
157    name included command processors, assemblers, compilers, interpreters,
158    debuggers, text editors, mailers, and much more.  ITS had them, Multics
159    had them, VMS had them, and Unix had them.  The GNU operating system
160    would include them too.
162    Later I heard these words, attributed to Hillel (1):
164    If I am not for myself, who will be for me?
165    If I am only for myself, what am I?
166    If not now, when?
168    The decision to start the GNU project was based on a similar spirit.
170    (1) As an Atheist, I don't follow any religious leaders, but I
171    sometimes find I admire something one of them has said.
173   Free as in freedom
175    The term "free software" is sometimes misunderstood--it has nothing to
176    do with price.  It is about freedom.  Here, therefore, is the definition
177    of free software: a program is free software, for you, a particular
178    user, if:
180      * You have the freedom to run the program, for any purpose.
181      * You have the freedom to modify the program to suit your needs.  (To
182        make this freedom effective in practice, you must have access to
183        the source code, since making changes in a program without having
184        the source code is exceedingly difficult.)
185      * You have the freedom to redistribute copies, either gratis or for
186        a fee.
187      * You have the freedom to distribute modified versions of the
188        program, so that the community can benefit from your improvements.
190    Since "free" refers to freedom, not to price, there is no
191    contradiction between selling copies and free software.  In fact, the
192    freedom to sell copies is crucial: collections of free software sold
193    on CD-ROMs are important for the community, and selling them is an
194    important way to raise funds for free software development.  Therefore,
195    a program which people are not free to include on these collections is
196    not free software.
198    Because of the ambiguity of "free", people have long looked for
199    alternatives, but no one has found a suitable alternative.  The English
200    Language has more words and nuances than any other, but it lacks a
201    simple, unambiguous, word that means "free," as in
202    freedom--"unfettered," being the word that comes closest in meaning.
203    Such alternatives as "liberated", "freedom" and "open" have either the
204    wrong meaning or some other disadvantage.
206   GNU software and the GNU system
208    Developing a whole system is a very large project.  To bring it into
209    reach, I decided to adapt and use existing pieces of free software
210    wherever that was possible.  For example, I decided at the very
211    beginning to use TeX as the principal text formatter; a few years
212    later, I decided to use the X Window System rather than writing
213    another window system for GNU.
215    Because of this decision, the GNU system is not the same as the
216    collection of all GNU software.  The GNU system includes programs that
217    are not GNU software, programs that were developed by other people and
218    projects for their own purposes, but which we can use because they are
219    free software.
221   Commencing the project
223    In January 1984 I quit my job at MIT and began writing GNU software.
224    Leaving MIT was necessary so that MIT would not be able to interfere
225    with distributing GNU as free software.  If I had remained on the
226    staff, MIT could have claimed to own the work, and could have imposed
227    their own distribution terms, or even turned the work into a
228    proprietary software package.  I had no intention of doing a large
229    amount of work only to see it become useless for its intended purpose:
230    creating a new software-sharing community.
232    However, Professor Winston, then the head of the MIT AI Lab, kindly
233    invited me to keep using the lab's facilities.
235   The first steps
237    Shortly before beginning the GNU project, I heard about the Free
238    University Compiler Kit, also known as VUCK.  (The Dutch word for
239    "free" is written with a V.)  This was a compiler designed to handle
240    multiple languages, including C and Pascal, and to support multiple
241    target machines.  I wrote to its author asking if GNU could use it.
243    He responded derisively, stating that the university was free but the
244    compiler was not.  I therefore decided that my first program for the
245    GNU project would be a multi-language, multi-platform compiler.
247    Hoping to avoid the need to write the whole compiler myself, I
248    obtained the source code for the Pastel compiler, which was a
249    multi-platform compiler developed at Lawrence Livermore Lab.  It
250    supported, and was written in, an extended version of Pascal, designed
251    to be a system-programming language.  I added a C front end, and began
252    porting it to the Motorola 68000 computer.  But I had to give that up
253    when I discovered that the compiler needed many megabytes of stack
254    space, and the available 68000 Unix system would only allow 64k.
256    I then realized that the Pastel compiler functioned by parsing the
257    entire input file into a syntax tree, converting the whole syntax tree
258    into a chain of "instructions", and then generating the whole output
259    file, without ever freeing any storage.  At this point, I concluded I
260    would have to write a new compiler from scratch.  That new compiler is
261    now known as GCC; none of the Pastel compiler is used in it, but I
262    managed to adapt and use the C front end that I had written.  But that
263    was some years later; first, I worked on GNU Emacs.
265   GNU Emacs
267    I began work on GNU Emacs in September 1984, and in early 1985 it was
268    beginning to be usable.  This enabled me to begin using Unix systems to
269    do editing; having no interest in learning to use vi or ed, I had done
270    my editing on other kinds of machines until then.
272    At this point, people began wanting to use GNU Emacs, which raised the
273    question of how to distribute it.  Of course, I put it on the anonymous
274    ftp server on the MIT computer that I used.  (This computer,
275    prep.ai.mit.edu, thus became the principal GNU ftp distribution site;
276    when it was decommissioned a few years later, we transferred the name
277    to our new ftp server.)  But at that time, many of the interested
278    people were not on the Internet and could not get a copy by ftp.  So
279    the question was, what would I say to them?
281    I could have said, "Find a friend who is on the net and who will make
282    a copy for you."  Or I could have done what I did with the original
283    PDP-10 Emacs: tell them, "Mail me a tape and a SASE, and I will mail
284    it back with Emacs on it."  But I had no job, and I was looking for
285    ways to make money from free software.  So I announced that I would
286    mail a tape to whoever wanted one, for a fee of $150.  In this way, I
287    started a free software distribution business, the precursor of the
288    companies that today distribute entire Linux-based GNU systems.
290   Is a program free for every user?
292    If a program is free software when it leaves the hands of its author,
293    this does not necessarily mean it will be free software for everyone
294    who has a copy of it.  For example, public domain software (software
295    that is not copyrighted) is free software; but anyone can make a
296    proprietary modified version of it.  Likewise, many free programs are
297    copyrighted but distributed under simple permissive licenses which
298    allow proprietary modified versions.
300    The paradigmatic example of this problem is the X Window System.
301    Developed at MIT, and released as free software with a permissive
302    license, it was soon adopted by various computer companies.  They added
303    X to their proprietary Unix systems, in binary form only, and covered
304    by the same nondisclosure agreement.  These copies of X were no more
305    free software than Unix was.
307    The developers of the X Window System did not consider this a
308    problem--they expected and intended this to happen.  Their goal was not
309    freedom, just "success", defined as "having many users."  They did not
310    care whether these users had freedom, only that they should be
311    numerous.
313    This lead to a paradoxical situation where two different ways of
314    counting the amount of freedom gave different answers to the question,
315    "Is this program free?" If you judged based on the freedom provided by
316    the distribution terms of the MIT release, you would say that X was
317    free software.  But if you measured the freedom of the average user of
318    X, you would have to say it was proprietary software.  Most X users
319    were running the proprietary versions that came with Unix systems, not
320    the free version.
322   Copyleft and the GNU GPL
324    The goal of GNU was to give users freedom, not just to be popular.  So
325    we needed to use distribution terms that would prevent GNU software
326    from being turned into proprietary software.  The method we use is
327    called "copyleft".(1)
329    Copyleft uses copyright law, but flips it over to serve the opposite
330    of its usual purpose: instead of a means of privatizing software, it
331    becomes a means of keeping software free.
333    The central idea of copyleft is that we give everyone permission to
334    run the program, copy the program, modify the program, and distribute
335    modified versions--but not permission to add restrictions of their
336    own.  Thus, the crucial freedoms that define "free software" are
337    guaranteed to everyone who has a copy; they become inalienable rights.
339    For an effective copyleft, modified versions must also be free.  This
340    ensures that work based on ours becomes available to our community if
341    it is published.  When programmers who have jobs as programmers
342    volunteer to improve GNU software, it is copyleft that prevents their
343    employers from saying, "You can't share those changes, because we are
344    going to use them to make our proprietary version of the program."
346    The requirement that changes must be free is essential if we want to
347    ensure freedom for every user of the program.  The companies that
348    privatized the X Window System usually made some changes to port it to
349    their systems and hardware.  These changes were small compared with the
350    great extent of X, but they were not trivial.  If making changes were
351    an excuse to deny the users freedom, it would be easy for anyone to
352    take advantage of the excuse.
354    A related issue concerns combining a free program with non-free code.
355    Such a combination would inevitably be non-free; whichever freedoms
356    are lacking for the non-free part would be lacking for the whole as
357    well.  To permit such combinations would open a hole big enough to sink
358    a ship.  Therefore, a crucial requirement for copyleft is to plug this
359    hole: anything added to or combined with a copylefted program must be
360    such that the larger combined version is also free and copylefted.
362    The specific implementation of copyleft that we use for most GNU
363    software is the GNU General Public License, or GNU GPL for short.  We
364    have other kinds of copyleft that are used in specific circumstances.
365    GNU manuals are copylefted also, but use a much simpler kind of
366    copyleft, because the complexity of the GNU GPL is not necessary for
367    manuals.
369    (1) In 1984 or 1985, Don Hopkins (a very imaginative fellow) mailed me
370    a letter.  On the envelope he had written several amusing sayings,
371    including this one: "Copyleft--all rights reversed." I used the word
372    "copyleft" to name the distribution concept I was developing at the
373    time.
375   The Free Software Foundation
377    As interest in using Emacs was growing, other people became involved
378    in the GNU project, and we decided that it was time to seek funding
379    once again.  So in 1985 we created the Free Software Foundation, a
380    tax-exempt charity for free software development.  The FSF also took
381    over the Emacs tape distribution business; later it extended this by
382    adding other free software (both GNU and non-GNU) to the tape, and by
383    selling free manuals as well.
385    The FSF accepts donations, but most of its income has always come from
386    sales--of copies of free software, and of other related services.
387    Today it sells CD-ROMs of source code, CD-ROMs with binaries, nicely
388    printed manuals (all with freedom to redistribute and modify), and
389    Deluxe Distributions (where we build the whole collection of software
390    for your choice of platform).
392    Free Software Foundation employees have written and maintained a
393    number of GNU software packages.  Two notable ones are the C library
394    and the shell.  The GNU C library is what every program running on a
395    GNU/Linux system uses to communicate with Linux.  It was developed by a
396    member of the Free Software Foundation staff, Roland McGrath.  The
397    shell used on most GNU/Linux systems is BASH, the Bourne Again
398    Shell(1), which was developed by FSF employee Brian Fox.
400    We funded development of these programs because the GNU project was
401    not just about tools or a development environment.  Our goal was a
402    complete operating system, and these programs were needed for that
403    goal.
405    (1) "Bourne again Shell" is a joke on the name ``Bourne Shell'', which
406    was the usual shell on Unix.
408   Free software support
410    The free software philosophy rejects a specific widespread business
411    practice, but it is not against business.  When businesses respect the
412    users' freedom, we wish them success.
414    Selling copies of Emacs demonstrates one kind of free software
415    business.  When the FSF took over that business, I needed another way
416    to make a living.  I found it in selling services relating to the free
417    software I had developed.  This included teaching, for subjects such as
418    how to program GNU Emacs and how to customize GCC, and software
419    development, mostly porting GCC to new platforms.
421    Today each of these kinds of free software business is practiced by a
422    number of corporations.  Some distribute free software collections on
423    CD-ROM; others sell support at levels ranging from answering user
424    questions, to fixing bugs, to adding major new features.  We are even
425    beginning to see free software companies based on launching new free
426    software products.
428    Watch out, though--a number of companies that associate themselves
429    with the term "open source" actually base their business on non-free
430    software that works with free software.  These are not free software
431    companies, they are proprietary software companies whose products
432    tempt users away from freedom.  They call these "value added", which
433    reflects the values they would like us to adopt: convenience above
434    freedom.  If we value freedom more, we should call them "freedom
435    subtracted" products.
437   Technical goals
439    The principal goal of GNU was to be free software.  Even if GNU had no
440    technical advantage over Unix, it would have a social advantage,
441    allowing users to cooperate, and an ethical advantage, respecting the
442    user's freedom.
444    But it was natural to apply the known standards of good practice to
445    the work--for example, dynamically allocating data structures to avoid
446    arbitrary fixed size limits, and handling all the possible 8-bit codes
447    wherever that made sense.
449    In addition, we rejected the Unix focus on small memory size, by
450    deciding not to support 16-bit machines (it was clear that 32-bit
451    machines would be the norm by the time the GNU system was finished),
452    and to make no effort to reduce memory usage unless it exceeded a
453    megabyte.  In programs for which handling very large files was not
454    crucial, we encouraged programmers to read an entire input file into
455    core, then scan its contents without having to worry about I/O.
457    These decisions enabled many GNU programs to surpass their Unix
458    counterparts in reliability and speed.
460   Donated computers
462    As the GNU project's reputation grew, people began offering to donate
463    machines running UNIX to the project.  These were very useful, because
464    the easiest way to develop components of GNU was to do it on a UNIX
465    system, and replace the components of that system one by one.  But they
466    raised an ethical issue: whether it was right for us to have a copy of
467    UNIX at all.
469    UNIX was (and is) proprietary software, and the GNU project's
470    philosophy said that we should not use proprietary software.  But,
471    applying the same reasoning that leads to the conclusion that violence
472    in self defense is justified, I concluded that it was legitimate to
473    use a proprietary package when that was crucial for developing free
474    replacement that would help others stop using the proprietary package.
476    But, even if this was a justifiable evil, it was still an evil.  Today
477    we no longer have any copies of Unix, because we have replaced them
478    with free operating systems.  If we could not replace a machine's
479    operating system with a free one, we replaced the machine instead.
481   The GNU Task List
483    As the GNU project proceeded, and increasing numbers of system
484    components were found or developed, eventually it became useful to
485    make a list of the remaining gaps.  We used it to recruit developers to
486    write the missing pieces.  This list became known as the GNU task list.
487    In addition to missing Unix components, we listed added various other
488    useful software and documentation projects that, we thought, a truly
489    complete system ought to have.
491    Today, hardly any Unix components are left in the GNU task list--those
492    jobs have been done, aside from a few inessential ones.  But the list
493    is full of projects that some might call "applications".  Any program
494    that appeals to more than a narrow class of users would be a useful
495    thing to add to an operating system.
497    Even games are included in the task list--and have been since the
498    beginning.  Unix included games, so naturally GNU should too.  But
499    compatibility was not an issue for games, so we did not follow the
500    list of games that Unix had.  Instead, we listed a spectrum of
501    different kinds of games that users might like.
503   The GNU Library GPL
505    The GNU C library uses a special kind of copyleft called the GNU
506    Library General Public License, which gives permission to link
507    proprietary software with the library.  Why make this exception?
509    It is not a matter of principle; there is no principle that says
510    proprietary software products are entitled to include our code.  (Why
511    contribute to a project predicated on refusing to share with us?)
512    Using the LGPL for the C library, or for any library, is a matter of
513    strategy.
515    The C library does a generic job; every proprietary system or compiler
516    comes with a C library.  Therefore, to make our C library available
517    only to free software would not have given free software any
518    advantage--it would only have discouraged use of our library.
520    One system is an exception to this: on the GNU system (and this
521    includes GNU/Linux), the GNU C library is the only C library.  So the
522    distribution terms of the GNU C library determine whether it is
523    possible to compile a proprietary program for the GNU system.  There is
524    no ethical reason to allow proprietary applications on the GNU system,
525    but strategically it seems that disallowing them would do more to
526    discourage use of the GNU system than to encourage development of free
527    applications.
529    That is why using the Library GPL is a good strategy for the C
530    library.  For other libraries, the strategic decision needs to be
531    considered on a case-by-case basis.  When a library does a special job
532    that can help write certain kinds of programs, then releasing it under
533    the GPL, limiting it to free programs only, is a way of helping other
534    free software developers, giving them an advantage against proprietary
535    software.
537    Consider GNU Readline, a library that was developed to provide
538    command-line editing for BASH.  Readline is released under the ordinary
539    GNU GPL, not the Library GPL.  This probably does reduce the amount
540    Readline is used, but that is no loss for us.  Meanwhile, at least one
541    useful application has been made free software specifically so it
542    could use Readline, and that is a real gain for the community.
544    Proprietary software developers have the advantages money provides;
545    free software developers need to make advantages for each other.  I
546    hope some day we will have a large collection of GPL-covered libraries
547    that have no parallel available to proprietary software, providing
548    useful modules to serve as building blocks in new free software, and
549    adding up to a major advantage for further free software development.
551   Scratching an itch?
553    Eric Raymond says that "Every good work of software starts by
554    scratching a developer's personal itch."  Maybe that happens sometimes,
555    but many essential pieces of GNU software were developed in order to
556    have a complete free operating system.  They come from a vision and a
557    plan, not from impulse.
559    For example, we developed the GNU C library because a Unix-like system
560    needs a C library, the Bourne-Again Shell (bash) because a Unix-like
561    system needs a shell, and GNU tar because a Unix-like system needs a
562    tar program.  The same is true for my own programs--the GNU C compiler,
563    GNU Emacs, GDB and GNU Make.
565    Some GNU programs were developed to cope with specific threats to our
566    freedom.  Thus, we developed gzip to replace the Compress program,
567    which had been lost to the community because of the LZW patents.  We
568    found people to develop LessTif, and more recently started GNOME and
569    Harmony, to address the problems caused by certain proprietary
570    libraries (see below).  We are developing the GNU Privacy Guard to
571    replace popular non-free encryption software, because users should not
572    have to choose between privacy and freedom.
574    Of course, the people writing these programs became interested in the
575    work, and many features were added to them by various people for the
576    sake of their own needs and interests.  But that is not why the
577    programs exist.
579   Unexpected developments
581    At the beginning of the GNU project, I imagined that we would develop
582    the whole GNU system, then release it as a whole.  That is not how it
583    happened.
585    Since each component of the GNU system was implemented on a Unix
586    system, each component could run on Unix systems, long before a
587    complete GNU system existed.  Some of these programs became popular,
588    and users began extending them and porting them---to the various
589    incompatible versions of Unix, and sometimes to other systems as well.
591    The process made these programs much more powerful, and attracted both
592    funds and contributors to the GNU project.  But it probably also
593    delayed completion of a minimal working system by several years, as
594    GNU developers' time was put into maintaining these ports and adding
595    features to the existing components, rather than moving on to write
596    one missing component after another.
598   The GNU Hurd
600    By 1990, the GNU system was almost complete; the only major missing
601    component was the kernel.  We had decided to implement our kernel as a
602    collection of server processes running on top of Mach.  Mach is a
603    microkernel developed at Carnegie Mellon University and then at the
604    University of Utah; the GNU HURD is a collection of servers (or ``herd
605    of gnus'') that run on top of Mach, and do the various jobs of the
606    Unix kernel.  The start of development was delayed as we waited for
607    Mach to be released as free software, as had been promised.
609    One reason for choosing this design was to avoid what seemed to be the
610    hardest part of the job: debugging a kernel program without a
611    source-level debugger to do it with.  This part of the job had been
612    done already, in Mach, and we expected to debug the HURD servers as
613    user programs, with GDB.  But it took a long time to make that
614    possible, and the multi-threaded servers that send messages to each
615    other have turned out to be very hard to debug.  Making the HURD work
616    solidly has stretched on for many years.
618   Alix
620    The GNU kernel was not originally supposed to be called the HURD.  Its
621    original name was Alix--named after the woman who was my sweetheart at
622    the time.  She, a Unix system administrator, had pointed out how her
623    name would fit a common naming pattern for Unix system versions; as a
624    joke, she told her friends, "Someone should name a kernel after me."  I
625    said nothing, but decided to surprise her with a kernel named Alix.
627    It did not stay that way.  Michael Bushnell (now Thomas), the main
628    developer of the kernel, preferred the name HURD, and redefined Alix
629    to refer to a certain part of the kernel--the part that would trap
630    system calls and handle them by sending messages to HURD servers.
632    Ultimately, Alix and I broke up, and she changed her name;
633    independently, the HURD design was changed so that the C library would
634    send messages directly to servers, and this made the Alix component
635    disappear from the design.
637    But before these things happened, a friend of hers came across the
638    name Alix in the HURD source code, and mentioned the name to her.  So
639    the name did its job.
641   Linux and GNU/Linux
643    The GNU Hurd is not ready for production use.  Fortunately, another
644    kernel is available.  In 1991, Linus Torvalds developed a
645    Unix-compatible kernel and called it Linux.  Around 1992, combining
646    Linux with the not-quite-complete GNU system resulted in a complete
647    free operating system.  (Combining them was a substantial job in
648    itself, of course.) It is due to Linux that we can actually run a
649    version of the GNU system today.
651    We call this system version GNU/Linux, to express its composition as a
652    combination of the GNU system with Linux as the kernel.
654   Challenges in our future
656    We have proved our ability to develop a broad spectrum of free
657    software.  This does not mean we are invincible and unstoppable.
658    Several challenges make the future of free software uncertain; meeting
659    them will require steadfast effort and endurance, sometimes lasting
660    for years.  It will require the kind of determination that people
661    display when they value their freedom and will not let anyone take it
662    away.
664    The following four sections discuss these challenges.
666   Secret hardware
668    Hardware manufacturers increasingly tend to keep hardware
669    specifications secret.  This makes it difficult to write free drivers
670    so that Linux and XFree86 can support new hardware.  We have complete
671    free systems today, but we will not have them tomorrow if we cannot
672    support tomorrow's computers.
674    There are two ways to cope with this problem.  Programmers can do
675    reverse engineering to figure out how to support the hardware.  The
676    rest of us can choose the hardware that is supported by free software;
677    as our numbers increase, secrecy of specifications will become a
678    self-defeating policy.
680    Reverse engineering is a big job; will we have programmers with
681    sufficient determination to undertake it? Yes--if we have built up a
682    strong feeling that free software is a matter of principle, and
683    non-free drivers are intolerable.  And will large numbers of us spend
684    extra money, or even a little extra time, so we can use free drivers?
685    Yes, if the determination to have freedom is widespread.
687   Non-free libraries
689    A non-free library that runs on free operating systems acts as a trap
690    for free software developers.  The library's attractive features are
691    the bait; if you use the library, you fall into the trap, because your
692    program cannot usefully be part of a free operating system.  (Strictly
693    speaking, we could include your program, but it won't run with the
694    library missing.) Even worse, if a program that uses the proprietary
695    library becomes popular, it can lure other unsuspecting programmers
696    into the trap.
698    The first instance of this problem was the Motif toolkit, back in the
699    80s.  Although there were as yet no free operating systems, it was
700    clear what problem Motif would cause for them later on.  The GNU
701    Project responded in two ways: by asking individual free software
702    projects to support the free X toolkit widgets as well as Motif, and
703    by asking for someone to write a free replacement for Motif.  The job
704    took many years; LessTif, developed by the Hungry Programmers, became
705    powerful enough to support most Motif applications only in 1997.
707    Between 1996 and 1998, another non-free GUI toolkit library, called
708    Qt, was used in a substantial collection of free software, the desktop
709    KDE.
711    Free GNU/Linux systems were unable to use KDE, because we could not
712    use the library.  However, some commercial distributors of GNU/Linux
713    systems who were not strict about sticking with free software added
714    KDE to their systems--producing a system with more capabilities, but
715    less freedom.  The KDE group was actively encouraging more programmers
716    to use Qt, and millions of new "Linux users" had never been exposed to
717    the idea that there was a problem in this.  The situation appeared
718    grim.
720    The free software community responded to the problem in two ways:
721    GNOME and Harmony.
723    GNOME, the GNU Network Object Model Environment, is GNU's desktop
724    project.  Started in 1997 by Miguel de Icaza, and developed with the
725    support of Red Hat Software, GNOME set out to provide similar desktop
726    facilities, but using free software exclusively.  It has technical
727    advantages as well, such as supporting a variety of languages, not
728    just C++.  But its main purpose was freedom: not to require the use of
729    any non-free software.
731    Harmony is a compatible replacement library, designed to make it
732    possible to run KDE software without using Qt.
734    In November 1998, the developers of Qt announced a change of license
735    which, when carried out, should make Qt free software.  There is no way
736    to be sure, but I think that this was partly due to the community's
737    firm response to the problem that Qt posed when it was non-free.  (The
738    new license is inconvenient and inequitable, so it remains desirable
739    to avoid using Qt.)
741    [Subsequent note: in September 2000, Qt was rereleased under the GNU
742    GPL, which essentially solved this problem.]
744    How will we respond to the next tempting non-free library? Will the
745    whole community understand the need to stay out of the trap? Or will
746    many of us give up freedom for convenience, and produce a major
747    problem? Our future depends on our philosophy.
749   Software patents
751    The worst threat we face comes from software patents, which can put
752    algorithms and features off limits to free software for up to twenty
753    years.  The LZW compression algorithm patents were applied for in 1983,
754    and we still cannot release free software to produce proper compressed
755    GIFs.  In 1998, a free program to produce MP3 compressed audio was
756    removed from distribution under threat of a patent suit.
758    There are ways to cope with patents: we can search for evidence that a
759    patent is invalid, and we can look for alternative ways to do a job.
760    But each of these methods works only sometimes; when both fail, a
761    patent may force all free software to lack some feature that users
762    want.  What will we do when this happens?
764    Those of us who value free software for freedom's sake will stay with
765    free software anyway.  We will manage to get work done without the
766    patented features.  But those who value free software because they
767    expect it to be techically superior are likely to call it a failure
768    when a patent holds it back.  Thus, while it is useful to talk about
769    the practical effectiveness of the "cathedral" model of development,
770    and the reliability and power of some free software, we must not stop
771    there.  We must talk about freedom and principle.
773   Free documentation
775    The biggest deficiency in our free operating systems is not in the
776    software--it is the lack of good free manuals that we can include in
777    our systems.  Documentation is an essential part of any software
778    package; when an important free software package does not come with a
779    good free manual, that is a major gap.  We have many such gaps today.
781    Free documentation, like free software, is a matter of freedom, not
782    price.  The criterion for a free manual is pretty much the same as for
783    free software: it is a matter of giving all users certain freedoms.
784    Redistribution (including commercial sale) must be permitted, on-line
785    and on paper, so that the manual can accompany every copy of the
786    program.
788    Permission for modification is crucial too.  As a general rule, I don't
789    believe that it is essential for people to have permission to modify
790    all sorts of articles and books.  For example, I don't think you or I
791    are obliged to give permission to modify articles like this one, which
792    describe our actions and our views.
794    But there is a particular reason why the freedom to modify is crucial
795    for documentation for free software.  When people exercise their right
796    to modify the software, and add or change its features, if they are
797    conscientious they will change the manual too--so they can provide
798    accurate and usable documentation with the modified program.  A manual
799    which does not allow programmers to be conscientious and finish the
800    job, does not fill our community's needs.
802    Some kinds of limits on how modifications are done pose no problem.
803    For example, requirements to preserve the original author's copyright
804    notice, the distribution terms, or the list of authors, are ok.  It is
805    also no problem to require modified versions to include notice that
806    they were modified, even to have entire sections that may not be
807    deleted or changed, as long as these sections deal with nontechnical
808    topics.  These kinds of restrictions are not a problem because they
809    don't stop the conscientious programmer from adapting the manual to
810    fit the modified program.  In other words, they don't block the free
811    software community from making full use of the manual.
813    However, it must be possible to modify all the *technical* content of
814    the manual, and then distribute the result in all the usual media,
815    through all the usual channels; otherwise, the restrictions do
816    obstruct the community, the manual is not free, and we need another
817    manual.
819    Will free software developers have the awareness and determination to
820    produce a full spectrum of free manuals? Once again, our future
821    depends on philosophy.
823   We must talk about freedom
825    Estimates today are that there are ten million users of GNU/Linux
826    systems such as Debian GNU/Linux and Red Hat Linux.  Free software has
827    developed such practical advantages that users are flocking to it for
828    purely practical reasons.
830    The good consequences of this are evident: more interest in developing
831    free software, more customers for free software businesses, and more
832    ability to encourage companies to develop commercial free software
833    instead of proprietary software products.
835    But interest in the software is growing faster than awareness of the
836    philosophy it is based on, and this leads to trouble.  Our ability to
837    meet the challenges and threats described above depends on the will to
838    stand firm for freedom.  To make sure our community has this will, we
839    need to spread the idea to the new users as they come into the
840    community.
842    But we are failing to do so: the efforts to attract new users into our
843    community are far outstripping the efforts to teach them the civics of
844    our community.  We need to do both, and we need to keep the two efforts
845    in balance.
847   "Open Source"
849    Teaching new users about freedom became more difficult in 1998, when a
850    part of the community decided to stop using the term "free software"
851    and say "open source software" instead.
853    Some who favored this term aimed to avoid the confusion of "free" with
854    "gratis"--a valid goal.  Others, however, aimed to set aside the spirit
855    of principle that had motivated the free software movement and the GNU
856    project, and to appeal instead to executives and business users, many
857    of whom hold an ideology that places profit above freedom, above
858    community, above principle.  Thus, the rhetoric of "open source"
859    focuses on the potential to make high quality, powerful software, but
860    shuns the ideas of freedom, community, and principle.
862    The "Linux" magazines are a clear example of this--they are filled
863    with advertisements for proprietary software that works with
864    GNU/Linux.  When the next Motif or Qt appears, will these magazines
865    warn programmers to stay away from it, or will they run ads for it?
867    The support of business can contribute to the community in many ways;
868    all else being equal, it is useful.  But winning their support by
869    speaking even less about freedom and principle can be disastrous; it
870    makes the previous imbalance between outreach and civics education
871    even worse.
873    "Free software" and "open source" describe the same category of
874    software, more or less, but say different things about the software,
875    and about values.  The GNU Project continues to use the term "free
876    software", to express the idea that freedom, not just technology, is
877    important.
879   Try!
881    Yoda's philosophy ("There is no `try'") sounds neat, but it doesn't
882    work for me.  I have done most of my work while anxious about whether I
883    could do the job, and unsure that it would be enough to achieve the
884    goal if I did.  But I tried anyway, because there was no one but me
885    between the enemy and my city.  Surprising myself, I have sometimes
886    succeeded.
888    Sometimes I failed; some of my cities have fallen.  Then I found
889    another threatened city, and got ready for another battle.  Over time,
890    I've learned to look for threats and put myself between them and my
891    city, calling on other hackers to come and join me.
893    Nowadays, often I'm not the only one.  It is a relief and a joy when I
894    see a regiment of hackers digging in to hold the line, and I realize,
895    this city may survive--for now.  But the dangers are greater each year,
896    and now Microsoft has explicitly targeted our community.  We can't take
897    the future of freedom for granted.  Don't take it for granted! If you
898    want to keep your freedom, you must be prepared to defend it.
900   Copyright (C) 1998 Richard Stallman
902   Verbatim copying and distribution of this entire article is permitted
903   in any medium, provided this notice is preserved.