annotate etc/THE-GNU-PROJECT @ 49506:ac9e2eeeb03d

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