annotate etc/GNU @ 814:a634e3b7acc8

[xemacs-hg @ 2002-04-14 12:41:59 by ben] latest changes TODO.ben-mule-21-5: Update. make-docfile.c: Add basic support for handling ISO 2022 doc strings -- we parse the basic charset designation sequences so we know whether we're in ASCII and have to pay attention to end quotes and such. Reformat code according to coding standards. abbrev.el: Add `global-abbrev-mode', which turns on or off abbrev-mode in all buffers. Added `defining-abbrev-turns-on-abbrev-mode' -- if non-nil, defining an abbrev through an interactive function will automatically turn on abbrev-mode, either globally or locally depending on the command. This is the "what you'd expect" behavior. indent.el: general function for indenting a balanced expression in a mode-correct way. Works similar to indent-region in that a mode can specify a specific command to do the whole operation; if not, figure out the region using forward-sexp and indent each line using indent-according-to-mode. keydefs.el: Removed. Modify M-C-backslash to do indent-region-or-balanced-expression. Make S-Tab just insert a TAB char, like it's meant to do. make-docfile.el: Now that we're using the call-process-in-lisp, we need to load an extra file win32-native.el because we're running a bare temacs. menubar-items.el: Totally redo the Cmds menu so that most used commands appear directly on the menu and less used commands appear in submenus. The old way may have been very pretty, but rather impractical. process.el: Under Windows, don't ever use old-call-process-internal, even in batch mode. We can do processes in batch mode. subr.el: Someone recoded truncate-string-to-width, saying "the FSF version is too complicated and does lots of hard-to-understand stuff" but the resulting recoded version was *totally* wrong! it misunderstood the basic point of this function, which is work in *columns* not chars. i dumped ours and copied the version from FSF 21.1. Also added truncate-string-with-continuation-dots, since this idiom is used often. config.inc.samp, xemacs.mak: Separate out debug and optimize flags. Remove all vestiges of USE_MINIMAL_TAGBITS, USE_INDEXED_LRECORD_IMPLEMENTATION, and GUNG_HO, since those ifdefs have long been removed. Make error-checking support actually work. Some rearrangement of config.inc.samp to make it more logical. Remove callproc.c and ntproc.c from xemacs.mak, no longer used. Make pdump the default. lisp.h: Add support for strong type-checking of Bytecount, Bytebpos, Charcount, Charbpos, and others, by making them classes, overloading the operators to provide integer-like operation and carefully controlling what operations are allowed. Not currently enabled in C++ builds because there are still a number of compile errors, and it won't really work till we merge in my "8-bit-Mule" workspace, in which I make use of the new types Charxpos, Bytexpos, Memxpos, representing a "position" either in a buffer or a string. (This is especially important in the extent code.) abbrev.c, alloc.c, eval.c, buffer.c, buffer.h, editfns.c, fns.c, text.h: Warning fixes, some of them related to new C++ strict type checking of Bytecount, Charbpos, etc. dired.c: Caught an actual error due to strong type checking -- char len being passed when should be byte len. alloc.c, backtrace.h, bytecode.c, bytecode.h, eval.c, sysdep.c: Further optimize Ffuncall: -- process arg list at compiled-function creation time, converting into an array for extra-quick access at funcall time. -- rewrite funcall_compiled_function to use it, and inline this function. -- change the order of check for magic stuff in SPECBIND_FAST_UNSAFE to be faster. -- move the check for need to garbage collect into the allocation code, so only a single flag needs to be checked in funcall. buffer.c, symbols.c: add debug funs to check on mule optimization info in buffers and strings. eval.c, emacs.c, text.c, regex.c, scrollbar-msw.c, search.c: Fix evil crashes due to eistrings not properly reinitialized under pdump. Redo a bit some of the init routines; convert some complex_vars_of() into simple vars_of(), because they didn't need complex processing. callproc.c, emacs.c, event-stream.c, nt.c, process.c, process.h, sysdep.c, sysdep.h, syssignal.h, syswindows.h, ntproc.c: Delete. Hallelujah, praise the Lord, there is no god but Allah!!! fix so that processes can be invoked in bare temacs -- thereby eliminating any need for callproc.c. (currently only eliminated under NT.) remove all crufty and unnecessary old process code in ntproc.c and elsewhere. move non-callproc-specific stuff (mostly environment) into process.c, so callproc.c can be left out under NT. console-tty.c, doc.c, file-coding.c, file-coding.h, lstream.c, lstream.h: fix doc string handling so it works with Japanese, etc docs. change handling of "character mode" so callers don't have to manually set it (quite error-prone). event-msw.c: spacing fixes. lread.c: eliminate unused crufty vintage-19 "FSF defun hack" code. lrecord.h: improve pdump description docs. buffer.c, ntheap.c, unexnt.c, win32.c, emacs.c: Mule-ize some unexec and startup code. It was pseudo-Mule-ized before by simply always calling the ...A versions of functions, but that won't cut it -- eventually we want to be able to run properly even if XEmacs has been installed in a Japanese directory. (The current problem is the timing of the loading of the Unicode tables; this will eventually be fixed.) Go through and fix various other places where the code was not Mule-clean. Provide a function mswindows_get_module_file_name() to get our own name without resort to PATH_MAX and such. Add a big comment in main() about the problem with Unicode table load timing that I just alluded to. emacs.c: When error-checking is enabled (interpreted as "user is developing XEmacs"), don't ask user to "pause to read messages" when a fatal error has occurred, because it will wedge if we are in an inner modal loop (typically when a menu is popped up) and make us unable to get a useful stack trace in the debugger. text.c: Correct update_entirely_ascii_p_flag to actually work. lisp.h, symsinit.h: declarations for above changes.
author ben
date Sun, 14 Apr 2002 12:43:31 +0000
parents 376386a54a3c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
1 Copyright (C) 1985, 1993 Free Software Foundation, Inc.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
2
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
3 Permission is granted to anyone to make or distribute verbatim copies
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
4 of this document, in any medium, provided that the copyright notice and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
5 permission notice are preserved, and that the distributor grants the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
6 recipient permission for further redistribution as permitted by this
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
7 notice.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
8
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
9 Modified versions may not be made.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
10
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
11 The GNU Manifesto
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
12 *****************
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
13
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
14 The GNU Manifesto which appears below was written by Richard
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
15 Stallman at the beginning of the GNU project, to ask for
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
16 participation and support. For the first few years, it was
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
17 updated in minor ways to account for developments, but now it
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
18 seems best to leave it unchanged as most people have seen it.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
19
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
20 Since that time, we have learned about certain common
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
21 misunderstandings that different wording could help avoid.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
22 Footnotes added in 1993 help clarify these points.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
23
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
24 For up-to-date information about the available GNU software,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
25 please see the latest issue of the GNU's Bulletin. The list is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
26 much too long to include here.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
27
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
28 What's GNU? Gnu's Not Unix!
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
29 ============================
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
30
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
31 GNU, which stands for Gnu's Not Unix, is the name for the complete
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
32 Unix-compatible software system which I am writing so that I can give it
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
33 away free to everyone who can use it.(1) Several other volunteers are
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
34 helping me. Contributions of time, money, programs and equipment are
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
35 greatly needed.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
36
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
37 So far we have an Emacs text editor with Lisp for writing editor
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
38 commands, a source level debugger, a yacc-compatible parser generator,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
39 a linker, and around 35 utilities. A shell (command interpreter) is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
40 nearly completed. A new portable optimizing C compiler has compiled
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
41 itself and may be released this year. An initial kernel exists but
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
42 many more features are needed to emulate Unix. When the kernel and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
43 compiler are finished, it will be possible to distribute a GNU system
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
44 suitable for program development. We will use TeX as our text
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
45 formatter, but an nroff is being worked on. We will use the free,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
46 portable X window system as well. After this we will add a portable
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
47 Common Lisp, an Empire game, a spreadsheet, and hundreds of other
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
48 things, plus on-line documentation. We hope to supply, eventually,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
49 everything useful that normally comes with a Unix system, and more.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
50
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
51 GNU will be able to run Unix programs, but will not be identical to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
52 Unix. We will make all improvements that are convenient, based on our
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
53 experience with other operating systems. In particular, we plan to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
54 have longer file names, file version numbers, a crashproof file system,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
55 file name completion perhaps, terminal-independent display support, and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
56 perhaps eventually a Lisp-based window system through which several
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
57 Lisp programs and ordinary Unix programs can share a screen. Both C
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
58 and Lisp will be available as system programming languages. We will
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
59 try to support UUCP, MIT Chaosnet, and Internet protocols for
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
60 communication.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
61
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
62 GNU is aimed initially at machines in the 68000/16000 class with
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
63 virtual memory, because they are the easiest machines to make it run
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
64 on. The extra effort to make it run on smaller machines will be left
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
65 to someone who wants to use it on them.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
66
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
67 To avoid horrible confusion, please pronounce the `G' in the word
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
68 `GNU' when it is the name of this project.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
69
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
70 Why I Must Write GNU
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
71 ====================
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
72
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
73 I consider that the golden rule requires that if I like a program I
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
74 must share it with other people who like it. Software sellers want to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
75 divide the users and conquer them, making each user agree not to share
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
76 with others. I refuse to break solidarity with other users in this
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
77 way. I cannot in good conscience sign a nondisclosure agreement or a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
78 software license agreement. For years I worked within the Artificial
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
79 Intelligence Lab to resist such tendencies and other inhospitalities,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
80 but eventually they had gone too far: I could not remain in an
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
81 institution where such things are done for me against my will.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
82
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
83 So that I can continue to use computers without dishonor, I have
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
84 decided to put together a sufficient body of free software so that I
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
85 will be able to get along without any software that is not free. I
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
86 have resigned from the AI lab to deny MIT any legal excuse to prevent
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
87 me from giving GNU away.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
88
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
89 Why GNU Will Be Compatible with Unix
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
90 ====================================
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
91
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
92 Unix is not my ideal system, but it is not too bad. The essential
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
93 features of Unix seem to be good ones, and I think I can fill in what
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
94 Unix lacks without spoiling them. And a system compatible with Unix
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
95 would be convenient for many other people to adopt.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
96
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
97 How GNU Will Be Available
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
98 =========================
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
99
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
100 GNU is not in the public domain. Everyone will be permitted to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
101 modify and redistribute GNU, but no distributor will be allowed to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
102 restrict its further redistribution. That is to say, proprietary
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
103 modifications will not be allowed. I want to make sure that all
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
104 versions of GNU remain free.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
105
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
106 Why Many Other Programmers Want to Help
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
107 =======================================
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
108
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
109 I have found many other programmers who are excited about GNU and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
110 want to help.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
111
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
112 Many programmers are unhappy about the commercialization of system
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
113 software. It may enable them to make more money, but it requires them
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
114 to feel in conflict with other programmers in general rather than feel
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
115 as comrades. The fundamental act of friendship among programmers is the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
116 sharing of programs; marketing arrangements now typically used
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
117 essentially forbid programmers to treat others as friends. The
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
118 purchaser of software must choose between friendship and obeying the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
119 law. Naturally, many decide that friendship is more important. But
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
120 those who believe in law often do not feel at ease with either choice.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
121 They become cynical and think that programming is just a way of making
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
122 money.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
123
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
124 By working on and using GNU rather than proprietary programs, we can
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
125 be hospitable to everyone and obey the law. In addition, GNU serves as
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
126 an example to inspire and a banner to rally others to join us in
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
127 sharing. This can give us a feeling of harmony which is impossible if
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
128 we use software that is not free. For about half the programmers I
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
129 talk to, this is an important happiness that money cannot replace.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
130
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
131 How You Can Contribute
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
132 ======================
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
133
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
134 I am asking computer manufacturers for donations of machines and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
135 money. I'm asking individuals for donations of programs and work.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
136
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
137 One consequence you can expect if you donate machines is that GNU
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
138 will run on them at an early date. The machines should be complete,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
139 ready to use systems, approved for use in a residential area, and not
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
140 in need of sophisticated cooling or power.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
141
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
142 I have found very many programmers eager to contribute part-time
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
143 work for GNU. For most projects, such part-time distributed work would
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
144 be very hard to coordinate; the independently-written parts would not
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
145 work together. But for the particular task of replacing Unix, this
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
146 problem is absent. A complete Unix system contains hundreds of utility
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
147 programs, each of which is documented separately. Most interface
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
148 specifications are fixed by Unix compatibility. If each contributor
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
149 can write a compatible replacement for a single Unix utility, and make
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
150 it work properly in place of the original on a Unix system, then these
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
151 utilities will work right when put together. Even allowing for Murphy
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
152 to create a few unexpected problems, assembling these components will
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
153 be a feasible task. (The kernel will require closer communication and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
154 will be worked on by a small, tight group.)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
155
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
156 If I get donations of money, I may be able to hire a few people full
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
157 or part time. The salary won't be high by programmers' standards, but
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
158 I'm looking for people for whom building community spirit is as
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
159 important as making money. I view this as a way of enabling dedicated
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
160 people to devote their full energies to working on GNU by sparing them
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
161 the need to make a living in another way.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
162
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
163 Why All Computer Users Will Benefit
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
164 ===================================
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
165
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
166 Once GNU is written, everyone will be able to obtain good system
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
167 software free, just like air.(2)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
168
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
169 This means much more than just saving everyone the price of a Unix
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
170 license. It means that much wasteful duplication of system programming
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
171 effort will be avoided. This effort can go instead into advancing the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
172 state of the art.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
173
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
174 Complete system sources will be available to everyone. As a result,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
175 a user who needs changes in the system will always be free to make them
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
176 himself, or hire any available programmer or company to make them for
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
177 him. Users will no longer be at the mercy of one programmer or company
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
178 which owns the sources and is in sole position to make changes.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
179
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
180 Schools will be able to provide a much more educational environment
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
181 by encouraging all students to study and improve the system code.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
182 Harvard's computer lab used to have the policy that no program could be
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
183 installed on the system if its sources were not on public display, and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
184 upheld it by actually refusing to install certain programs. I was very
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
185 much inspired by this.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
186
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
187 Finally, the overhead of considering who owns the system software
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
188 and what one is or is not entitled to do with it will be lifted.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
189
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
190 Arrangements to make people pay for using a program, including
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
191 licensing of copies, always incur a tremendous cost to society through
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
192 the cumbersome mechanisms necessary to figure out how much (that is,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
193 which programs) a person must pay for. And only a police state can
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
194 force everyone to obey them. Consider a space station where air must
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
195 be manufactured at great cost: charging each breather per liter of air
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
196 may be fair, but wearing the metered gas mask all day and all night is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
197 intolerable even if everyone can afford to pay the air bill. And the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
198 TV cameras everywhere to see if you ever take the mask off are
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
199 outrageous. It's better to support the air plant with a head tax and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
200 chuck the masks.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
201
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
202 Copying all or parts of a program is as natural to a programmer as
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
203 breathing, and as productive. It ought to be as free.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
204
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
205 Some Easily Rebutted Objections to GNU's Goals
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
206 ==============================================
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
207
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
208 "Nobody will use it if it is free, because that means they can't
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
209 rely on any support."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
210
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
211 "You have to charge for the program to pay for providing the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
212 support."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
213
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
214 If people would rather pay for GNU plus service than get GNU free
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
215 without service, a company to provide just service to people who have
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
216 obtained GNU free ought to be profitable.(3)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
217
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
218 We must distinguish between support in the form of real programming
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
219 work and mere handholding. The former is something one cannot rely on
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
220 from a software vendor. If your problem is not shared by enough
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
221 people, the vendor will tell you to get lost.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
222
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
223 If your business needs to be able to rely on support, the only way
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
224 is to have all the necessary sources and tools. Then you can hire any
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
225 available person to fix your problem; you are not at the mercy of any
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
226 individual. With Unix, the price of sources puts this out of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
227 consideration for most businesses. With GNU this will be easy. It is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
228 still possible for there to be no available competent person, but this
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
229 problem cannot be blamed on distribution arrangements. GNU does not
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
230 eliminate all the world's problems, only some of them.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
231
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
232 Meanwhile, the users who know nothing about computers need
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
233 handholding: doing things for them which they could easily do
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
234 themselves but don't know how.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
235
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
236 Such services could be provided by companies that sell just
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
237 hand-holding and repair service. If it is true that users would rather
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
238 spend money and get a product with service, they will also be willing
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
239 to buy the service having got the product free. The service companies
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
240 will compete in quality and price; users will not be tied to any
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
241 particular one. Meanwhile, those of us who don't need the service
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
242 should be able to use the program without paying for the service.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
243
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
244 "You cannot reach many people without advertising, and you must
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
245 charge for the program to support that."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
246
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
247 "It's no use advertising a program people can get free."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
248
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
249 There are various forms of free or very cheap publicity that can be
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
250 used to inform numbers of computer users about something like GNU. But
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
251 it may be true that one can reach more microcomputer users with
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
252 advertising. If this is really so, a business which advertises the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
253 service of copying and mailing GNU for a fee ought to be successful
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
254 enough to pay for its advertising and more. This way, only the users
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
255 who benefit from the advertising pay for it.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
256
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
257 On the other hand, if many people get GNU from their friends, and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
258 such companies don't succeed, this will show that advertising was not
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
259 really necessary to spread GNU. Why is it that free market advocates
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
260 don't want to let the free market decide this?(4)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
261
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
262 "My company needs a proprietary operating system to get a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
263 competitive edge."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
264
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
265 GNU will remove operating system software from the realm of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
266 competition. You will not be able to get an edge in this area, but
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
267 neither will your competitors be able to get an edge over you. You and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
268 they will compete in other areas, while benefiting mutually in this
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
269 one. If your business is selling an operating system, you will not
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
270 like GNU, but that's tough on you. If your business is something else,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
271 GNU can save you from being pushed into the expensive business of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
272 selling operating systems.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
273
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
274 I would like to see GNU development supported by gifts from many
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
275 manufacturers and users, reducing the cost to each.(5)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
276
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
277 "Don't programmers deserve a reward for their creativity?"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
278
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
279 If anything deserves a reward, it is social contribution.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
280 Creativity can be a social contribution, but only in so far as society
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
281 is free to use the results. If programmers deserve to be rewarded for
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
282 creating innovative programs, by the same token they deserve to be
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
283 punished if they restrict the use of these programs.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
284
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
285 "Shouldn't a programmer be able to ask for a reward for his
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
286 creativity?"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
287
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
288 There is nothing wrong with wanting pay for work, or seeking to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
289 maximize one's income, as long as one does not use means that are
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
290 destructive. But the means customary in the field of software today
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
291 are based on destruction.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
292
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
293 Extracting money from users of a program by restricting their use of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
294 it is destructive because the restrictions reduce the amount and the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
295 ways that the program can be used. This reduces the amount of wealth
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
296 that humanity derives from the program. When there is a deliberate
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
297 choice to restrict, the harmful consequences are deliberate destruction.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
298
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
299 The reason a good citizen does not use such destructive means to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
300 become wealthier is that, if everyone did so, we would all become
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
301 poorer from the mutual destructiveness. This is Kantian ethics; or,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
302 the Golden Rule. Since I do not like the consequences that result if
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
303 everyone hoards information, I am required to consider it wrong for one
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
304 to do so. Specifically, the desire to be rewarded for one's creativity
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
305 does not justify depriving the world in general of all or part of that
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
306 creativity.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
307
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
308 "Won't programmers starve?"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
309
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
310 I could answer that nobody is forced to be a programmer. Most of us
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
311 cannot manage to get any money for standing on the street and making
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
312 faces. But we are not, as a result, condemned to spend our lives
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
313 standing on the street making faces, and starving. We do something
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
314 else.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
315
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
316 But that is the wrong answer because it accepts the questioner's
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
317 implicit assumption: that without ownership of software, programmers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
318 cannot possibly be paid a cent. Supposedly it is all or nothing.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
319
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
320 The real reason programmers will not starve is that it will still be
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
321 possible for them to get paid for programming; just not paid as much as
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
322 now.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
323
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
324 Restricting copying is not the only basis for business in software.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
325 It is the most common basis because it brings in the most money. If it
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
326 were prohibited, or rejected by the customer, software business would
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
327 move to other bases of organization which are now used less often.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
328 There are always numerous ways to organize any kind of business.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
329
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
330 Probably programming will not be as lucrative on the new basis as it
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
331 is now. But that is not an argument against the change. It is not
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
332 considered an injustice that sales clerks make the salaries that they
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
333 now do. If programmers made the same, that would not be an injustice
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
334 either. (In practice they would still make considerably more than
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
335 that.)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
336
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
337 "Don't people have a right to control how their creativity is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
338 used?"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
339
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
340 "Control over the use of one's ideas" really constitutes control over
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
341 other people's lives; and it is usually used to make their lives more
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
342 difficult.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
343
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
344 People who have studied the issue of intellectual property rights
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
345 carefully (such as lawyers) say that there is no intrinsic right to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
346 intellectual property. The kinds of supposed intellectual property
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
347 rights that the government recognizes were created by specific acts of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
348 legislation for specific purposes.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
349
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
350 For example, the patent system was established to encourage
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
351 inventors to disclose the details of their inventions. Its purpose was
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
352 to help society rather than to help inventors. At the time, the life
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
353 span of 17 years for a patent was short compared with the rate of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
354 advance of the state of the art. Since patents are an issue only among
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
355 manufacturers, for whom the cost and effort of a license agreement are
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
356 small compared with setting up production, the patents often do not do
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
357 much harm. They do not obstruct most individuals who use patented
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
358 products.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
359
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
360 The idea of copyright did not exist in ancient times, when authors
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
361 frequently copied other authors at length in works of non-fiction. This
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
362 practice was useful, and is the only way many authors' works have
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
363 survived even in part. The copyright system was created expressly for
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
364 the purpose of encouraging authorship. In the domain for which it was
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
365 invented--books, which could be copied economically only on a printing
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
366 press--it did little harm, and did not obstruct most of the individuals
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
367 who read the books.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
368
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
369 All intellectual property rights are just licenses granted by society
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
370 because it was thought, rightly or wrongly, that society as a whole
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
371 would benefit by granting them. But in any particular situation, we
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
372 have to ask: are we really better off granting such license? What kind
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
373 of act are we licensing a person to do?
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
374
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
375 The case of programs today is very different from that of books a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
376 hundred years ago. The fact that the easiest way to copy a program is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
377 from one neighbor to another, the fact that a program has both source
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
378 code and object code which are distinct, and the fact that a program is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
379 used rather than read and enjoyed, combine to create a situation in
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
380 which a person who enforces a copyright is harming society as a whole
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
381 both materially and spiritually; in which a person should not do so
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
382 regardless of whether the law enables him to.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
383
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
384 "Competition makes things get done better."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
385
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
386 The paradigm of competition is a race: by rewarding the winner, we
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
387 encourage everyone to run faster. When capitalism really works this
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
388 way, it does a good job; but its defenders are wrong in assuming it
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
389 always works this way. If the runners forget why the reward is offered
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
390 and become intent on winning, no matter how, they may find other
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
391 strategies--such as, attacking other runners. If the runners get into
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
392 a fist fight, they will all finish late.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
393
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
394 Proprietary and secret software is the moral equivalent of runners
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
395 in a fist fight. Sad to say, the only referee we've got does not seem
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
396 to object to fights; he just regulates them ("For every ten yards you
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
397 run, you can fire one shot"). He really ought to break them up, and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
398 penalize runners for even trying to fight.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
399
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
400 "Won't everyone stop programming without a monetary incentive?"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
401
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
402 Actually, many people will program with absolutely no monetary
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
403 incentive. Programming has an irresistible fascination for some
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
404 people, usually the people who are best at it. There is no shortage of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
405 professional musicians who keep at it even though they have no hope of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
406 making a living that way.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
407
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
408 But really this question, though commonly asked, is not appropriate
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
409 to the situation. Pay for programmers will not disappear, only become
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
410 less. So the right question is, will anyone program with a reduced
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
411 monetary incentive? My experience shows that they will.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
412
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
413 For more than ten years, many of the world's best programmers worked
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
414 at the Artificial Intelligence Lab for far less money than they could
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
415 have had anywhere else. They got many kinds of non-monetary rewards:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
416 fame and appreciation, for example. And creativity is also fun, a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
417 reward in itself.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
418
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
419 Then most of them left when offered a chance to do the same
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
420 interesting work for a lot of money.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
421
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
422 What the facts show is that people will program for reasons other
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
423 than riches; but if given a chance to make a lot of money as well, they
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
424 will come to expect and demand it. Low-paying organizations do poorly
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
425 in competition with high-paying ones, but they do not have to do badly
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
426 if the high-paying ones are banned.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
427
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
428 "We need the programmers desperately. If they demand that we stop
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
429 helping our neighbors, we have to obey."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
430
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
431 You're never so desperate that you have to obey this sort of demand.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
432 Remember: millions for defense, but not a cent for tribute!
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
433
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
434 "Programmers need to make a living somehow."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
435
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
436 In the short run, this is true. However, there are plenty of ways
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
437 that programmers could make a living without selling the right to use a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
438 program. This way is customary now because it brings programmers and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
439 businessmen the most money, not because it is the only way to make a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
440 living. It is easy to find other ways if you want to find them. Here
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
441 are a number of examples.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
442
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
443 A manufacturer introducing a new computer will pay for the porting of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
444 operating systems onto the new hardware.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
445
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
446 The sale of teaching, hand-holding and maintenance services could
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
447 also employ programmers.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
448
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
449 People with new ideas could distribute programs as freeware, asking
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
450 for donations from satisfied users, or selling hand-holding services.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
451 I have met people who are already working this way successfully.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
452
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
453 Users with related needs can form users' groups, and pay dues. A
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
454 group would contract with programming companies to write programs that
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
455 the group's members would like to use.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
456
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
457 All sorts of development can be funded with a Software Tax:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
458
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
459 Suppose everyone who buys a computer has to pay x percent of the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
460 price as a software tax. The government gives this to an agency
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
461 like the NSF to spend on software development.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
462
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
463 But if the computer buyer makes a donation to software development
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
464 himself, he can take a credit against the tax. He can donate to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
465 the project of his own choosing--often, chosen because he hopes to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
466 use the results when it is done. He can take a credit for any
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
467 amount of donation up to the total tax he had to pay.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
468
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
469 The total tax rate could be decided by a vote of the payers of the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
470 tax, weighted according to the amount they will be taxed on.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
471
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
472 The consequences:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
473
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
474 * The computer-using community supports software development.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
475
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
476 * This community decides what level of support is needed.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
477
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
478 * Users who care which projects their share is spent on can
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
479 choose this for themselves.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
480
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
481 In the long run, making programs free is a step toward the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
482 post-scarcity world, where nobody will have to work very hard just to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
483 make a living. People will be free to devote themselves to activities
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
484 that are fun, such as programming, after spending the necessary ten
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
485 hours a week on required tasks such as legislation, family counseling,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
486 robot repair and asteroid prospecting. There will be no need to be
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
487 able to make a living from programming.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
488
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
489 We have already greatly reduced the amount of work that the whole
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
490 society must do for its actual productivity, but only a little of this
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
491 has translated itself into leisure for workers because much
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
492 nonproductive activity is required to accompany productive activity.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
493 The main causes of this are bureaucracy and isometric struggles against
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
494 competition. Free software will greatly reduce these drains in the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
495 area of software production. We must do this, in order for technical
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
496 gains in productivity to translate into less work for us.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
497
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
498 ---------- Footnotes ----------
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
499
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
500 (1) The wording here was careless. The intention was that nobody
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
501 would have to pay for *permission* to use the GNU system. But the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
502 words don't make this clear, and people often interpret them as saying
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
503 that copies of GNU should always be distributed at little or no charge.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
504 That was never the intent; later on, the manifesto mentions the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
505 possibility of companies providing the service of distribution for a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
506 profit. Subsequently I have learned to distinguish carefully between
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
507 "free" in the sense of freedom and "free" in the sense of price. Free
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
508 software is software that users have the freedom to distribute and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
509 change. Some users may obtain copies at no charge, while others pay to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
510 obtain copies--and if the funds help support improving the software, so
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
511 much the better. The important thing is that everyone who has a copy
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
512 has the freedom to cooperate with others in using it.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
513
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
514 (2) This is another place I failed to distinguish carefully between
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
515 the two different meanings of "free". The statement as it stands is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
516 not false--you can get copies of GNU software at no charge, from your
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
517 friends or over the net. But it does suggest the wrong idea.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
518
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
519 (3) Several such companies now exist.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
520
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
521 (4) The Free Software Foundation raises most of its funds from a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
522 distribution service, although it is a charity rather than a company.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
523 If *no one* chooses to obtain copies by ordering the from the FSF, it
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
524 will be unable to do its work. But this does not mean that proprietary
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
525 restrictions are justified to force every user to pay. If a small
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
526 fraction of all the users order copies from the FSF, that is sufficient
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
527 to keep the FSF afloat. So we ask users to choose to support us in
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
528 this way. Have you done your part?
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
529
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
530 (5) A group of computer companies recently pooled funds to support
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
531 maintenance of the GNU C Compiler.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
532