Annotation of 43BSDReno/contrib/emacs-18.55/info/emacs-11, revision 1.1

1.1     ! root        1: Info file emacs, produced by texinfo-format-buffer   -*-Text-*-
        !             2: from file emacs.tex
        !             3: 
        !             4: This file documents the GNU Emacs editor.
        !             5: 
        !             6: Copyright (C) 1985, 1986 Richard M. Stallman.
        !             7: 
        !             8: Permission is granted to make and distribute verbatim copies of
        !             9: this manual provided the copyright notice and this permission notice
        !            10: are preserved on all copies.
        !            11: 
        !            12: Permission is granted to copy and distribute modified versions of this
        !            13: manual under the conditions for verbatim copying, provided also that the
        !            14: sections entitled "The GNU Manifesto", "Distribution" and "GNU Emacs
        !            15: General Public License" are included exactly as in the original, and
        !            16: provided that the entire resulting derived work is distributed under the
        !            17: terms of a permission notice identical to this one.
        !            18: 
        !            19: Permission is granted to copy and distribute translations of this manual
        !            20: into another language, under the above conditions for modified versions,
        !            21: except that the sections entitled "The GNU Manifesto", "Distribution"
        !            22: and "GNU Emacs General Public License" may be included in a translation
        !            23: approved by the author instead of in the original English.
        !            24: 
        !            25: 
        !            26: File: emacs  Node: Syntax Change, Prev: Syntax Entry, Up: Syntax
        !            27: 
        !            28: Altering Syntax Information
        !            29: ---------------------------
        !            30: 
        !            31:   It is possible to alter a character's syntax table entry by storing a new
        !            32: number in the appropriate element of the syntax table, but it would be hard
        !            33: to determine what number to use.  Therefore, Emacs provides a command that
        !            34: allows you to specify the syntactic properties of a character in a
        !            35: convenient way.
        !            36: 
        !            37:   `M-x modify-syntax-entry' is the command to change a character's
        !            38: syntax.  It can be used interactively, and is also the means used by major
        !            39: modes to initialize their own syntax tables.  Its first argument is the
        !            40: character to change.  The second argument is a string that specifies the
        !            41: new syntax.  When called from Lisp code, there is a third, optional
        !            42: argument, which specifies the syntax table in which to make the change.  If
        !            43: not supplied, or if this command is called interactively, the third
        !            44: argument defaults to the current buffer's syntax table.
        !            45: 
        !            46:   1. The first character in the string specifies the syntactic class.  It
        !            47:      is one of the characters in the previous table (*Note Syntax Entry::).
        !            48:      
        !            49:   2. The second character is the matching delimiter.  For a character that
        !            50:      is not an opening or closing delimiter, this should be a space, and may
        !            51:      be omitted if no following characters are needed.
        !            52:      
        !            53:   3. The remaining characters are flags.  The flag characters allowed are
        !            54:      
        !            55:      `1'     
        !            56:           Flag this character as the first of a two-character comment starting sequence.
        !            57:      `2'     
        !            58:           Flag this character as the second of a two-character comment starting sequence.
        !            59:      `3'     
        !            60:           Flag this character as the first of a two-character comment ending sequence.
        !            61:      `4'     
        !            62:           Flag this character as the second of a two-character comment ending sequence.
        !            63: 
        !            64:   A description of the contents of the current syntax table can be
        !            65: displayed with `C-h s' (`describe-syntax').  The description of
        !            66: each character includes both the string you would have to give to
        !            67: `modify-syntax-entry' to set up that character's current syntax, and
        !            68: some English to explain that string if necessary.
        !            69: 
        !            70: 
        !            71: File: emacs  Node: Init File, Prev: Syntax, Up: Customization
        !            72: 
        !            73: The Init File, .emacs
        !            74: =====================
        !            75: 
        !            76:   When Emacs is started, it normally loads the file `.emacs' in your
        !            77: home directory.  This file, if it exists, should contain Lisp code.  It is
        !            78: called your "init file".  The command line switches `-q' and
        !            79: `-u' can be used to tell Emacs whether to load an init file
        !            80: (*Note Entering Emacs::).
        !            81: 
        !            82:   There can also be a "default init file", which is the library named
        !            83: `default.el', found via the standard search path for libraries.  The
        !            84: Emacs distribution contains no such library; your site may create one for
        !            85: local customizations.  If this library exists, it is loaded whenever you
        !            86: start Emacs.  But your init file, if any, is loaded first; if it sets
        !            87: `inhibit-default-init' non-`nil', then `default' is not
        !            88: loaded.
        !            89: 
        !            90:   If you have a large amount of code in your `.emacs' file, you
        !            91: should move it into another file named `SOMETHING.el',
        !            92: byte-compile it (*Note Lisp Libraries::), and make your `.emacs'
        !            93: file load the other file using `load'.
        !            94: 
        !            95: * Menu:
        !            96: 
        !            97: * Init Syntax::     Syntax of constants in Emacs Lisp.
        !            98: * Init Examples::   How to do some things with an init file.
        !            99: * Terminal Init::   Each terminal type can have an init file.
        !           100: 
        !           101: 
        !           102: File: emacs  Node: Init Syntax, Prev: Init File, Up: Init File, Next: Init Examples
        !           103: 
        !           104: Init File Syntax
        !           105: ----------------
        !           106: 
        !           107:   The `.emacs' file contains one or more Lisp function call
        !           108: expressions.  Each of these consists of a function name followed by
        !           109: arguments, all surrounded by parentheses.  For example, `(setq
        !           110: fill-column 60)' represents a call to the function `setq' which is
        !           111: used to set the variable `fill-column' (*Note Filling::) to 60.
        !           112: 
        !           113:   The second argument to `setq' is an expression for the new value of
        !           114: the variable.  This can be a constant, a variable, or a function call
        !           115: expression.  In `.emacs', constants are used most of the time.  They can be:
        !           116: 
        !           117: Numbers:     
        !           118:      Numbers are written in decimal, with an optional initial minus sign.
        !           119:      
        !           120: Strings:     
        !           121:      Lisp string syntax is the same as C string syntax with a few extra
        !           122:      features.  Use a double-quote character to begin and end a string constant.
        !           123:      
        !           124:      Newlines and special characters may be present literally in strings.  They
        !           125:      can also be represented as backslash sequences: `\n' for newline,
        !           126:      `\b' for backspace, `\r' for carriage return, `\t' for tab,
        !           127:      `\f' for formfeed (control-l), `\e' for escape, `\\' for a
        !           128:      backslash, `\"' for a double-quote, or `\OOO' for the
        !           129:      character whose octal code is OOO.  Backslash and double-quote are
        !           130:      the only characters for which backslash sequences are mandatory.
        !           131:      
        !           132:      `\C-' can be used as a prefix for a control character, as in `\C-s'
        !           133:      for ASCII Control-S, and `\M-' can be used as a prefix for a meta
        !           134:      character, as in `\M-a' for Meta-A or `\M-\C-a' for Control-Meta-A.
        !           135:      
        !           136: Characters:     
        !           137:      Lisp character constant syntax consists of a `?' followed by
        !           138:      either a character or an escape sequence starting with `\'.
        !           139:      Examples: `?x', `?\n', `?\"', `?\)'.  Note that
        !           140:      strings and characters are not interchangeable in Lisp; some contexts
        !           141:      require one and some contexts require the other.
        !           142:      
        !           143: True:     
        !           144:      `t' stands for `true'.
        !           145:      
        !           146: False:     
        !           147:      `nil' stands for `false'.
        !           148:      
        !           149: Other Lisp objects:     
        !           150:      Write a single-quote (') followed by the Lisp object you want.
        !           151: 
        !           152: 
        !           153: File: emacs  Node: Init Examples, Prev: Init Syntax, Up: Init File, Next: Terminal Init
        !           154: 
        !           155: Init File Examples
        !           156: ------------------
        !           157: 
        !           158:   Here are some examples of doing certain commonly desired things with
        !           159: Lisp expressions:
        !           160: 
        !           161:    * Make TAB in C mode just insert a tab if point is in the middle of a
        !           162:      line.
        !           163:      
        !           164:           (setq c-tab-always-indent nil)
        !           165:      
        !           166:      Here we have a variable whose value is normally `t' for `true'
        !           167:      and the alternative is `nil' for `false'.
        !           168:      
        !           169:    * Make searches case sensitive by default (in all buffers that do not
        !           170:      override this).
        !           171:      
        !           172:           (setq-default case-fold-search nil)
        !           173:      
        !           174:      This sets the default value, which is effective in all buffers that do
        !           175:      not have local values for the variable.  Setting `case-fold-search'
        !           176:      with `setq' affects only the current buffer's local value, which
        !           177:      is not what you probably want to do in an init file.
        !           178:      
        !           179:    * Make Text mode the default mode for new buffers.
        !           180:      
        !           181:           (setq default-major-mode 'text-mode)
        !           182:      
        !           183:      Note that `text-mode' is used because it is the command for entering
        !           184:      the mode we want.  A single-quote is written before it to make a symbol
        !           185:      constant; otherwise, `text-mode' would be treated as a variable name.
        !           186:      
        !           187:    * Turn on Auto Fill mode automatically in Text mode and related modes.
        !           188:      
        !           189:           (setq text-mode-hook
        !           190:             '(lambda () (auto-fill-mode 1)))
        !           191:      
        !           192:      Here we have a variable whose value should be a Lisp function.  The
        !           193:      function we supply is a list starting with `lambda', and a single
        !           194:      quote is written in front of it to make it (for the purpose of this
        !           195:      `setq') a list constant rather than an expression.  Lisp functions
        !           196:      are not explained here, but for mode hooks it is enough to know that
        !           197:      `(auto-fill-mode 1)' is an expression that will be executed when
        !           198:      Text mode is entered, and you could replace it with any other expression
        !           199:      that you like, or with several expressions in a row.
        !           200:      
        !           201:           (setq text-mode-hook 'turn-on-auto-fill)
        !           202:      
        !           203:      This is another way to accomplish the same result.
        !           204:      `turn-on-auto-fill' is a symbol whose function definition is
        !           205:      `(lambda () (auto-fill-mode 1))'.
        !           206:      
        !           207:    * Load the installed Lisp library named `foo' (actually a file
        !           208:      `foo.elc' or `foo.el' in a standard Emacs directory).
        !           209:      
        !           210:           (load "foo")
        !           211:      
        !           212:      When the argument to `load' is a relative pathname, not starting
        !           213:      with `/' or `~', `load' searches the directories in
        !           214:      `load-path' (*Note Loading::).
        !           215:      
        !           216:    * Load the compiled Lisp file `foo.elc' from your home directory.
        !           217:      
        !           218:           (load "~/foo.elc")
        !           219:      
        !           220:      Here an absolute file name is used, so no searching is done.
        !           221:      
        !           222:    * Rebind the key `C-x l' to run the function `make-symbolic-link'.
        !           223:      
        !           224:           (global-set-key "\C-xl" 'make-symbolic-link)
        !           225:      
        !           226:      or
        !           227:      
        !           228:           (define-key global-map "\C-xl" 'make-symbolic-link)
        !           229:      
        !           230:      Note once again the single-quote used to refer to the symbol
        !           231:      `make-symbolic-link' instead of its value as a variable.
        !           232:      
        !           233:    * Do the same thing for C mode only.
        !           234:      
        !           235:           (define-key c-mode-map "\C-xl" 'make-symbolic-link)
        !           236:      
        !           237:    * Redefine all keys which now run `next-line' in Fundamental mode
        !           238:      so that they run `forward-line' instead.
        !           239:      
        !           240:           (substitute-key-definition 'next-line 'forward-line
        !           241:                                      global-map)
        !           242:      
        !           243:    * Make `C-x C-v' undefined.
        !           244:      
        !           245:           (global-unset-key "\C-x\C-v")
        !           246:      
        !           247:      One reason to undefine a key is so that you can make it a prefix.
        !           248:      Simply defining `C-x C-v ANYTHING' would make `C-x C-v'
        !           249:      a prefix, but `C-x C-v' must be freed of any non-prefix definition
        !           250:      first.
        !           251:      
        !           252:    * Make `$' have the syntax of punctuation in Text mode.
        !           253:      Note the use of a character constant for `$'.
        !           254:      
        !           255:           (modify-syntax-entry ?\$ "." text-mode-syntax-table)
        !           256:      
        !           257:    * Enable the use of the command `eval-expression' without confirmation.
        !           258:      
        !           259:           (put 'eval-expression 'disabled nil)
        !           260: 
        !           261: 
        !           262: File: emacs  Node: Terminal Init, Prev: Init Examples, Up: Init File
        !           263: 
        !           264: Terminal-specific Initialization
        !           265: --------------------------------
        !           266: 
        !           267:   Each terminal type can have a Lisp library to be loaded into Emacs when
        !           268: it is run on that type of terminal.  For a terminal type named TERMTYPE,
        !           269: the library is called `term/TERMTYPE' and it is found by searching the
        !           270: directories `load-path' as usual and trying the suffixes `.elc' and `.el'.
        !           271: Normally it appears in the subdirectory `term' of the directory where most
        !           272: Emacs libraries are kept.
        !           273: 
        !           274:   The usual purpose of the terminal-specific library is to define the
        !           275: escape sequences used by the terminal's function keys using the library
        !           276: `keypad.el'.  See the file `term/vt100.el' for an example of how this is
        !           277: done.
        !           278: 
        !           279:   When the terminal type contains a hyphen, only the part of the name
        !           280: before the first hyphen is significant in choosing the library name.  Thus,
        !           281: terminal types `aaa-48' and `aaa-30-rv' both use the library `term/aaa'.
        !           282: The code in the library can use `(getenv "TERM")' to find the full terminal
        !           283: type name.
        !           284: 
        !           285:   The library's name is constructed by concatenating the value of the
        !           286: variable `term-file-prefix' and the terminal type.  Your `.emacs'
        !           287: file can prevent the loading of the terminal-specific library by setting
        !           288: `term-file-prefix' to `nil'.
        !           289: 
        !           290:   The value of the variable `term-setup-hook', if not `nil', is called as a
        !           291: function of no arguments at the end of Emacs initialization, after both
        !           292: your `.emacs' file and any terminal-specific library have been read in.
        !           293: You can set the value in the `.emacs' file to override part of any of the
        !           294: terminal-specific libraries and to define initializations for terminals
        !           295: that do not have a library.
        !           296: 
        !           297: 
        !           298: 
        !           299: File: emacs  Node: Quitting, Prev: Customization, Up: Top, Next: Lossage
        !           300: 
        !           301: Quitting and Aborting
        !           302: =====================
        !           303: 
        !           304: `C-g'     
        !           305:      Quit.  Cancel running or partially typed command.
        !           306: `C-]'     
        !           307:      Abort innermost recursive editing level and cancel the command which
        !           308:      invoked it (`abort-recursive-edit').
        !           309: `M-x top-level'     
        !           310:      Abort all recursive editing levels that are currently executing.
        !           311: `C-x u'     
        !           312:      Cancel an already-executed command, usually (`undo').
        !           313: 
        !           314:   There are two ways of cancelling commands which are not finished
        !           315: executing: "quitting" with `C-g', and "aborting" with `C-]'
        !           316: or `M-x top-level'.  Quitting is cancelling a partially typed command
        !           317: or one which is already running.  Aborting is getting out of a recursive
        !           318: editing level and cancelling the command that invoked the recursive edit.
        !           319: 
        !           320:   Quitting with `C-g' is used for getting rid of a partially typed
        !           321: command, or a numeric argument that you don't want.  It also stops a
        !           322: running command in the middle in a relatively safe way, so you can use it
        !           323: if you accidentally give a command which takes a long time.  In particular,
        !           324: it is safe to quit out of killing; either your text will ALL still be
        !           325: there, or it will ALL be in the kill ring (or maybe both).  Quitting
        !           326: an incremental search does special things documented under searching; in
        !           327: general, it may take two successive `C-g' characters to get out of a
        !           328: search.  `C-g' works by setting the variable `quit-flag' to
        !           329: `t' the instant `C-g' is typed; Emacs Lisp checks this variable
        !           330: frequently and quits if it is non-`nil'.  `C-g' is only actually
        !           331: executed as a command if it is typed while Emacs is waiting for input.
        !           332: 
        !           333:   If you quit twice in a row before the first `C-g' is recognized, you
        !           334: activate the "emergency escape" feature and return to the shell.
        !           335: *Note Emergency Escape::.
        !           336: 
        !           337:   Aborting with `C-]' (`abort-recursive-edit') is used to get out
        !           338: of a recursive editing level and cancel the command which invoked it.
        !           339: Quitting with `C-g' does not do this, and could not do this, because it
        !           340: is used to cancel a partially typed command within the recursive
        !           341: editing level.  Both operations are useful.  For example, if you are in the
        !           342: Emacs debugger (*Note Lisp Debug::) and have typed `C-u 8' to enter a
        !           343: numeric argument, you can cancel that argument with `C-g' and remain in
        !           344: the debugger.
        !           345: 
        !           346:   The command `M-x top-level' is equivalent to "enough" `C-]'
        !           347: commands to get you out of all the levels of recursive edits that you are
        !           348: in.  `C-]' gets you out one level at a time, but `M-x top-level'
        !           349: goes out all levels at once.  Both `C-]' and `M-x top-level' are
        !           350: like all other commands, and unlike `C-g', in that they are effective
        !           351: only when Emacs is ready for a command.  `C-]' is an ordinary key and
        !           352: has its meaning only because of its binding in the keymap.
        !           353: *Note Recursive Edit::.
        !           354: 
        !           355:   `C-x u' (`undo') is not strictly speaking a way of cancelling a
        !           356: command, but you can think of it as cancelling a command already finished
        !           357: executing.  *Note Undo::.
        !           358: 
        !           359: 
        !           360: File: emacs  Node: Lossage, Prev: Quitting, Up: Top, Next: Bugs
        !           361: 
        !           362: Dealing with Emacs Trouble
        !           363: ==========================
        !           364: 
        !           365:   This section describes various conditions in which Emacs fails to work,
        !           366: and how to recognize them and correct them.
        !           367: 
        !           368: * Menu:
        !           369: 
        !           370: * Stuck Recursive::    `[...]' in mode line around the parentheses
        !           371: * Screen Garbled::     Garbage on the screen
        !           372: * Text Garbled::       Garbage in the text
        !           373: * Unasked-for Search:: Spontaneous entry to incremental search
        !           374: * Emergency Escape::   Emergency escape---
        !           375:                         What to do if Emacs stops responding
        !           376: * Total Frustration::  When you are at your wits' end.
        !           377: 
        !           378: 
        !           379: File: emacs  Node: Stuck Recursive, Prev: Lossage, Up: Lossage, Next: Screen Garbled
        !           380: 
        !           381: Recursive Editing Levels
        !           382: ------------------------
        !           383: 
        !           384:   Recursive editing levels are important and useful features of Emacs, but
        !           385: they can seem like malfunctions to the user who does not understand them.
        !           386: 
        !           387:   If the mode line has square brackets `[...]' around the parentheses
        !           388: that contain the names of the major and minor modes, you have entered a
        !           389: recursive editing level.  If you did not do this on purpose, or if you
        !           390: don't understand what that means, you should just get out of the recursive
        !           391: editing level.  To do so, type `M-x top-level'.  This is called getting
        !           392: back to top level.  *Note Recursive Edit::.
        !           393: 
        !           394: 
        !           395: File: emacs  Node: Screen Garbled, Prev: Stuck Recursive, Up: Lossage, Next: Text Garbled
        !           396: 
        !           397: Garbage on the Screen
        !           398: ---------------------
        !           399: 
        !           400:   If the data on the screen looks wrong, the first thing to do is see
        !           401: whether the text is really wrong.  Type `C-l', to redisplay the entire
        !           402: screen.  If it appears correct after this, the problem was entirely in the
        !           403: previous screen update.
        !           404: 
        !           405:   Display updating problems often result from an incorrect termcap entry
        !           406: for the terminal you are using.  The file `etc/TERMS' in the Emacs
        !           407: distribution gives the fixes for known problems of this sort.
        !           408: `INSTALL' contains general advice for these problems in one of its
        !           409: sections.  Very likely there is simply insufficient padding for certain
        !           410: display operations.  To investigate the possibility that you have this sort
        !           411: of problem, try Emacs on another terminal made by a different manufacturer.
        !           412: If problems happen frequently on one kind of terminal but not another kind,
        !           413: it is likely to be a bad termcap entry, though it could also be due to a
        !           414: bug in Emacs that appears for terminals that have or that lack specific
        !           415: features.
        !           416: 
        !           417: 
        !           418: File: emacs  Node: Text Garbled, Prev: Screen Garbled, Up: Lossage, Next: Unasked-for Search
        !           419: 
        !           420: Garbage in the Text
        !           421: -------------------
        !           422: 
        !           423:   If `C-l' shows that the text is wrong, try undoing the changes to it
        !           424: using `C-x u' until it gets back to a state you consider correct.  Also
        !           425: try `C-h l' to find out what command you typed to produce the observed
        !           426: results.
        !           427: 
        !           428:   If a large portion of text appears to be missing at the beginning or
        !           429: end of the buffer, check for the word `Narrow' in the mode line.
        !           430: If it appears, the text is still present, but marked off-limits.
        !           431: To make it visible again, type `C-x w'.  *Note Narrowing::.
        !           432: 
        !           433: 
        !           434: File: emacs  Node: Unasked-for Search, Prev: Text Garbled, Up: Lossage, Next: Emergency Escape
        !           435: 
        !           436: Spontaneous Entry to Incremental Search
        !           437: ---------------------------------------
        !           438: 
        !           439:   If Emacs spontaneously displays `I-search:' at the bottom of the
        !           440: screen, it means that the terminal is sending `C-s' and `C-q'
        !           441: according to the poorly designed xon/xoff "flow control" protocol.  You
        !           442: should try to prevent this by putting the terminal in a mode where it will
        !           443: not use flow control or giving it enough padding that it will never send a
        !           444: `C-s'.  If that cannot be done, you must tell Emacs to expect flow
        !           445: control to be used, until you can get a properly designed terminal.
        !           446: 
        !           447:   Information on how to do these things can be found in the file
        !           448: `INSTALL' in the Emacs distribution.
        !           449: 
        !           450: 
        !           451: File: emacs  Node: Emergency Escape, Prev: Unasked-for Search, Up: Lossage, Next: Total Frustration
        !           452: 
        !           453: Emergency Escape
        !           454: ----------------
        !           455: 
        !           456:   Because at times there have been bugs causing Emacs to loop without
        !           457: checking `quit-flag', a special feature causes Emacs to be suspended
        !           458: immediately if you type a second `C-g' while the flag is already set,
        !           459: so you can always get out of GNU Emacs.  Normally Emacs recognizes and
        !           460: clears `quit-flag' (and quits!) quickly enough to prevent this from
        !           461: happening.
        !           462: 
        !           463:   When you resume Emacs after a suspension caused by multiple `C-g', it
        !           464: asks two questions before going back to what it had been doing:
        !           465: 
        !           466:      Auto-save? (y or n)
        !           467:      Abort (and dump core)? (y or n)
        !           468: 
        !           469: Answer each one with `y' or `n' followed by RET.
        !           470: 
        !           471:   Saying `y' to `Auto-save?' causes immediate auto-saving of all
        !           472: modified buffers in which auto-saving is enabled.
        !           473: 
        !           474:   Saying `y' to `Abort (and dump core)?' causes an illegal instruction to be
        !           475: executed, dumping core.  This is to enable a wizard to figure out why Emacs
        !           476: was failing to quit in the first place.  Execution does not continue
        !           477: after a core dump.  If you answer `n', execution does continue.  With
        !           478: luck, GNU Emacs will ultimately check `quit-flag' and quit normally.
        !           479: If not, and you type another `C-g', it is suspended again.
        !           480: 
        !           481:   If Emacs is not really hung, just slow, you may invoke the double
        !           482: `C-g' feature without really meaning to.  Then just resume and answer
        !           483: `n' to both questions, and you will arrive at your former state.
        !           484: Presumably the quit you requested will happen soon.
        !           485: 
        !           486:   The double-`C-g' feature may be turned off when Emacs is running under
        !           487: a window system, since the window system always enables you to kill Emacs
        !           488: or to create another window and run another program.
        !           489: 
        !           490: 
        !           491: File: emacs  Node: Total Frustration, Prev: Emergency Escape, Up: Lossage
        !           492: 
        !           493: Help for Total Frustration
        !           494: --------------------------
        !           495: 
        !           496:   If using Emacs (or something else) becomes terribly frustrating and none
        !           497: of the techniques described above solve the problem, Emacs can still help
        !           498: you.
        !           499: 
        !           500:   First, if the Emacs you are using is not responding to commands, type
        !           501: `C-g C-g' to get out of it and then start a new one.
        !           502: 
        !           503:   Second, type `M-x doctor RET'.
        !           504: 
        !           505:   The doctor will make you feel better.  Each time you say something to
        !           506: the doctor, you must end it by typing RET RET.  This lets the
        !           507: doctor know you are finished.
        !           508: 
        !           509: 
        !           510: File: emacs  Node: Bugs, Prev: Lossage, Up: Top, Next: Manifesto
        !           511: 
        !           512: Reporting Bugs
        !           513: ==============
        !           514: 
        !           515:   Sometimes you will encounter a bug in Emacs.  Although we cannot promise
        !           516: we can or will fix the bug, and we might not even agree that it is a bug,
        !           517: we want to hear about bugs you encounter in case we do want to fix them.
        !           518: 
        !           519:   To make it possible for us to fix a bug, you must report it.  In order
        !           520: to do so effectively, you must know when and how to do it.
        !           521: 
        !           522: 
        !           523: When Is There a Bug
        !           524: -------------------
        !           525: 
        !           526:   If Emacs executes an illegal instruction, or dies with an operating
        !           527: system error message that indicates a problem in the program (as opposed to
        !           528: something like "disk full"), then it is certainly a bug.
        !           529: 
        !           530:   If Emacs updates the display in a way that does not correspond to what is
        !           531: in the buffer, then it is certainly a bug.  If a command seems to do the
        !           532: wrong thing but the problem corrects itself if you type `C-l', it is a
        !           533: case of incorrect display updating.
        !           534: 
        !           535:   Taking forever to complete a command can be a bug, but you must make
        !           536: certain that it was really Emacs's fault.  Some commands simply take a long
        !           537: time.  Type `C-g' and then `C-h l' to see whether the input Emacs
        !           538: received was what you intended to type; if the input was such that you
        !           539: KNOW it should have been processed quickly, report a bug.  If you
        !           540: don't know whether the command should take a long time, find out by looking
        !           541: in the manual or by asking for assistance.
        !           542: 
        !           543:   If a command you are familiar with causes an Emacs error message in a
        !           544: case where its usual definition ought to be reasonable, it is probably a
        !           545: bug.
        !           546: 
        !           547:   If a command does the wrong thing, that is a bug.  But be sure you know
        !           548: for certain what it ought to have done.  If you aren't familiar with the
        !           549: command, or don't know for certain how the command is supposed to work,
        !           550: then it might actually be working right.  Rather than jumping to
        !           551: conclusions, show the problem to someone who knows for certain.
        !           552: 
        !           553:   Finally, a command's intended definition may not be best for editing
        !           554: with.  This is a very important sort of problem, but it is also a matter of
        !           555: judgment.  Also, it is easy to come to such a conclusion out of ignorance
        !           556: of some of the existing features.  It is probably best not to complain
        !           557: about such a problem until you have checked the documentation in the usual
        !           558: ways, feel confident that you understand it, and know for certain that what
        !           559: you want is not available.  If you are not sure what the command is
        !           560: supposed to do after a careful reading of the manual, check the index and
        !           561: glossary for any terms that may be unclear.  If you still do not
        !           562: understand, this indicates a bug in the manual.  The manual's job is to
        !           563: make everything clear.  It is just as important to report documentation
        !           564: bugs as program bugs.
        !           565: 
        !           566:   If the on-line documentation string of a function or variable disagrees
        !           567: with the manual, one of them must be wrong, so report the bug.
        !           568: 
        !           569: 
        !           570: How to Report a Bug
        !           571: -------------------
        !           572: 
        !           573:   When you decide that there is a bug, it is important to report it and to
        !           574: report it in a way which is useful.  What is most useful is an exact
        !           575: description of what commands you type, starting with the shell command to
        !           576: run Emacs, until the problem happens.  Always include the version number
        !           577: of Emacs that you are using; type `M-x emacs-version' to print this.
        !           578: 
        !           579:   The most important principle in reporting a bug is to report FACTS,
        !           580: not hypotheses or categorizations.  It is always easier to report the facts,
        !           581: but people seem to prefer to strain to posit explanations and report
        !           582: them instead.  If the explanations are based on guesses about how Emacs is
        !           583: implemented, they will be useless; we will have to try to figure out what
        !           584: the facts must have been to lead to such speculations.  Sometimes this is
        !           585: impossible.  But in any case, it is unnecessary work for us.
        !           586: 
        !           587:   For example, suppose that you type `C-x C-f /glorp/baz.ugh
        !           588: RET', visiting a file which (you know) happens to be rather large,
        !           589: and Emacs prints out `I feel pretty today'.  The best way to report
        !           590: the bug is with a sentence like the preceding one, because it gives all the
        !           591: facts and nothing but the facts.
        !           592: 
        !           593:   Do not assume that the problem is due to the size of the file and say,
        !           594: "When I visit a large file, Emacs prints out `I feel pretty today'."
        !           595: This is what we mean by "guessing explanations".  The problem is just as
        !           596: likely to be due to the fact that there is a `z' in the file name.  If
        !           597: this is so, then when we got your report, we would try out the problem with
        !           598: some "large file", probably with no `z' in its name, and not find
        !           599: anything wrong.  There is no way in the world that we could guess that we
        !           600: should try visiting a file with a `z' in its name.
        !           601: 
        !           602:   Alternatively, the problem might be due to the fact that the file starts
        !           603: with exactly 25 spaces.  For this reason, you should make sure that you
        !           604: inform us of the exact contents of any file that is needed to reproduce the
        !           605: bug.  What if the problem only occurs when you have typed the `C-x C-a'
        !           606: command previously?  This is why we ask you to give the exact sequence of
        !           607: characters you typed since starting to use Emacs.
        !           608: 
        !           609:   You should not even say "visit a file" instead of `C-x C-f' unless you
        !           610: know that it makes no difference which visiting command is used.
        !           611: Similarly, rather than saying "if I have three characters on the line," say
        !           612: "after I type `RET A B C RET C-p'," if that is the way you entered the
        !           613: text.
        !           614: 
        !           615:   If you are not in Fundamental mode when the problem occurs, you should
        !           616: say what mode you are in.
        !           617: 
        !           618:   If the manifestation of the bug is an Emacs error message, it is
        !           619: important to report not just the text of the error message but a backtrace
        !           620: showing how the Lisp program in Emacs arrived at the error.  To make the
        !           621: backtrace, you must execute the Lisp expression `(setq debug-on-error t)'
        !           622: before the error happens (that is to say, you must execute that expression
        !           623: and then make the bug happen).  This causes the Lisp debugger to run
        !           624: (*Note Lisp Debug::).  The debugger's backtrace can be copied as text into
        !           625: the bug report.  This use of the debugger is possible only if you know how
        !           626: to make the bug happen again.  Do note the error message the first time the
        !           627: bug happens, so if you can't make it happen again, you can report at least
        !           628: that.
        !           629: 
        !           630:   Check whether any programs you have loaded into the Lisp world, including
        !           631: your `.emacs' file, set any variables that may affect the functioning
        !           632: of Emacs.  Also, see whether the problem happens in a freshly started Emacs
        !           633: without loading your `.emacs' file (start Emacs with the `-q' switch
        !           634: to prevent loading the init file.)  If the problem does NOT occur
        !           635: then, it is essential that we know the contents of any programs that you
        !           636: must load into the Lisp world in order to cause the problem to occur.
        !           637: 
        !           638:   If the problem does depend on an init file or other Lisp programs that
        !           639: are not part of the standard Emacs system, then you should make sure it is
        !           640: not a bug in those programs by complaining to their maintainers first.
        !           641: After they verify that they are using Emacs in a way that is supposed to
        !           642: work, they should report the bug.
        !           643: 
        !           644:   If you can tell us a way to cause the problem without visiting any files,
        !           645: please do so.  This makes it much easier to debug.  If you do need files,
        !           646: make sure you arrange for us to see their exact contents.  For example, it
        !           647: can often matter whether there are spaces at the ends of lines, or a
        !           648: newline after the last line in the buffer (nothing ought to care whether
        !           649: the last line is terminated, but tell that to the bugs).
        !           650: 
        !           651:   The easy way to record the input to Emacs precisely is to to write a
        !           652: dribble file; execute the Lisp expression
        !           653: 
        !           654:      (open-dribble-file "~/dribble")
        !           655: 
        !           656: using `Meta-ESC' or from the `*scratch*' buffer just after starting
        !           657: Emacs.  From then on, all Emacs input will be written in the specified
        !           658: dribble file until the Emacs process is killed.
        !           659: 
        !           660:   For possible display bugs, it is important to report the terminal type
        !           661: (the value of environment variable `TERM'), the complete termcap entry
        !           662: for the terminal from `/etc/termcap' (since that file is not identical
        !           663: on all machines), and the output that Emacs actually sent to the terminal.
        !           664: The way to collect this output is to execute the Lisp expression
        !           665: 
        !           666:      (open-termscript "~/termscript")
        !           667: 
        !           668: using `Meta-ESC' or from the `*scratch*' buffer just after starting Emacs.
        !           669: From then on, all output from Emacs to the terminal will be written in the
        !           670: specified termscript file as well, until the Emacs process is killed.  If
        !           671: the problem happens when Emacs starts up, put this expression into your
        !           672: `.emacs' file so that the termscript file will be open when Emacs displays
        !           673: the screen for the first time.  Be warned: it is often difficult, and
        !           674: sometimes impossible, to fix a terminal-dependent bug without access to a
        !           675: terminal of the type that stimulates the bug.
        !           676: 
        !           677:   The address for reporting bugs is
        !           678: 
        !           679:      GNU Emacs Bugs
        !           680:      545 Tech Sq, rm 703
        !           681:      Cambridge, MA 02139
        !           682: 
        !           683: or send email to `mit-eddie!bug-gnu-emacs' (Usenet) or
        !           684: `[email protected]' (Internet).
        !           685: 
        !           686:   Once again, we do not promise to fix the bug; but if the bug is serious,
        !           687: or ugly, or easy to fix, chances are we will want to.
        !           688: 
        !           689: 
        !           690: 
        !           691: File: emacs  Node: Manifesto, Prev: Bugs, Up: Top
        !           692: 
        !           693: The GNU Manifesto
        !           694: *****************
        !           695: 
        !           696: 
        !           697: What's GNU?  Gnu's Not Unix!
        !           698: ============================
        !           699: 
        !           700: GNU, which stands for Gnu's Not Unix, is the name for the complete
        !           701: Unix-compatible software system which I am writing so that I can give it
        !           702: away free to everyone who can use it.  Several other volunteers are helping
        !           703: me.  Contributions of time, money, programs and equipment are greatly
        !           704: needed.
        !           705: 
        !           706: So far we have an Emacs text editor with Lisp for writing editor commands,
        !           707: a source level debugger, a yacc-compatible parser generator, a linker, and
        !           708: around 35 utilities.  A shell (command interpreter) is nearly completed.  A
        !           709: new portable optimizing C compiler has compiled itself and may be released
        !           710: this year.  An initial kernel exists but many more features are needed to
        !           711: emulate Unix.  When the kernel and compiler are finished, it will be
        !           712: possible to distribute a GNU system suitable for program development.  We
        !           713: will use TeX as our text formatter, but an nroff is being worked on.  We
        !           714: will use the free, portable X window system as well.  After this we will
        !           715: add a portable Common Lisp, an Empire game, a spreadsheet, and hundreds of
        !           716: other things, plus on-line documentation.  We hope to supply, eventually,
        !           717: everything useful that normally comes with a Unix system, and more.
        !           718: 
        !           719: GNU will be able to run Unix programs, but will not be identical to Unix.
        !           720: We will make all improvements that are convenient, based on our experience
        !           721: with other operating systems.  In particular, we plan to have longer
        !           722: filenames, file version numbers, a crashproof file system, filename
        !           723: completion perhaps, terminal-independent display support, and perhaps
        !           724: eventually a Lisp-based window system through which several Lisp programs
        !           725: and ordinary Unix programs can share a screen.  Both C and Lisp will be
        !           726: available as system programming languages.  We will try to support UUCP,
        !           727: MIT Chaosnet, and Internet protocols for communication.
        !           728: 
        !           729: GNU is aimed initially at machines in the 68000/16000 class with virtual
        !           730: memory, because they are the easiest machines to make it run on.  The extra
        !           731: effort to make it run on smaller machines will be left to someone who wants
        !           732: to use it on them.
        !           733: 
        !           734: To avoid horrible confusion, please pronounce the `G' in the word `GNU'
        !           735: when it is the name of this project.
        !           736: 
        !           737: 
        !           738: Why I Must Write GNU
        !           739: ====================
        !           740: 
        !           741: I consider that the golden rule requires that if I like a program I must
        !           742: share it with other people who like it.  Software sellers want to divide
        !           743: the users and conquer them, making each user agree not to share with
        !           744: others.  I refuse to break solidarity with other users in this way.  I
        !           745: cannot in good conscience sign a nondisclosure agreement or a software
        !           746: license agreement.  For years I worked within the Artificial Intelligence
        !           747: Lab to resist such tendencies and other inhospitalities, but eventually
        !           748: they had gone too far: I could not remain in an institution where such
        !           749: things are done for me against my will.
        !           750: 
        !           751: So that I can continue to use computers without dishonor, I have decided to
        !           752: put together a sufficient body of free software so that I will be able to
        !           753: get along without any software that is not free.  I have resigned from the
        !           754: AI lab to deny MIT any legal excuse to prevent me from giving GNU away.
        !           755: 
        !           756: 
        !           757: Why GNU Will Be Compatible with Unix
        !           758: ====================================
        !           759: 
        !           760: Unix is not my ideal system, but it is not too bad.  The essential features
        !           761: of Unix seem to be good ones, and I think I can fill in what Unix lacks
        !           762: without spoiling them.  And a system compatible with Unix would be
        !           763: convenient for many other people to adopt.
        !           764: 
        !           765: 
        !           766: How GNU Will Be Available
        !           767: =========================
        !           768: 
        !           769: GNU is not in the public domain.  Everyone will be permitted to modify and
        !           770: redistribute GNU, but no distributor will be allowed to restrict its
        !           771: further redistribution.  That is to say, proprietary modifications will not
        !           772: be allowed.  I want to make sure that all versions of GNU remain free.
        !           773: 
        !           774: 
        !           775: Why Many Other Programmers Want to Help
        !           776: =======================================
        !           777: 
        !           778: I have found many other programmers who are excited about GNU and want to
        !           779: help.
        !           780: 
        !           781: Many programmers are unhappy about the commercialization of system
        !           782: software.  It may enable them to make more money, but it requires them to
        !           783: feel in conflict with other programmers in general rather than feel as
        !           784: comrades.  The fundamental act of friendship among programmers is the
        !           785: sharing of programs; marketing arrangements now typically used essentially
        !           786: forbid programmers to treat others as friends.  The purchaser of software
        !           787: must choose between friendship and obeying the law.  Naturally, many decide
        !           788: that friendship is more important.  But those who believe in law often do
        !           789: not feel at ease with either choice.  They become cynical and think that
        !           790: programming is just a way of making money.
        !           791: 
        !           792: By working on and using GNU rather than proprietary programs, we can be
        !           793: hospitable to everyone and obey the law.  In addition, GNU serves as an
        !           794: example to inspire and a banner to rally others to join us in sharing.
        !           795: This can give us a feeling of harmony which is impossible if we use
        !           796: software that is not free.  For about half the programmers I talk to, this
        !           797: is an important happiness that money cannot replace.
        !           798: 
        !           799: 
        !           800: How You Can Contribute
        !           801: ======================
        !           802: 
        !           803: I am asking computer manufacturers for donations of machines and money.
        !           804: I'm asking individuals for donations of programs and work.
        !           805: 
        !           806: One consequence you can expect if you donate machines is that GNU will run
        !           807: on them at an early date.  The machines should be complete, ready to use
        !           808: systems, approved for use in a residential area, and not in need of
        !           809: sophisticated cooling or power.
        !           810: 
        !           811: I have found very many programmers eager to contribute part-time work for
        !           812: GNU.  For most projects, such part-time distributed work would be very hard
        !           813: to coordinate; the independently-written parts would not work together.
        !           814: But for the particular task of replacing Unix, this problem is absent.  A
        !           815: complete Unix system contains hundreds of utility programs, each of which
        !           816: is documented separately.  Most interface specifications are fixed by Unix
        !           817: compatibility.  If each contributor can write a compatible replacement for
        !           818: a single Unix utility, and make it work properly in place of the original
        !           819: on a Unix system, then these utilities will work right when put together.
        !           820: Even allowing for Murphy to create a few unexpected problems, assembling
        !           821: these components will be a feasible task.  (The kernel will require closer
        !           822: communication and will be worked on by a small, tight group.)
        !           823: 
        !           824: If I get donations of money, I may be able to hire a few people full or
        !           825: part time.  The salary won't be high by programmers' standards, but I'm
        !           826: looking for people for whom building community spirit is as important as
        !           827: making money.  I view this as a way of enabling dedicated people to devote
        !           828: their full energies to working on GNU by sparing them the need to make a
        !           829: living in another way.
        !           830: 
        !           831: 
        !           832: Why All Computer Users Will Benefit
        !           833: ===================================
        !           834: 
        !           835: Once GNU is written, everyone will be able to obtain good system software
        !           836: free, just like air.
        !           837: 
        !           838: This means much more than just saving everyone the price of a Unix license.
        !           839: It means that much wasteful duplication of system programming effort will
        !           840: be avoided.  This effort can go instead into advancing the state of the
        !           841: art.
        !           842: 
        !           843: Complete system sources will be available to everyone.  As a result, a user
        !           844: who needs changes in the system will always be free to make them himself,
        !           845: or hire any available programmer or company to make them for him.  Users
        !           846: will no longer be at the mercy of one programmer or company which owns the
        !           847: sources and is in sole position to make changes.
        !           848: 
        !           849: Schools will be able to provide a much more educational environment by
        !           850: encouraging all students to study and improve the system code.  Harvard's
        !           851: computer lab used to have the policy that no program could be installed on
        !           852: the system if its sources were not on public display, and upheld it by
        !           853: actually refusing to install certain programs.  I was very much inspired by
        !           854: this.
        !           855: 
        !           856: Finally, the overhead of considering who owns the system software and what
        !           857: one is or is not entitled to do with it will be lifted.
        !           858: 
        !           859: Arrangements to make people pay for using a program, including licensing of
        !           860: copies, always incur a tremendous cost to society through the cumbersome
        !           861: mechanisms necessary to figure out how much (that is, which programs) a
        !           862: person must pay for.  And only a police state can force everyone to obey
        !           863: them.  Consider a space station where air must be manufactured at great
        !           864: cost: charging each breather per liter of air may be fair, but wearing the
        !           865: metered gas mask all day and all night is intolerable even if everyone can
        !           866: afford to pay the air bill.  And the TV cameras everywhere to see if you
        !           867: ever take the mask off are outrageous.  It's better to support the air
        !           868: plant with a head tax and chuck the masks.
        !           869: 
        !           870: Copying all or parts of a program is as natural to a programmer as
        !           871: breathing, and as productive.  It ought to be as free.
        !           872: 
        !           873: 
        !           874: Some Easily Rebutted Objections to GNU's Goals
        !           875: ==============================================
        !           876: 
        !           877:      "Nobody will use it if it is free, because that means they can't rely
        !           878:      on any support."
        !           879:      
        !           880:      "You have to charge for the program to pay for providing the
        !           881:      support."
        !           882: 
        !           883: If people would rather pay for GNU plus service than get GNU free without
        !           884: service, a company to provide just service to people who have obtained GNU
        !           885: free ought to be profitable.
        !           886: 
        !           887: We must distinguish between support in the form of real programming work
        !           888: and mere handholding.  The former is something one cannot rely on from a
        !           889: software vendor.  If your problem is not shared by enough people, the
        !           890: vendor will tell you to get lost.
        !           891: 
        !           892: If your business needs to be able to rely on support, the only way is to
        !           893: have all the necessary sources and tools.  Then you can hire any available
        !           894: person to fix your problem; you are not at the mercy of any individual.
        !           895: With Unix, the price of sources puts this out of consideration for most
        !           896: businesses.  With GNU this will be easy.  It is still possible for there to
        !           897: be no available competent person, but this problem cannot be blamed on
        !           898: distibution arrangements.  GNU does not eliminate all the world's problems,
        !           899: only some of them.
        !           900: 
        !           901: Meanwhile, the users who know nothing about computers need handholding:
        !           902: doing things for them which they could easily do themselves but don't know
        !           903: how.
        !           904: 
        !           905: Such services could be provided by companies that sell just hand-holding
        !           906: and repair service.  If it is true that users would rather spend money and
        !           907: get a product with service, they will also be willing to buy the service
        !           908: having got the product free.  The service companies will compete in quality
        !           909: and price; users will not be tied to any particular one.  Meanwhile, those
        !           910: of us who don't need the service should be able to use the program without
        !           911: paying for the service.
        !           912: 
        !           913:      "You cannot reach many people without advertising,
        !           914:      and you must charge for the program to support that."
        !           915:      
        !           916:      "It's no use advertising a program people can get free."
        !           917: 
        !           918: There are various forms of free or very cheap publicity that can be used to
        !           919: inform numbers of computer users about something like GNU.  But it may be
        !           920: true that one can reach more microcomputer users with advertising.  If this
        !           921: is really so, a business which advertises the service of copying and
        !           922: mailing GNU for a fee ought to be successful enough to pay for its
        !           923: advertising and more.  This way, only the users who benefit from the
        !           924: advertising pay for it.
        !           925: 
        !           926: On the other hand, if many people get GNU from their friends, and such
        !           927: companies don't succeed, this will show that advertising was not really
        !           928: necessary to spread GNU.  Why is it that free market advocates don't want
        !           929: to let the free market decide this?
        !           930: 
        !           931:      "My company needs a proprietary operating system
        !           932:      to get a competitive edge."
        !           933: 
        !           934: GNU will remove operating system software from the realm of competition.
        !           935: You will not be able to get an edge in this area, but neither will your
        !           936: competitors be able to get an edge over you.  You and they will compete in
        !           937: other areas, while benefitting mutually in this one.  If your business is
        !           938: selling an operating system, you will not like GNU, but that's tough on
        !           939: you.  If your business is something else, GNU can save you from being
        !           940: pushed into the expensive business of selling operating systems.
        !           941: 
        !           942: I would like to see GNU development supported by gifts from many
        !           943: manufacturers and users, reducing the cost to each.
        !           944: 
        !           945:      "Don't programmers deserve a reward for their creativity?"
        !           946: 
        !           947: If anything deserves a reward, it is social contribution.  Creativity can
        !           948: be a social contribution, but only in so far as society is free to use the
        !           949: results.  If programmers deserve to be rewarded for creating innovative
        !           950: programs, by the same token they deserve to be punished if they restrict
        !           951: the use of these programs.
        !           952: 
        !           953:      "Shouldn't a programmer be able to ask for a reward for his creativity?"
        !           954: 
        !           955: There is nothing wrong with wanting pay for work, or seeking to maximize
        !           956: one's income, as long as one does not use means that are destructive.  But
        !           957: the means customary in the field of software today are based on
        !           958: destruction.
        !           959: 
        !           960: Extracting money from users of a program by restricting their use of it is
        !           961: destructive because the restrictions reduce the amount and the ways that
        !           962: the program can be used.  This reduces the amount of wealth that humanity
        !           963: derives from the program.  When there is a deliberate choice to restrict,
        !           964: the harmful consequences are deliberate destruction.
        !           965: 
        !           966: The reason a good citizen does not use such destructive means to become
        !           967: wealthier is that, if everyone did so, we would all become poorer from the
        !           968: mutual destructiveness.  This is Kantian ethics; or, the Golden Rule.
        !           969: Since I do not like the consequences that result if everyone hoards
        !           970: information, I am required to consider it wrong for one to do so.
        !           971: Specifically, the desire to be rewarded for one's creativity does not
        !           972: justify depriving the world in general of all or part of that creativity.
        !           973: 
        !           974:      "Won't programmers starve?"
        !           975: 
        !           976: I could answer that nobody is forced to be a programmer.  Most of us cannot
        !           977: manage to get any money for standing on the street and making faces.  But
        !           978: we are not, as a result, condemned to spend our lives standing on the
        !           979: street making faces, and starving.  We do something else.
        !           980: 
        !           981: But that is the wrong answer because it accepts the questioner's implicit
        !           982: assumption: that without ownership of software, programmers cannot possibly
        !           983: be paid a cent.  Supposedly it is all or nothing.
        !           984: 
        !           985: The real reason programmers will not starve is that it will still be
        !           986: possible for them to get paid for programming; just not paid as much as
        !           987: now.
        !           988: 
        !           989: Restricting copying is not the only basis for business in software.  It is
        !           990: the most common basis because it brings in the most money.  If it were
        !           991: prohibited, or rejected by the customer, software business would move to
        !           992: other bases of organization which are now used less often.  There are
        !           993: always numerous ways to organize any kind of business.
        !           994: 
        !           995: Probably programming will not be as lucrative on the new basis as it is
        !           996: now.  But that is not an argument against the change.  It is not considered
        !           997: an injustice that sales clerks make the salaries that they now do.  If
        !           998: programmers made the same, that would not be an injustice either.  (In
        !           999: practice they would still make considerably more than that.)
        !          1000: 
        !          1001:      "Don't people have a right to control how their creativity is used?"
        !          1002: 
        !          1003: "Control over the use of one's ideas" really constitutes control over
        !          1004: other people's lives; and it is usually used to make their lives more
        !          1005: difficult.
        !          1006: 
        !          1007: People who have studied the issue of intellectual property rights carefully
        !          1008: (such as lawyers) say that there is no intrinsic right to intellectual
        !          1009: property.  The kinds of supposed intellectual property rights that the
        !          1010: government recognizes were created by specific acts of legislation for
        !          1011: specific purposes.
        !          1012: 
        !          1013: For example, the patent system was established to encourage inventors to
        !          1014: disclose the details of their inventions.  Its purpose was to help society
        !          1015: rather than to help inventors.  At the time, the life span of 17 years for
        !          1016: a patent was short compared with the rate of advance of the state of the
        !          1017: art.  Since patents are an issue only among manufacturers, for whom the
        !          1018: cost and effort of a license agreement are small compared with setting up
        !          1019: production, the patents often do not do much harm.  They do not obstruct
        !          1020: most individuals who use patented products.
        !          1021: 
        !          1022: The idea of copyright did not exist in ancient times, when authors
        !          1023: frequently copied other authors at length in works of non-fiction.  This
        !          1024: practice was useful, and is the only way many authors' works have survived
        !          1025: even in part.  The copyright system was created expressly for the purpose
        !          1026: of encouraging authorship.  In the domain for which it was
        !          1027: invented---books, which could be copied economically only on a printing
        !          1028: press---it did little harm, and did not obstruct most of the individuals
        !          1029: who read the books.
        !          1030: 
        !          1031: All intellectual property rights are just licenses granted by society
        !          1032: because it was thought, rightly or wrongly, that society as a whole would
        !          1033: benefit by granting them.  But in any particular situation, we have to ask:
        !          1034: are we really better off granting such license?  What kind of act are we
        !          1035: licensing a person to do?
        !          1036: 
        !          1037: The case of programs today is very different from that of books a hundred
        !          1038: years ago.  The fact that the easiest way to copy a program is from one
        !          1039: neighbor to another, the fact that a program has both source code and
        !          1040: object code which are distinct, and the fact that a program is used rather
        !          1041: than read and enjoyed, combine to create a situation in which a person who
        !          1042: enforces a copyright is harming society as a whole both materially and
        !          1043: spiritually; in which a person should not do so regardless of whether the
        !          1044: law enables him to.
        !          1045: 
        !          1046:      "Competition makes things get done better."
        !          1047: 
        !          1048: The paradigm of competition is a race: by rewarding the winner, we
        !          1049: encourage everyone to run faster.  When capitalism really works this way,
        !          1050: it does a good job; but its defenders are wrong in assuming it always works
        !          1051: this way.  If the runners forget why the reward is offered and become
        !          1052: intent on winning, no matter how, they may find other strategies---such as,
        !          1053: attacking other runners.  If the runners get into a fist fight, they will
        !          1054: all finish late.
        !          1055: 
        !          1056: Proprietary and secret software is the moral equivalent of runners in a
        !          1057: fist fight.  Sad to say, the only referee we've got does not seem to
        !          1058: object to fights; he just regulates them ("For every ten yards you run,
        !          1059: you can fire one shot").  He really ought to break them up, and penalize
        !          1060: runners for even trying to fight.
        !          1061: 
        !          1062:      "Won't everyone stop programming without a monetary incentive?"
        !          1063: 
        !          1064: Actually, many people will program with absolutely no monetary incentive.
        !          1065: Programming has an irresistible fascination for some people, usually the
        !          1066: people who are best at it.  There is no shortage of professional musicians
        !          1067: who keep at it even though they have no hope of making a living that way.
        !          1068: 
        !          1069: But really this question, though commonly asked, is not appropriate to the
        !          1070: situation.  Pay for programmers will not disappear, only become less.  So
        !          1071: the right question is, will anyone program with a reduced monetary
        !          1072: incentive?  My experience shows that they will.
        !          1073: 
        !          1074: For more than ten years, many of the world's best programmers worked at the
        !          1075: Artificial Intelligence Lab for far less money than they could have had
        !          1076: anywhere else.  They got many kinds of non-monetary rewards: fame and
        !          1077: appreciation, for example.  And creativity is also fun, a reward in itself.
        !          1078: 
        !          1079: Then most of them left when offered a chance to do the same interesting
        !          1080: work for a lot of money.
        !          1081: 
        !          1082: What the facts show is that people will program for reasons other than
        !          1083: riches; but if given a chance to make a lot of money as well, they will
        !          1084: come to expect and demand it.  Low-paying organizations do poorly in
        !          1085: competition with high-paying ones, but they do not have to do badly if the
        !          1086: high-paying ones are banned.
        !          1087: 
        !          1088:      "We need the programmers desperately.  If they demand that we
        !          1089:      stop helping our neighbors, we have to obey."
        !          1090: 
        !          1091: You're never so desperate that you have to obey this sort of demand.
        !          1092: Remember: millions for defense, but not a cent for tribute!
        !          1093: 
        !          1094:      "Programmers need to make a living somehow."
        !          1095: 
        !          1096: In the short run, this is true.  However, there are plenty of ways that
        !          1097: programmers could make a living without selling the right to use a program.
        !          1098: This way is customary now because it brings programmers and businessmen the
        !          1099: most money, not because it is the only way to make a living.  It is easy to
        !          1100: find other ways if you want to find them.  Here are a number of examples.
        !          1101: 
        !          1102: A manufacturer introducing a new computer will pay for the porting of
        !          1103: operating systems onto the new hardware.
        !          1104: 
        !          1105: The sale of teaching, hand-holding and maintenance services could also
        !          1106: employ programmers.
        !          1107: 
        !          1108: People with new ideas could distribute programs as freeware, asking for
        !          1109: donations from satisfied users, or selling hand-holding services.  I have
        !          1110: met people who are already working this way successfully.
        !          1111: 
        !          1112: Users with related needs can form users' groups, and pay dues.  A group
        !          1113: would contract with programming companies to write programs that the
        !          1114: group's members would like to use.
        !          1115: 
        !          1116: All sorts of development can be funded with a Software Tax:
        !          1117: 
        !          1118:      Suppose everyone who buys a computer has to pay x percent of
        !          1119:      the price as a software tax.  The government gives this to
        !          1120:      an agency like the NSF to spend on software development.
        !          1121:      
        !          1122:      But if the computer buyer makes a donation to software development
        !          1123:      himself, he can take a credit against the tax.  He can donate to
        !          1124:      the project of his own choosing---often, chosen because he hopes to
        !          1125:      use the results when it is done.  He can take a credit for any amount
        !          1126:      of donation up to the total tax he had to pay.
        !          1127:      
        !          1128:      The total tax rate could be decided by a vote of the payers of
        !          1129:      the tax, weighted according to the amount they will be taxed on.
        !          1130:      
        !          1131:      The consequences:
        !          1132:      
        !          1133:         * The computer-using community supports software development.
        !          1134:         * This community decides what level of support is needed.
        !          1135:         * Users who care which projects their share is spent on
        !          1136:           can choose this for themselves.
        !          1137: 
        !          1138: In the long run, making programs free is a step toward the post-scarcity
        !          1139: world, where nobody will have to work very hard just to make a living.
        !          1140: People will be free to devote themselves to activities that are fun, such
        !          1141: as programming, after spending the necessary ten hours a week on required
        !          1142: tasks such as legislation, family counseling, robot repair and asteroid
        !          1143: prospecting.  There will be no need to be able to make a living from
        !          1144: programming.
        !          1145: 
        !          1146: We have already greatly reduced the amount of work that the whole society
        !          1147: must do for its actual productivity, but only a little of this has
        !          1148: translated itself into leisure for workers because much nonproductive
        !          1149: activity is required to accompany productive activity.  The main causes of
        !          1150: this are bureaucracy and isometric struggles against competition.  Free
        !          1151: software will greatly reduce these drains in the area of software
        !          1152: production.  We must do this, in order for technical gains in productivity
        !          1153: to translate into less work for us.
        !          1154: 
        !          1155: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.