-This is Info file ../info/xemacs.info, produced by Makeinfo version
-1.68 from the input file xemacs/xemacs.texi.
+This is ../info/xemacs.info, produced by makeinfo version 4.0b from
+xemacs/xemacs.texi.
INFO-DIR-SECTION XEmacs Editor
START-INFO-DIR-ENTRY
translation approved by the author instead of in the original English.
\1f
-File: xemacs.info, Node: Variable Index, Next: Concept Index, Prev: Command Index, Up: Top
+File: xemacs.info, Node: Manifesto, Next: Key Index, Prev: Glossary, Up: Top
-Variable Index
-**************
+The GNU Manifesto
+*****************
-* Menu:
+What's GNU? GNU's Not Unix!
+============================
+
+ GNU, which stands for GNU's Not Unix, is the name for the complete
+Unix-compatible software system which I am writing so that I can give it
+away free to everyone who can use it. Several other volunteers are
+helping me. Contributions of time, money, programs, and equipment are
+greatly needed.
+
+ So far we have an Emacs text editor with Lisp for writing editor
+commands, a source level debugger, a yacc-compatible parser generator,
+a linker, and around 35 utilities. A shell (command interpreter) is
+nearly completed. A new portable optimizing C compiler has compiled
+itself and may be released this year. An initial kernel exists, but
+many more features are needed to emulate Unix. When the kernel and
+compiler are finished, it will be possible to distribute a GNU system
+suitable for program development. We will use TeX as our text
+formatter, but an nroff is being worked on. We will use the free,
+portable X window system as well. After this we will add a portable
+Common Lisp, an Empire game, a spreadsheet, and hundreds of other
+things, plus online documentation. We hope to supply, eventually,
+everything useful that normally comes with a Unix system, and more.
+
+ GNU will be able to run Unix programs, but will not be identical to
+Unix. We will make all improvements that are convenient, based on our
+experience with other operating systems. In particular, we plan to
+have longer filenames, file version numbers, a crashproof file system,
+filename completion perhaps, terminal-independent display support, and
+perhaps eventually a Lisp-based window system through which several
+Lisp programs and ordinary Unix programs can share a screen. Both C
+and Lisp will be available as system programming languages. We will
+try to support UUCP, MIT Chaosnet, and Internet protocols for
+communication.
+
+ GNU is aimed initially at machines in the 68000/16000 class with
+virtual memory, because they are the easiest machines to make it run
+on. The extra effort to make it run on smaller machines will be left
+to someone who wants to use it on them.
+
+ To avoid horrible confusion, please pronounce the `G' in the word
+`GNU' when it is the name of this project.
+
+Why I Must Write GNU
+====================
+
+ I consider that the golden rule requires that if I like a program I
+must share it with other people who like it. Software sellers want to
+divide the users and conquer them, making each user agree not to share
+with others. I refuse to break solidarity with other users in this
+way. I cannot in good conscience sign a nondisclosure agreement or a
+software license agreement. For years I worked within the Artificial
+Intelligence Lab to resist such tendencies and other inhospitalities,
+but eventually they had gone too far: I could not remain in an
+institution where such things are done for me against my will.
+
+ So that I can continue to use computers without dishonor, I have
+decided to put together a sufficient body of free software so that I
+will be able to get along without any software that is not free. I
+have resigned from the AI lab to deny MIT any legal excuse to prevent
+me from giving GNU away.
+
+Why GNU Will Be Compatible With Unix
+====================================
+
+ Unix is not my ideal system, but it is not too bad. The essential
+features of Unix seem to be good ones, and I think I can fill in what
+Unix lacks without spoiling them. And a system compatible with Unix
+would be convenient for many other people to adopt.
+
+How GNU Will Be Available
+=========================
+
+ GNU is not in the public domain. Everyone will be permitted to
+modify and redistribute GNU, but no distributor will be allowed to
+restrict its further redistribution. That is to say, proprietary
+modifications will not be allowed. I want to make sure that all
+versions of GNU remain free.
+
+Why Many Other Programmers Want to Help
+=======================================
+
+ I have found many other programmers who are excited about GNU and
+want to help.
+
+ Many programmers are unhappy about the commercialization of system
+software. It may enable them to make more money, but it requires them
+to feel in conflict with other programmers in general rather than feel
+as comrades. The fundamental act of friendship among programmers is the
+sharing of programs; marketing arrangements now typically used
+essentially forbid programmers to treat others as friends. The
+purchaser of software must choose between friendship and obeying the
+law. Naturally, many decide that friendship is more important. But
+those who believe in law often do not feel at ease with either choice.
+They become cynical and think that programming is just a way of making
+money.
+
+ By working on and using GNU rather than proprietary programs, we can
+be hospitable to everyone and obey the law. In addition, GNU serves as
+an example to inspire and a banner to rally others to join us in
+sharing. This can give us a feeling of harmony which is impossible if
+we use software that is not free. For about half the programmers I
+talk to, this is an important happiness that money cannot replace.
+
+How You Can Contribute
+======================
+
+ I am asking computer manufacturers for donations of machines and
+money. I'm asking individuals for donations of programs and work.
+
+ One consequence you can expect if you donate machines is that GNU
+will run on them at an early date. The machines should be complete,
+ready-to-use systems, approved for use in a residential area, and not
+in need of sophisticated cooling or power.
+
+ I have found very many programmers eager to contribute part-time
+work for GNU. For most projects, such part-time distributed work would
+be very hard to coordinate; the independently-written parts would not
+work together. But for the particular task of replacing Unix, this
+problem is absent. A complete Unix system contains hundreds of utility
+programs, each of which is documented separately. Most interface
+specifications are fixed by Unix compatibility. If each contributor
+can write a compatible replacement for a single Unix utility, and make
+it work properly in place of the original on a Unix system, then these
+utilities will work right when put together. Even allowing for Murphy
+to create a few unexpected problems, assembling these components will
+be a feasible task. (The kernel will require closer communication and
+will be worked on by a small, tight group.)
+
+ If I get donations of money, I may be able to hire a few people full
+or part time. The salary won't be high by programmers' standards, but
+I'm looking for people for whom building community spirit is as
+important as making money. I view this as a way of enabling dedicated
+people to devote their full energies to working on GNU by sparing them
+the need to make a living in another way.
+
+Why All Computer Users Will Benefit
+===================================
+
+ Once GNU is written, everyone will be able to obtain good system
+software free, just like air.
+
+ This means much more than just saving everyone the price of a Unix
+license. It means that much wasteful duplication of system programming
+effort will be avoided. This effort can go instead into advancing the
+state of the art.
+
+ Complete system sources will be available to everyone. As a result,
+a user who needs changes in the system will always be free to make them
+himself, or hire any available programmer or company to make them for
+him. Users will no longer be at the mercy of one programmer or company
+which owns the sources and is in sole position to make changes.
+
+ Schools will be able to provide a much more educational environment
+by encouraging all students to study and improve the system code.
+Harvard's computer lab used to have the policy that no program could be
+installed on the system if its sources were not on public display, and
+upheld it by actually refusing to install certain programs. I was very
+much inspired by this.
+
+ Finally, the overhead of considering who owns the system software
+and what one is or is not entitled to do with it will be lifted.
+
+ Arrangements to make people pay for using a program, including
+licensing of copies, always incur a tremendous cost to society through
+the cumbersome mechanisms necessary to figure out how much (that is,
+which programs) a person must pay for. And only a police state can
+force everyone to obey them. Consider a space station where air must
+be manufactured at great cost: charging each breather per liter of air
+may be fair, but wearing the metered gas mask all day and all night is
+intolerable even if everyone can afford to pay the air bill. And the
+TV cameras everywhere to see if you ever take the mask off are
+outrageous. It's better to support the air plant with a head tax and
+chuck the masks.
+
+ Copying all or parts of a program is as natural to a programmer as
+breathing, and as productive. It ought to be as free.
+
+Some Easily Rebutted Objections to GNU's Goals
+==============================================
+
+ "Nobody will use it if it is free, because that means they can't
+ rely on any support."
+
+ "You have to charge for the program to pay for providing the
+ support."
+
+ If people would rather pay for GNU plus service than get GNU free
+without service, a company to provide just service to people who have
+obtained GNU free ought to be profitable.
+
+ We must distinguish between support in the form of real programming
+work and mere handholding. The former is something one cannot rely on
+from a software vendor. If your problem is not shared by enough
+people, the vendor will tell you to get lost.
+
+ If your business needs to be able to rely on support, the only way
+is to have all the necessary sources and tools. Then you can hire any
+available person to fix your problem; you are not at the mercy of any
+individual. With Unix, the price of sources puts this out of
+consideration for most businesses. With GNU this will be easy. It is
+still possible for there to be no available competent person, but this
+problem cannot be blamed on distribution arrangements. GNU does not
+eliminate all the world's problems, only some of them.
+
+ Meanwhile, the users who know nothing about computers need
+handholding: doing things for them which they could easily do
+themselves but don't know how.
+
+ Such services could be provided by companies that sell just
+hand-holding and repair service. If it is true that users would rather
+spend money and get a product with service, they will also be willing
+to buy the service having got the product free. The service companies
+will compete in quality and price; users will not be tied to any
+particular one. Meanwhile, those of us who don't need the service
+should be able to use the program without paying for the service.
+
+ "You cannot reach many people without advertising, and you must
+ charge for the program to support that."
+
+ "It's no use advertising a program people can get free."
+
+ There are various forms of free or very cheap publicity that can be
+used to inform numbers of computer users about something like GNU. But
+it may be true that one can reach more microcomputer users with
+advertising. If this is really so, a business which advertises the
+service of copying and mailing GNU for a fee ought to be successful
+enough to pay for its advertising and more. This way, only the users
+who benefit from the advertising pay for it.
+
+ On the other hand, if many people get GNU from their friends, and
+such companies don't succeed, this will show that advertising was not
+really necessary to spread GNU. Why is it that free market advocates
+don't want to let the free market decide this?
+
+ "My company needs a proprietary operating system to get a
+ competitive edge."
+
+ GNU will remove operating system software from the realm of
+competition. You will not be able to get an edge in this area, but
+neither will your competitors be able to get an edge over you. You and
+they will compete in other areas, while benefitting mutually in this
+one. If your business is selling an operating system, you will not
+like GNU, but that's tough on you. If your business is something else,
+GNU can save you from being pushed into the expensive business of
+selling operating systems.
+
+ I would like to see GNU development supported by gifts from many
+manufacturers and users, reducing the cost to each.
+
+ "Don't programmers deserve a reward for their creativity?"
-* abbrev-all-caps: Expanding Abbrevs.
-* abbrev-file-name: Saving Abbrevs.
-* abbrev-mode: Abbrevs.
-* after-load-alist: Loading.
-* after-save-hook: Saving.
-* all-christian-calendar-holidays: Holiday Customizing.
-* all-hebrew-calendar-holidays: Holiday Customizing.
-* all-islamic-calendar-holidays: Holiday Customizing.
-* appt-audible: Appt Customizing.
-* appt-display-duration: Appt Customizing.
-* appt-display-mode-line: Appt Customizing.
-* appt-message-warning-time: Appt Customizing.
-* appt-msg-window: Appt Customizing.
-* appt-visible: Appt Customizing.
-* auto-fill-inhibit-regexp: Fill Commands.
-* auto-lower-frame: XEmacs under X.
-* auto-mode-alist: Choosing Modes.
-* auto-raise-frame: XEmacs under X.
-* auto-save-default: Auto Save Control.
-* auto-save-interval: Auto Save Control.
-* auto-save-timeout: Auto Save Control.
-* auto-save-visited-file-name: Auto Save Files.
-* backup-by-copying: Backup Copying.
-* backup-by-copying-when-linked: Backup Copying.
-* backup-by-copying-when-mismatch: Backup Copying.
-* bell-volume: Audible Bell.
-* blink-matching-paren: Matching.
-* blink-matching-paren-distance: Matching.
-* bookmark-save-flag: Bookmarks.
-* bookmark-search-size: Bookmarks.
-* buffer-file-coding-system: Recognize Coding.
-* buffer-file-name: Visiting.
-* buffer-file-truename: Visiting.
-* buffer-read-only: Misc Buffer.
-* buffer-tag-table: Find Tag.
-* c-argdecl-indent: C Indent.
-* c-auto-newline: C Indent.
-* c-brace-imaginary-offset: C Indent.
-* c-brace-offset: C Indent.
-* c-continued-statement-offset: C Indent.
-* c-indent-level: C Indent.
-* c-label-offset: C Indent.
-* c-mode-hook: Program Modes.
-* c-mode-map: Keymaps.
-* c-tab-always-indent: C Indent.
-* calendar-date-display-form: Date Display Format.
-* calendar-daylight-savings-ends: Daylight Savings.
-* calendar-daylight-savings-ends-time: Daylight Savings.
-* calendar-daylight-savings-starts: Daylight Savings.
-* calendar-daylight-time-offset: Daylight Savings.
-* calendar-daylight-time-zone-name: Sunrise/Sunset.
-* calendar-holiday-marker: Calendar Customizing.
-* calendar-holidays: Holiday Customizing.
-* calendar-latitude: Sunrise/Sunset.
-* calendar-load-hook: Calendar Customizing.
-* calendar-location-name: Sunrise/Sunset.
-* calendar-longitude: Sunrise/Sunset.
-* calendar-standard-time-zone-name: Sunrise/Sunset.
-* calendar-time-display-form: Time Display Format.
-* calendar-time-zone: Sunrise/Sunset.
-* calendar-today-marker: Calendar Customizing.
-* calendar-week-start-day: Move to Beginning or End.
-* case-fold-search <1>: Replacement and Case.
-* case-fold-search: Search Case.
-* case-replace: Replacement and Case.
-* christian-holidays: Holiday Customizing.
-* coding: Recognize Coding.
-* command-history: Repetition.
-* command-line-args: Command Switches.
-* comment-column: Comments.
-* comment-end: Comments.
-* comment-indent-hook: Comments.
-* comment-line-start: Fortran Comments.
-* comment-line-start-skip: Fortran Comments.
-* comment-multi-line: Comments.
-* comment-start: Comments.
-* comment-start-skip: Comments.
-* compare-ignore-case: Comparing Files.
-* compile-command: Compilation.
-* completion-auto-help: Completion Options.
-* completion-ignored-extensions: Completion Options.
-* create-frame-hook: XEmacs under X.
-* ctl-arrow: Display Vars.
-* ctl-x-map: Keymaps.
-* current-input-method: Select Input Method.
-* data-directory: Startup Paths.
-* data-directory-list: Startup Paths.
-* debug-on-error: Lisp Debug.
-* debug-on-quit: Lisp Debug.
-* default-buffer-file-coding-system: Specify Coding.
-* default-directory: File Names.
-* default-directory-alist: File Names.
-* default-frame-alist: XEmacs under X.
-* default-input-method: Select Input Method.
-* default-major-mode: Choosing Modes.
-* delete-auto-save-files: Auto Save Files.
-* describe-function-show-arglist: Help.
-* diary-date-forms: Diary Customizing.
-* diary-display-hook: Fancy Diary Display.
-* diary-entry-marker: Calendar Customizing.
-* diary-file: Format of Diary File.
-* diary-list-include-blanks: Fancy Diary Display.
-* diary-mail-days: Diary Commands.
-* diff-switches: Comparing Files.
-* dired-kept-versions: Dired Deletion.
-* dired-listing-switches: Dired Enter.
-* display-buffer-function: Pop Up Window.
-* doc-directory: Startup Paths.
-* echo-keystrokes: Display Vars.
-* emacs-lisp-mode-hook: Program Modes.
-* emacs-roots: Startup Paths.
-* EMACSDATA: Startup Paths.
-* EMACSLOADPATH: Startup Paths.
-* EMACSLOCKDIR: Startup Paths.
-* EMACSPATH: Startup Paths.
-* enable-local-variables: File Variables.
-* enable-recursive-minibuffers: Minibuffer Edit.
-* esc-map: Keymaps.
-* european-calendar-style: Date Formats.
-* exec-directory: Startup Paths.
-* exec-path: Startup Paths.
-* explicit-shell-file-name: Interactive Shell.
-* file-coding-system-alist: Recognize Coding.
-* file-name-coding-system: Specify Coding.
-* fill-column: Fill Commands.
-* fill-prefix: Fill Prefix.
-* find-file-compare-truenames: Visiting.
-* find-file-hooks: Visiting.
-* find-file-not-found-hooks: Visiting.
-* find-file-run-dired: Visiting.
-* find-file-use-truenames: Visiting.
-* fortran-check-all-num-for-matching-do: ForIndent Vars.
-* fortran-comment-indent-char: Fortran Comments.
-* fortran-comment-indent-style: Fortran Comments.
-* fortran-comment-line-column: Fortran Comments.
-* fortran-comment-region: Fortran Comments.
-* fortran-continuation-char: ForIndent Conv.
-* fortran-continuation-indent: ForIndent Vars.
-* fortran-do-indent: ForIndent Vars.
-* fortran-electric-line-number: ForIndent Num.
-* fortran-if-indent: ForIndent Vars.
-* fortran-line-number-indent: ForIndent Num.
-* fortran-minimum-statement-indent: ForIndent Vars.
-* frame-icon-title-format <1>: Command Switches.
-* frame-icon-title-format: XEmacs under X.
-* frame-title-format <1>: Command Switches.
-* frame-title-format: XEmacs under X.
-* general-holidays: Holiday Customizing.
-* global-map: Keymaps.
-* hebrew-holidays: Holiday Customizing.
-* help-map: Keymaps.
-* holidays-in-diary-buffer: Diary Customizing.
-* indent-tabs-mode: Just Spaces.
-* Info-directory-list: Startup Paths.
-* INFOPATH: Startup Paths.
-* initial-calendar-window-hook: Calendar Customizing.
-* initial-major-mode: Entering Emacs.
-* input-method-highlight-flag: Input Methods.
-* input-method-verbose-flag: Input Methods.
-* input-ring-size: Interactive Shell.
-* insert-default-directory <1>: File Names.
-* insert-default-directory: Minibuffer File.
-* isearch-mode-map: Keymaps.
-* islamic-holidays: Holiday Customizing.
-* kept-new-versions: Backup Deletion.
-* kept-old-versions: Backup Deletion.
-* keyboard-translate-table: Intro to Keystrokes.
-* kill-ring-max: Earlier Kills.
-* LaTeX-mode-hook: TeX Print.
-* lisp-body-indention: Lisp Indent.
-* lisp-directory: Startup Paths.
-* lisp-indent-offset: Lisp Indent.
-* lisp-interaction-mode-hook: Program Modes.
-* lisp-mode-hook: Program Modes.
-* lisp-mode-map: Keymaps.
-* list-diary-entries-hook: Included Diary Files.
-* list-directory-brief-switches: ListDir.
-* list-directory-verbose-switches: ListDir.
-* load-path <1>: Loading.
-* load-path: Startup Paths.
-* local-holidays: Holiday Customizing.
-* lock-directory: Startup Paths.
-* lpr-switches: Hardcopy.
-* mail-abbrev-mailrc-file: Mail Headers.
-* mail-abbrev-mode-regexp: Mail Headers.
-* mail-alias-seperator-string: Mail Headers.
-* mail-archive-file-name: Mail Headers.
-* mail-header-separator: Mail Format.
-* mail-mode-hook: Mail Mode.
-* make-backup-files: Backup.
-* make-tags-files-invisible: Find Tag.
-* mark-diary-entries-hook: Included Diary Files.
-* mark-diary-entries-in-calendar: Calendar Customizing.
-* mark-holidays-in-calendar: Calendar Customizing.
-* mark-ring: Mark Ring.
-* mark-ring-max: Mark Ring.
-* meta-flag: Meta Key.
-* minibuffer-confirm-incomplete <1>: Completion Options.
-* minibuffer-confirm-incomplete: Minibuffer Edit.
-* minibuffer-local-completion-map: Keymaps.
-* minibuffer-local-map: Keymaps.
-* minibuffer-local-must-match-map: Keymaps.
-* minibuffer-local-ns-map: Keymaps.
-* mode-line-inverse-video: Mode Line.
-* modeline-pointer-glyph: Mouse Selection.
-* muddle-mode-hook: Program Modes.
-* next-screen-context-lines: Scrolling.
-* no-redraw-on-reenter: Display Vars.
-* nongregorian-diary-listing-hook: Hebrew/Islamic Entries.
-* nongregorian-diary-marking-hook: Hebrew/Islamic Entries.
-* nontext-pointer-glyph: Mouse Selection.
-* nroff-mode-hook: Nroff Mode.
-* number-of-diary-entries: Diary Customizing.
-* other-holidays: Holiday Customizing.
-* outline-mode-hook: Outline Mode.
-* outline-regexp: Outline Format.
-* page-delimiter: Pages.
-* paragraph-separate: Paragraphs.
-* paragraph-start: Paragraphs.
-* parse-sexp-ignore-comments: Syntax Entry.
-* PATH: Startup Paths.
-* picture-mode-hook: Picture.
-* picture-tab-chars: Tabs in Picture.
-* plain-TeX-mode-hook: TeX Print.
-* print-diary-entries-hook: Diary Customizing.
-* repeat-complex-command-map: Keymaps.
-* require-final-newline: Saving.
-* save-abbrevs: Saving Abbrevs.
-* scheme-mode-hook: Program Modes.
-* scroll-conservatively: Scrolling.
-* scroll-step: Scrolling.
-* search-slow-speed: Incremental Search.
-* search-slow-window-lines: Incremental Search.
-* selective-display-ellipses <1>: Outline Visibility.
-* selective-display-ellipses: Display Vars.
-* sentence-end: Sentences.
-* shell-cd-regexp: Interactive Shell.
-* shell-file-name: Single Shell.
-* shell-popd-regexp: Interactive Shell.
-* shell-prompt-pattern: Shell Mode.
-* shell-pushd-regexp: Interactive Shell.
-* sound-alist: Audible Bell.
-* superlock-file: Startup Paths.
-* tab-stop-list: Tab Stops.
-* tab-width: Display Vars.
-* tag-mark-stack-max: Find Tag.
-* tag-table-alist <1>: Find Tag.
-* tag-table-alist: Select Tags Table.
-* tags-always-build-completion-table: Select Tags Table.
-* tags-build-completion-table: Find Tag.
-* tags-file-name <1>: Find Tag.
-* tags-file-name: Select Tags Table.
-* term-file-prefix: Terminal Init.
-* term-setup-hook: Terminal Init.
-* TeX-mode-hook: TeX Print.
-* text-mode-hook: Text Mode.
-* text-pointer-glyph: Mouse Selection.
-* today-invisible-calendar-hook: Calendar Customizing.
-* today-visible-calendar-hook: Calendar Customizing.
-* track-eol: Basic.
-* trim-versions-without-asking: Backup Deletion.
-* truncate-lines: Continuation Lines.
-* truncate-partial-width-windows: Split Window.
-* vc-command-messages: Variables for Check-in/out.
-* vc-comment-alist: Version Headers.
-* vc-default-back-end: Editing with VC.
-* vc-header-alist: Version Headers.
-* vc-initial-comment: Editing with VC.
-* vc-keep-workfiles: Editing with VC.
-* vc-log-mode-hook: Log Entries.
-* vc-make-backup-files: Editing with VC.
-* vc-mistrust-permissions: Variables for Check-in/out.
-* vc-path: Variables for Check-in/out.
-* vc-static-header-alist: Version Headers.
-* vc-suppress-confirm: Variables for Check-in/out.
-* version-control: Backup Names.
-* view-calendar-holidays-initially: Calendar Customizing.
-* view-diary-entries-initially: Calendar Customizing.
-* window-min-height: Change Window.
-* window-min-width: Change Window.
-* write-file-hooks: Saving.
-* x-frame-defaults: XEmacs under X.
-* zmacs-region-stays: Active Regions.
-* zmacs-regions: Active Regions.
+ If anything deserves a reward, it is social contribution.
+Creativity can be a social contribution, but only in so far as society
+is free to use the results. If programmers deserve to be rewarded for
+creating innovative programs, by the same token they deserve to be
+punished if they restrict the use of these programs.
+
+ "Shouldn't a programmer be able to ask for a reward for his
+ creativity?"
+
+ There is nothing wrong with wanting pay for work, or seeking to
+maximize one's income, as long as one does not use means that are
+destructive. But the means customary in the field of software today
+are based on destruction.
+
+ Extracting money from users of a program by restricting their use of
+it is destructive because the restrictions reduce the amount and the
+ways that the program can be used. This reduces the amount of wealth
+that humanity derives from the program. When there is a deliberate
+choice to restrict, the harmful consequences are deliberate destruction.
+
+ The reason a good citizen does not use such destructive means to
+become wealthier is that, if everyone did so, we would all become
+poorer from the mutual destructiveness. This is Kantian ethics; or,
+the Golden Rule. Since I do not like the consequences that result if
+everyone hoards information, I am required to consider it wrong for one
+to do so. Specifically, the desire to be rewarded for one's creativity
+does not justify depriving the world in general of all or part of that
+creativity.
+
+ "Won't programmers starve?"
+
+ I could answer that nobody is forced to be a programmer. Most of us
+cannot manage to get any money for standing on the street and making
+faces. But we are not, as a result, condemned to spend our lives
+standing on the street making faces, and starving. We do something
+else.
+
+ But that is the wrong answer because it accepts the questioner's
+implicit assumption: that without ownership of software, programmers
+cannot possibly be paid a cent. Supposedly it is all or nothing.
+
+ The real reason programmers will not starve is that it will still be
+possible for them to get paid for programming; just not paid as much as
+now.
+
+ Restricting copying is not the only basis for business in software.
+It is the most common basis because it brings in the most money. If it
+were prohibited, or rejected by the customer, software business would
+move to other bases of organization which are now used less often.
+There are always numerous ways to organize any kind of business.
+
+ Probably programming will not be as lucrative on the new basis as it
+is now. But that is not an argument against the change. It is not
+considered an injustice that sales clerks make the salaries that they
+now do. If programmers made the same, that would not be an injustice
+either. (In practice they would still make considerably more than
+that.)
+
+ "Don't people have a right to control how their creativity is
+ used?"
+
+ "Control over the use of one's ideas" really constitutes control over
+other people's lives; and it is usually used to make their lives more
+difficult.
+
+ People who have studied the issue of intellectual property rights
+carefully (such as lawyers) say that there is no intrinsic right to
+intellectual property. The kinds of supposed intellectual property
+rights that the government recognizes were created by specific acts of
+legislation for specific purposes.
+
+ For example, the patent system was established to encourage
+inventors to disclose the details of their inventions. Its purpose was
+to help society rather than to help inventors. At the time, the life
+span of 17 years for a patent was short compared with the rate of
+advance of the state of the art. Since patents are an issue only among
+manufacturers, for whom the cost and effort of a license agreement are
+small compared with setting up production, the patents often do not do
+much harm. They do not obstruct most individuals who use patented
+products.
+
+ The idea of copyright did not exist in ancient times, when authors
+frequently copied other authors at length in works of non-fiction. This
+practice was useful, and is the only way many authors' works have
+survived even in part. The copyright system was created expressly for
+the purpose of encouraging authorship. In the domain for which it was
+invented--books, which could be copied economically only on a printing
+press--it did little harm, and did not obstruct most of the individuals
+who read the books.
+
+ All intellectual property rights are just licenses granted by society
+because it was thought, rightly or wrongly, that society as a whole
+would benefit by granting them. But in any particular situation, we
+have to ask: are we really better off granting such license? What kind
+of act are we licensing a person to do?
+
+ The case of programs today is very different from that of books a
+hundred years ago. The fact that the easiest way to copy a program is
+from one neighbor to another, the fact that a program has both source
+code and object code which are distinct, and the fact that a program is
+used rather than read and enjoyed, combine to create a situation in
+which a person who enforces a copyright is harming society as a whole
+both materially and spiritually; in which a person should not do so
+regardless of whether the law enables him to.
+
+ "Competition makes things get done better."
+
+ The paradigm of competition is a race: by rewarding the winner, we
+encourage everyone to run faster. When capitalism really works this
+way, it does a good job; but its defenders are wrong in assuming it
+always works this way. If the runners forget why the reward is offered
+and become intent on winning, no matter how, they may find other
+strategies--such as, attacking other runners. If the runners get into
+a fist fight, they will all finish late.
+
+ Proprietary and secret software is the moral equivalent of runners
+in a fist fight. Sad to say, the only referee we've got does not seem
+to object to fights; he just regulates them ("For every ten yards you
+run, you can fire one shot"). He really ought to break them up, and
+penalize runners for even trying to fight.
+
+ "Won't everyone stop programming without a monetary incentive?"
+
+ Actually, many people will program with absolutely no monetary
+incentive. Programming has an irresistible fascination for some
+people, usually the people who are best at it. There is no shortage of
+professional musicians who keep at it even though they have no hope of
+making a living that way.
+
+ But really this question, though commonly asked, is not appropriate
+to the situation. Pay for programmers will not disappear, only become
+less. So the right question is, will anyone program with a reduced
+monetary incentive? My experience shows that they will.
+
+ For more than ten years, many of the world's best programmers worked
+at the Artificial Intelligence Lab for far less money than they could
+have had anywhere else. They got many kinds of non-monetary rewards:
+fame and appreciation, for example. And creativity is also fun, a
+reward in itself.
+
+ Then most of them left when offered a chance to do the same
+interesting work for a lot of money.
+
+ What the facts show is that people will program for reasons other
+than riches; but if given a chance to make a lot of money as well, they
+will come to expect and demand it. Low-paying organizations do poorly
+in competition with high-paying ones, but they do not have to do badly
+if the high-paying ones are banned.
+
+ "We need the programmers desperately. If they demand that we stop
+ helping our neighbors, we have to obey."
+
+ You're never so desperate that you have to obey this sort of demand.
+Remember: millions for defense, but not a cent for tribute!
+
+ "Programmers need to make a living somehow."
+
+ In the short run, this is true. However, there are plenty of ways
+that programmers could make a living without selling the right to use a
+program. This way is customary now because it brings programmers and
+businessmen the most money, not because it is the only way to make a
+living. It is easy to find other ways if you want to find them. Here
+are a number of examples.
+
+ A manufacturer introducing a new computer will pay for the porting of
+operating systems onto the new hardware.
+
+ The sale of teaching, hand-holding, and maintenance services could
+also employ programmers.
+
+ People with new ideas could distribute programs as freeware and ask
+for donations from satisfied users or sell hand-holding services. I
+have met people who are already working this way successfully.
+
+ Users with related needs can form users' groups and pay dues. A
+group would contract with programming companies to write programs that
+the group's members would like to use.
+
+ All sorts of development can be funded with a Software Tax:
+
+ Suppose everyone who buys a computer has to pay a certain percent
+ of the price as a software tax. The government gives this to an
+ agency like the NSF to spend on software development.
+
+ But if the computer buyer makes a donation to software development
+ himself, he can take a credit against the tax. He can donate to
+ the project of his own choosing--often, chosen because he hopes to
+ use the results when
+
+ it is done. He can take a credit for any amount of donation up to
+ the total tax he had to pay.
+
+ The total tax rate could be decided by a vote of the payers of the
+ tax, weighted according to the amount they will be taxed on.
+
+ The consequences:
+
+ * The computer-using community supports software development.
+
+ * This community decides what level of support is needed.
+
+ * Users who care which projects their share is spent on can
+ choose this for themselves.
+
+ In the long run, making programs free is a step toward the
+post-scarcity world, where nobody will have to work very hard just to
+make a living. People will be free to devote themselves to activities
+that are fun, such as programming, after spending the necessary ten
+hours a week on required tasks such as legislation, family counseling,
+robot repair, and asteroid prospecting. There will be no need to be
+able to make a living from programming.
+
+ We have already greatly reduced the amount of work that the whole
+society must do for its actual productivity, but only a little of this
+has translated itself into leisure for workers because much
+nonproductive activity is required to accompany productive activity.
+The main causes of this are bureaucracy and isometric struggles against
+competition. Free software will greatly reduce these drains in the
+area of software production. We must do this, in order for technical
+gains in productivity to translate into less work for us.
\1f
-File: xemacs.info, Node: Concept Index, Next: Frame, Prev: Variable Index, Up: Top
+File: xemacs.info, Node: Key Index, Next: Command Index, Prev: Manifesto, Up: Top
-Concept Index
-*************
+Key (Character) Index
+*********************
* Menu:
-* .mailrc file: Mail Headers.
-* // in file name: Minibuffer File.
-* Abbrev mode: Minor Modes.
-* abbrevs: Abbrevs.
-* aborting: Quitting.
-* accumulating text: Accumulating Text.
-* active fields (customization buffer): Customization Groups.
-* active regions: Active Regions.
-* adding menu items: Menu Customization.
-* adding menus: Menu Customization.
-* againformation: Dissociated Press.
-* Apps menu <1>: Apps Menu.
-* Apps menu: Pull-down Menus.
-* apropos: Help.
-* architecture-specific directories: Startup Paths.
-* arguments (from shell): Command Switches.
-* ASCII: Intro to Keystrokes.
-* Asm mode: Asm Mode.
-* astronomical day numbers: Calendar Systems.
-* audible bell, changing: Audible Bell.
-* Auto Delete Selection menu item: Options Menu.
-* Auto Fill mode <1>: Minor Modes.
-* Auto Fill mode <2>: Comments.
-* Auto Fill mode: Auto Fill.
-* Auto-Save mode: Auto Save.
-* autoload: Loading.
-* backup file: Backup.
-* batch mode: Command Switches.
-* bell, changing: Audible Bell.
-* binary packages: Package Terminology.
-* binding: Commands.
-* blank lines <1>: Comments.
-* blank lines: Blank Lines.
-* body lines (Outline mode): Outline Format.
-* bold font: Face Customization.
-* bookmarks: Bookmarks.
-* boredom: Amusements.
-* buffer: Frame.
-* buffer menu: Several Buffers.
-* buffers: Buffers.
-* Buffers menu <1>: Buffers Menu.
-* Buffers menu: Pull-down Menus.
-* Buffers Menu Length... menu item: Options Menu.
-* Buffers Sub-Menus menu item: Options Menu.
-* buggestion: Dissociated Press.
-* bugs: Bugs.
-* byte code: Compiling Libraries.
-* C: Programs.
-* C mode: Program Modes.
-* calendar: Calendar/Diary.
-* calendar and LaTeX: LaTeX Calendar.
-* calendar, first day of week: Move to Beginning or End.
-* candle lighting times: Sexp Diary Entries.
-* case conversion <1>: Case.
-* case conversion: Fixing Case.
-* Case Sensitive Search menu item: Options Menu.
-* centering: Fill Commands.
-* change log: Change Log.
-* changing buffers: Select Buffer.
-* changing menu items: Menu Customization.
-* character set: Intro to Keystrokes.
-* checking in files: Concepts of VC.
-* checking out files: Concepts of VC.
-* Chinese: Mule.
-* Chinese calendar: Calendar Systems.
-* Clear menu item: Edit Menu.
-* clipboard selections: X Clipboard Selection.
-* coding systems: Coding Systems.
-* command <1>: Key Bindings.
-* command: Commands.
-* command history: Repetition.
-* command line arguments: Command Switches.
-* command name: Key Bindings.
-* comments: Comments.
-* comparing files: Comparing Files.
-* compilation errors: Compilation.
-* compiling files: Compilation.
-* completion: Completion.
-* completion (symbol names): Lisp Completion.
-* continuation line: Continuation Lines.
-* Control-Meta: Lists.
-* Coptic calendar: Calendar Systems.
-* Copy menu item: Edit Menu.
-* copying files: Misc File Ops.
-* copying text <1>: Accumulating Text.
-* copying text: Yanking.
-* core distribution: Using Packages.
-* crashes: Auto Save.
-* creating directories: File Names.
-* creating files: Visiting.
-* current buffer: Buffers.
-* current stack frame: Lisp Debug.
-* cursor <1>: Basic.
-* cursor: Point.
-* customization <1>: Customization.
-* customization <2>: Lisp Indent.
-* customization: Commands.
-* customization buffer: Easy Customization.
-* customization groups: Customization Groups.
-* customizing faces: Face Customization.
-* cut buffers: X Selection Commands.
-* Cut menu item: Edit Menu.
-* cutting: Killing.
-* day of year: General Calendar.
-* daylight savings time: Daylight Savings.
-* debugger: Lisp Debug.
-* default argument: Minibuffer.
-* defuns: Defuns.
-* Delete Frame menu item: File Menu.
-* deleting menu items: Menu Customization.
-* deletion <1>: Killing.
-* deletion: Basic.
-* deletion (of files) <1>: Misc File Ops.
-* deletion (of files): Dired.
-* diary: Diary.
-* diary buffer: Fancy Diary Display.
-* diary file: Format of Diary File.
-* ding: Audible Bell.
-* directories: Startup Paths.
-* directory hierarchies: Startup Paths.
-* directory listing: ListDir.
-* Dired: Dired.
-* disabled command: Disabling.
-* disabling menu items: Menu Customization.
-* Distribution: License.
-* doctor: Total Frustration.
-* double slash in file name: Minibuffer File.
-* drastic changes: Reverting.
-* dribble file: Bugs.
-* early package hierarchies: Startup Paths.
-* echo area: Echo Area.
-* Edit menu <1>: Edit Menu.
-* Edit menu: Pull-down Menus.
-* editable fields (customization buffer): Customization Groups.
-* editing level, recursive <1>: Quitting.
-* editing level, recursive: Recursive Edit.
-* EDT: Emulation.
-* Eliza: Total Frustration.
-* Emacs initialization file: Init File.
-* Emacs-Lisp mode: Lisp Eval.
-* enabling menu items: Menu Customization.
-* encoding of characters: Mule.
-* End Macro Recording menu item: Edit Menu.
-* entering Emacs: Entering Emacs.
-* entering XEmacs: Entering Emacs.
-* environment: Single Shell.
-* error log: Compilation.
-* etags program: Create Tags Table.
-* Ethiopic calendar: Calendar Systems.
-* Execute Last Macro menu item: Edit Menu.
-* Exit Emacs menu item: File Menu.
-* exiting <1>: Recursive Edit.
-* exiting: Exiting.
-* expansion (of abbrevs): Abbrevs.
-* expression: Lists.
-* file dates: Interlocking.
-* file directory: ListDir.
-* File menu <1>: File Menu.
-* File menu: Pull-down Menus.
-* file names: File Names.
-* file protection: Interlocking.
-* files <1>: Visiting.
-* files <2>: Files.
-* files: Basic.
-* fill prefix: Fill Prefix.
-* filling: Filling.
-* Font menu item: Options Menu.
-* fonts and faces: Face Customization.
-* formfeed: Pages.
-* Fortran mode: Fortran.
-* frame: Frame.
-* French Revolutionary calendar: Calendar Systems.
-* function <1>: Key Bindings.
-* function: Commands.
-* General Public License: License.
-* global keymap: Keymaps.
-* global substitution: Replace.
-* graphic characters: Basic.
-* Greek: Mule.
-* Gregorian calendar: Other Calendars.
-* grinding: Grinding.
-* hardcopy: Hardcopy.
-* header (TeX mode): TeX Print.
-* headers (of mail message): Mail Headers.
-* heading lines (Outline mode): Outline Format.
-* Hebrew calendar: Calendar Systems.
-* help: Help.
-* Help menu <1>: Help Menu.
-* Help menu: Pull-down Menus.
-* hierarchies: Startup Paths.
-* history of commands: Repetition.
-* history of minibuffer input: Minibuffer History.
-* holiday forms: Holiday Customizing.
-* holidays: Holidays.
-* horizontal scrolling: Horizontal Scrolling.
-* ignoriginal: Dissociated Press.
-* indentation <1>: Comments.
-* indentation <2>: Grinding.
-* indentation: Indentation.
-* inferior process: Compilation.
-* init file: Init File.
-* input methods: Input Methods.
-* Insert File... menu item: File Menu.
-* insertion: Basic.
-* international scripts: Mule.
-* interval operator (in regexps): Etags Regexps.
-* invisible lines: Outline Mode.
-* IPA: Mule.
-* Islamic calendar: Calendar Systems.
-* ISO commercial calendar: Calendar Systems.
-* italic font: Face Customization.
-* Japanese: Mule.
-* Julian calendar: Calendar Systems.
-* Julian day numbers: Calendar Systems.
-* justification: Fill Commands.
-* key rebinding, permanent: Init File.
-* key rebinding, this session: Rebinding.
-* keyboard macros: Keyboard Macros.
-* keycode: Super and Hyper Keys.
-* keymap <1>: Keymaps.
-* keymap: Commands.
-* keystroke: Intro to Keystrokes.
-* keysym: Intro to Keystrokes.
-* keysyms: Super and Hyper Keys.
-* Kill Buffer menu item: File Menu.
-* kill ring: Yanking.
-* killing: Killing.
-* killing Emacs: Exiting.
-* Korean: Mule.
-* language environments: Language Environments.
-* last package hierarchies: Startup Paths.
-* late package hierarchies: Startup Paths.
-* LaTeX: TeX Mode.
-* libraries: Lisp Libraries.
-* license to copy XEmacs: License.
-* line number: Position Info.
-* Lisp: Programs.
-* Lisp mode: Program Modes.
-* list: Lists.
-* loading libraries: Loading.
-* loading Lisp code: Lisp Libraries.
-* local keymap: Keymaps.
-* local variables: Locals.
-* local variables in files: File Variables.
-* locking and version control: Concepts of VC.
-* log entry: Editing with VC.
-* mail <1>: Reading Mail.
-* mail: Sending Mail.
-* major modes: Major Modes.
-* make: Compilation.
-* mark: Mark.
-* mark ring <1>: Mark and Region.
-* mark ring: Mark Ring.
-* Markov chain: Dissociated Press.
-* master file: Concepts of VC.
-* matching parentheses: Matching.
-* Mayan calendar: Calendar Systems.
-* Mayan calendar round: Mayan Calendar.
-* Mayan haab calendar: Mayan Calendar.
-* Mayan long count: Mayan Calendar.
-* Mayan tzolkin calendar: Mayan Calendar.
-* menus <1>: Change Window.
-* menus: Pull-down Menus.
-* message <1>: Reading Mail.
-* message: Sending Mail.
-* Meta: Words.
-* minibuffer <1>: Keymaps.
-* minibuffer <2>: M-x.
-* minibuffer: Minibuffer.
-* minibuffer history: Minibuffer History.
-* minor modes: Minor Modes.
-* mistakes, correcting <1>: Fixit.
-* mistakes, correcting: Undo.
-* mocklisp: Mocklisp.
-* mode hook: Program Modes.
-* mode line <1>: Minor Modes.
-* mode line: Mode Line.
-* mode, Term: Term Mode.
-* modified (buffer): Visiting.
-* modifier key: Intro to Keystrokes.
-* modifier mapping: Super and Hyper Keys.
-* moon, phases of: Lunar Phases.
-* mouse operations: Additional Mouse Operations.
-* mouse selection: Mouse Selection.
-* moving inside the calendar: Calendar Motion.
-* moving text: Yanking.
-* MULE: Mule.
-* multi-frame XEmacs: XEmacs under X.
-* multibyte characters: Mule.
-* named configurations (RCS): Snapshot Caveats.
-* narrowing: Narrowing.
-* New Frame menu item: File Menu.
-* newline: Basic.
-* non-incremental search: Non-Incremental Search.
-* nroff: Nroff Mode.
-* numeric arguments: Arguments.
-* omer count: Sexp Diary Entries.
-* Open File, New Frame... menu item: File Menu.
-* Open File... menu item: File Menu.
-* option <1>: Examining.
-* option: Variables.
-* Options menu <1>: Options Menu.
-* Options menu: Pull-down Menus.
-* other editors: Emulation.
-* outlines: Outline Mode.
-* outragedy: Dissociated Press.
-* Overstrike menu item: Options Menu.
-* Overwrite mode: Minor Modes.
-* package hierarchies: Startup Paths.
-* package path: Startup Paths.
-* packages: Packages.
-* page number: Position Info.
-* pages: Pages.
-* paragraphs: Paragraphs.
-* parasha, weekly: Sexp Diary Entries.
-* Paren Highlighting menu item: Options Menu.
-* parentheses: Matching.
-* Paste menu item: Edit Menu.
-* pasting: Yanking.
-* path: Startup Paths.
-* paths: Startup Paths.
-* per-buffer variables: Locals.
-* Persian calendar: Calendar Systems.
-* phases of the moon: Lunar Phases.
-* pictures: Picture.
-* point <1>: Basic.
-* point: Point.
-* pointer face: Mouse Selection.
-* pointer shapes: Mouse Selection.
-* prefix key sequence: Key Sequences.
-* presidentagon: Dissociated Press.
-* primary selections: X Selection Commands.
-* Print Buffer menu item: File Menu.
-* prompt: Minibuffer.
-* properbose: Dissociated Press.
-* Pull-down Menus <1>: Change Window.
-* Pull-down Menus: Pull-down Menus.
-* query replace: Query Replace.
-* quitting: Quitting.
-* quitting (in search): Incremental Search.
-* quoting: Basic.
-* random sentences: CONX.
-* RCS: Concepts of VC.
-* Read Only menu item: Options Menu.
-* read-only buffer: Misc Buffer.
-* rebinding keys, permanently: Init File.
-* rebinding keys, this session: Rebinding.
-* rectangle <1>: Rectangles in Picture.
-* rectangle: RegRect.
-* rectangles: Rectangles.
-* recursive editing level <1>: Quitting.
-* recursive editing level: Recursive Edit.
-* redefining keys: Key Bindings Using Strings.
-* regexp: Regexp Search.
-* region <1>: Case.
-* region: Mark.
-* registered file: Concepts of VC.
-* registers: Registers.
-* regular expression: Regexp Search.
-* regular packages: Package Terminology.
-* removing directories: File Names.
-* replacement: Replace.
-* restriction: Narrowing.
-* Revert Buffer menu item: File Menu.
-* root of a hierarchy: Startup Paths.
-* rosh hodesh: Sexp Diary Entries.
-* Russian: Mule.
-* Save Buffer As ... menu item: File Menu.
-* Save Buffer menu item: File Menu.
-* Save Options: Options Menu.
-* saving: Visiting.
-* saving option value: Changing an Option.
-* SCCS: Concepts of VC.
-* Scheme mode: Program Modes.
-* scrolling: Scrolling.
-* scrolling in the calendar: Scroll Calendar.
-* searching: Search.
-* selected buffer: Buffers.
-* selected window: Basic Window.
-* selective display: Outline Mode.
-* self-documentation: Help.
-* sentences: Sentences.
-* setting option value: Changing an Option.
-* setting variables: Examining.
-* sexp: Lists.
-* sexp diary entries: Sexp Diary Entries.
-* shell commands: Shell.
-* Shell mode: Shell Mode.
-* shift modifer: Representing Keystrokes.
-* shrinking XEmacs frame: Exiting.
-* simultaneous editing: Interlocking.
-* single-file packages: Package Terminology.
-* site-specific directories: Startup Paths.
-* Size menu item: Options Menu.
-* slashes repeated in file name: Minibuffer File.
-* snapshots and version control: Snapshots.
-* sorting: Sorting.
-* sorting diary entries: Fancy Diary Display.
-* source packages: Package Terminology.
-* spelling: Spelling.
-* Split Frame: File Menu.
-* Start Macro Recording menu item: Edit Menu.
-* startup paths: Startup Paths.
-* string substitution: Replace.
-* subshell: Shell.
-* subtree (Outline mode): Outline Visibility.
-* sunrise and sunset: Sunrise/Sunset.
-* suspending: Exiting.
-* switching buffers: Select Buffer.
-* Syntax Highlighting menu item: Options Menu.
-* syntax table <1>: Syntax.
-* syntax table: Words.
-* tags table: Tags.
-* Teach Extended Commands menu item: Options Menu.
-* techniquitous: Dissociated Press.
-* television: Appending Kills.
-* Term mode: Term Mode.
-* termscript file: Bugs.
-* TeX: TeX Mode.
-* text: Text.
-* Text mode: Text Mode.
-* Tools menu <1>: Tools Menu.
-* Tools menu: Pull-down Menus.
-* top level: Mode Line.
-* transposition <1>: Lists.
-* transposition <2>: Words.
-* transposition: Transpose.
-* truncation: Continuation Lines.
-* typos: Fixit.
-* Un-split (Keep Others): File Menu.
-* Un-split (Keep This): File Menu.
-* undo: Undo.
-* Undo menu item: Edit Menu.
-* variable: Variables.
-* variables: Commands.
-* version control: Version Control.
-* version-specific directories: Startup Paths.
-* vi: Emulation.
-* viewing: Misc File Ops.
-* Viper: Emulation.
-* visiting: Visiting.
-* visiting files: Visiting.
-* weeks, which day they start on: Move to Beginning or End.
-* Weight menu item: Options Menu.
-* widening: Narrowing.
-* window: Frame.
-* windows: Windows.
-* Windows menu: Change Window.
-* word search: Word Search.
-* words <1>: Case.
-* words <2>: Words.
-* words: Fixing Case.
-* work file: Concepts of VC.
-* X resources: X Resources.
-* yahrzeits <1>: Sexp Diary Entries.
-* yahrzeits: From Other Calendar.
-* yanking: Yanking.
-
+* ! (query-replace): Query Replace.
+* " (TeX mode): TeX Editing.
+* , (query-replace): Query Replace.
+* . (Calendar mode): Specified Dates.
+* . (query-replace): Query Replace.
+* ? (Calendar mode): General Calendar.
+* ^ (query-replace): Query Replace.
+* a (Calendar mode): Holidays.
+* BS: Inserting Text.
+* button1: Intro to Keystrokes.
+* button1up: Intro to Keystrokes.
+* button2: Intro to Keystrokes.
+* button2up: Intro to Keystrokes.
+* button3: Intro to Keystrokes.
+* button3up: Intro to Keystrokes.
+* C-<: Setting Mark.
+* C->: Setting Mark.
+* C-@ (Calendar mode): Mark and Region.
+* C-\: Select Input Method.
+* C-] <1>: Quitting.
+* C-]: Recursive Edit.
+* C-_: Undo.
+* C-a: Moving Point.
+* C-a (Calendar mode): Move to Beginning or End.
+* C-b: Moving Point.
+* C-b (Calendar mode): Calendar Unit Motion.
+* C-c: Key Sequences.
+* C-c ' (Picture mode): Insert in Picture.
+* C-c . (Picture mode): Insert in Picture.
+* C-c / (Picture mode): Insert in Picture.
+* C-c ; (Fortran mode): Fortran Comments.
+* C-c < (Picture mode): Insert in Picture.
+* C-c > (Picture mode): Insert in Picture.
+* C-c \ (Picture mode): Insert in Picture.
+* C-c ^ (Picture mode): Insert in Picture.
+* C-c ` (Picture mode): Insert in Picture.
+* C-c C-\ (Shell mode): Shell Mode.
+* C-c C-b (Outline mode): Outline Motion.
+* C-c C-b (Picture mode): Insert in Picture.
+* C-c C-b (TeX mode): TeX Print.
+* C-c C-c (Edit Abbrevs): Editing Abbrevs.
+* C-c C-c (Edit Tab Stops): Tab Stops.
+* C-c C-c (Mail mode): Mail Mode.
+* C-c C-c (Occur mode): Other Repeating Search.
+* C-c C-c (Shell mode): Shell Mode.
+* C-c C-d (Picture mode): Basic Picture.
+* C-c C-d (Shell mode): Shell Mode.
+* C-c C-f (LaTeX mode): TeX Editing.
+* C-c C-f (Outline mode): Outline Motion.
+* C-c C-f (Picture mode): Insert in Picture.
+* C-c C-f C-c (Mail mode): Mail Mode.
+* C-c C-f C-s (Mail mode): Mail Mode.
+* C-c C-f C-t (Mail mode): Mail Mode.
+* C-c C-h (Outline mode): Outline Visibility.
+* C-c C-i (Outline mode): Outline Visibility.
+* C-c C-j (Term mode): Term Mode.
+* C-c C-k (Picture mode): Rectangles in Picture.
+* C-c C-k (Term mode): Term Mode.
+* C-c C-k (TeX mode): TeX Print.
+* C-c C-l (Calendar mode): General Calendar.
+* C-c C-l (TeX mode): TeX Print.
+* C-c C-n (Fortran mode): Fortran Motion.
+* C-c C-n (Outline mode): Outline Motion.
+* C-c C-o (Shell mode): Shell Mode.
+* C-c C-p (Fortran mode): Fortran Motion.
+* C-c C-p (Outline mode): Outline Motion.
+* C-c C-p (TeX mode): TeX Print.
+* C-c C-q (Mail mode): Mail Mode.
+* C-c C-q (Term mode): Paging in Term.
+* C-c C-q (TeX mode): TeX Print.
+* C-c C-r (Fortran mode): Fortran Columns.
+* C-c C-r (Shell mode): Shell Mode.
+* C-c C-r (TeX mode): TeX Print.
+* C-c C-s (Mail mode): Mail Mode.
+* C-c C-s (Outline mode): Outline Visibility.
+* C-c C-u (Outline mode): Outline Motion.
+* C-c C-u (Shell mode): Shell Mode.
+* C-c C-w (Fortran mode): Fortran Columns.
+* C-c C-w (Mail mode): Mail Mode.
+* C-c C-w (Picture mode): Rectangles in Picture.
+* C-c C-w (Shell mode): Shell Mode.
+* C-c C-x (Picture mode): Rectangles in Picture.
+* C-c C-y (Mail mode): Mail Mode.
+* C-c C-y (Picture mode): Rectangles in Picture.
+* C-c C-y (Shell mode): Shell Mode.
+* C-c C-z (Shell mode): Shell Mode.
+* C-c TAB (Picture mode): Tabs in Picture.
+* C-c { (TeX mode): TeX Editing.
+* C-c } (TeX mode): TeX Editing.
+* C-d: Killing.
+* C-d (Shell mode): Shell Mode.
+* C-e: Moving Point.
+* C-e (Calendar mode): Move to Beginning or End.
+* C-END: Moving Point.
+* C-f: Moving Point.
+* C-f (Calendar mode): Calendar Unit Motion.
+* C-g <1>: Quitting.
+* C-g: Minibuffer.
+* C-g (isearch-mode): Incremental Search.
+* C-h <1>: Help.
+* C-h: Key Sequences.
+* C-h A: Apropos.
+* C-h b: Misc Help.
+* C-h C: Coding Systems.
+* C-h c: Key Help.
+* C-h C-\: Select Input Method.
+* C-h C-c: Misc Help.
+* C-h C-d: Misc Help.
+* C-h C-f: Misc Help.
+* C-h C-h: Help.
+* C-h C-k: Misc Help.
+* C-h C-w: Misc Help.
+* C-h f: Documentation.
+* C-h F: Misc Help.
+* C-h f: Name Help.
+* C-h h: Mule Intro.
+* C-h I: Select Input Method.
+* C-h i: Misc Help.
+* C-h k: Key Help.
+* C-h L: Language Environments.
+* C-h l: Misc Help.
+* C-h m: Misc Help.
+* C-h n: Misc Help.
+* C-h p: Library Keywords.
+* C-h s: Syntax Change.
+* C-h t <1>: Misc Help.
+* C-h t: Basic.
+* C-h v <1>: Examining.
+* C-h v <2>: Documentation.
+* C-h v: Name Help.
+* C-h w: Name Help.
+* C-HOME: Moving Point.
+* C-k: Killing.
+* C-l <1>: Scrolling.
+* C-l: Moving Point.
+* C-l (query-replace): Query Replace.
+* C-LEFT: Moving Point.
+* C-M-@ <1>: Lists.
+* C-M-@: Marking Objects.
+* C-M-\ <1>: Multi-line Indent.
+* C-M-\: Indentation Commands.
+* C-M-a: Defuns.
+* C-M-a (Fortran mode): Fortran Motion.
+* C-M-b: Lists.
+* C-M-c: Recursive Edit.
+* C-M-d: Lists.
+* C-M-e: Defuns.
+* C-M-e (Fortran mode): Fortran Motion.
+* C-M-f: Lists.
+* C-M-h <1>: Defuns.
+* C-M-h: Marking Objects.
+* C-M-h (Fortran mode): Fortran Motion.
+* C-M-k <1>: Lists.
+* C-M-k: Killing.
+* C-M-n: Lists.
+* C-M-o: Indentation Commands.
+* C-M-p: Lists.
+* C-M-q: Multi-line Indent.
+* C-M-q (Fortran mode): ForIndent Commands.
+* C-M-t <1>: Lists.
+* C-M-t: Transpose.
+* C-M-u: Lists.
+* C-M-v <1>: Other Window.
+* C-M-v: Minibuffer Edit.
+* C-M-w: Appending Kills.
+* C-M-x <1>: External Lisp.
+* C-M-x: Lisp Eval.
+* C-n: Moving Point.
+* C-n (Calendar mode): Calendar Unit Motion.
+* C-o: Blank Lines.
+* C-p: Moving Point.
+* C-p (Calendar mode): Calendar Unit Motion.
+* C-q: Inserting Text.
+* C-q (isearch-mode): Incremental Search.
+* C-r: Incremental Search.
+* C-r (isearch-mode): Incremental Search.
+* C-r (query-replace): Query Replace.
+* C-RIGHT: Moving Point.
+* C-s: Incremental Search.
+* C-s (isearch-mode): Incremental Search.
+* C-SPC: Setting Mark.
+* C-SPC (Calendar mode): Mark and Region.
+* C-t <1>: Transpose.
+* C-t: Moving Point.
+* C-u: Arguments.
+* C-u - C-x ;: Comments.
+* C-u C-@: Mark Ring.
+* C-u C-SPC: Mark Ring.
+* C-u C-x v v: Editing with VC.
+* C-u TAB: Multi-line Indent.
+* C-v <1>: Scrolling.
+* C-v: Moving Point.
+* C-v (Calendar mode): Scroll Calendar.
+* C-w: Killing.
+* C-w (isearch-mode): Incremental Search.
+* C-w (query-replace): Query Replace.
+* C-x: Key Sequences.
+* C-x $: Selective Display.
+* C-x (: Basic Kbd Macro.
+* C-x ): Basic Kbd Macro.
+* C-x .: Fill Prefix.
+* C-x 0: Change Window.
+* C-x 1: Change Window.
+* C-x 2: Split Window.
+* C-x 3: Split Window.
+* C-x 4: Pop Up Window.
+* C-x 4 .: Find Tag.
+* C-x 4 b: Select Buffer.
+* C-x 4 d: Dired Enter.
+* C-x 4 f: Visiting.
+* C-x 4 m: Sending Mail.
+* C-x 5 b: Select Buffer.
+* C-x 5 C-f: Visiting.
+* C-x ;: Comments.
+* C-x <: Horizontal Scrolling.
+* C-x < (Calendar mode): Scroll Calendar.
+* C-x =: Position Info.
+* C-x >: Horizontal Scrolling.
+* C-x > (Calendar mode): Scroll Calendar.
+* C-x [: Pages.
+* C-x [ (Calendar mode): Calendar Unit Motion.
+* C-x ]: Pages.
+* C-x ] (Calendar mode): Calendar Unit Motion.
+* C-x ^: Change Window.
+* C-x `: Compilation.
+* C-x a g: Defining Abbrevs.
+* C-x a i g: Defining Abbrevs.
+* C-x a i l: Defining Abbrevs.
+* C-x a l: Defining Abbrevs.
+* C-x b: Select Buffer.
+* C-x C-b: List Buffers.
+* C-x C-c: Exiting.
+* C-x C-d: ListDir.
+* C-x C-e: Lisp Eval.
+* C-x C-l: Case.
+* C-x C-o <1>: Killing.
+* C-x C-o: Blank Lines.
+* C-x C-p <1>: Pages.
+* C-x C-p: Marking Objects.
+* C-x C-q: Misc Buffer.
+* C-x C-q (version control): Editing with VC.
+* C-x C-s: Saving.
+* C-x C-t: Transpose.
+* C-x C-u: Case.
+* C-x C-v: Visiting.
+* C-x C-w: Saving.
+* C-x C-x: Setting Mark.
+* C-x C-x (Calendar mode): Mark and Region.
+* C-x d: Dired Enter.
+* C-x DEL <1>: Sentences.
+* C-x DEL <2>: Kill Errors.
+* C-x DEL: Killing.
+* C-x e: Basic Kbd Macro.
+* C-x ESC ESC: Repetition.
+* C-x f: Fill Commands.
+* C-x h: Marking Objects.
+* C-x k: Kill Buffer.
+* C-x l: Pages.
+* C-x m: Sending Mail.
+* C-x n n: Narrowing.
+* C-x n w: Narrowing.
+* C-x o: Other Window.
+* C-x q: Kbd Macro Query.
+* C-x r +: RegNumbers.
+* C-x r b: Bookmarks.
+* C-x r g: RegText.
+* C-x r i: RegText.
+* C-x r j: RegPos.
+* C-x r l: Bookmarks.
+* C-x r m: Bookmarks.
+* C-x r n: RegNumbers.
+* C-x r r: RegRect.
+* C-x r s: RegText.
+* C-x r SPC: RegPos.
+* C-x r w: RegConfig.
+* C-x RET: Mule Intro.
+* C-x RET c: Specify Coding.
+* C-x RET C-\: Select Input Method.
+* C-x RET f: Specify Coding.
+* C-x RET k: Specify Coding.
+* C-x RET p: Specify Coding.
+* C-x RET t: Specify Coding.
+* C-x s: Saving.
+* C-x TAB: Indentation Commands.
+* C-x u: Undo.
+* C-x v =: Old Versions.
+* C-x v a: Change Logs and VC.
+* C-x v c: Editing with VC.
+* C-x v d: VC Status.
+* C-x v h: Version Headers.
+* C-x v i: Editing with VC.
+* C-x v l: VC Status.
+* C-x v r: Making Snapshots.
+* C-x v s: Making Snapshots.
+* C-x v u: Editing with VC.
+* C-x v ~: Old Versions.
+* C-x }: Change Window.
+* C-y: Kill Ring.
+* C-y (isearch-mode): Incremental Search.
+* C-z: Exiting.
+* control key: Intro to Keystrokes.
+* d (Calendar mode): Diary Commands.
+* DEL <1>: Program Modes.
+* DEL <2>: Major Modes.
+* DEL <3>: Kill Errors.
+* DEL: Killing.
+* DEL (isearch-mode): Incremental Search.
+* DEL (query-replace): Query Replace.
+* DOWN: Moving Point.
+* END: Moving Point.
+* ESC <1>: Meta Key.
+* ESC: Key Sequences.
+* ESC (query-replace): Query Replace.
+* F1: Help.
+* g CHAR (Calendar mode): From Other Calendar.
+* g d (Calendar mode): Specified Dates.
+* g m l (Calendar mode): Mayan Calendar.
+* h (Calendar mode): Holidays.
+* Help: Help.
+* HOME: Moving Point.
+* hyper key <1>: Super and Hyper Keys.
+* hyper key <2>: Representing Keystrokes.
+* hyper key: Intro to Keystrokes.
+* i a (Calendar mode): Special Diary Entries.
+* i b (Calendar mode): Special Diary Entries.
+* i c (Calendar mode): Special Diary Entries.
+* i d (Calendar mode): Adding to Diary.
+* i m (Calendar mode): Adding to Diary.
+* i w (Calendar mode): Adding to Diary.
+* i y (Calendar mode): Adding to Diary.
+* LEFT: Moving Point.
+* LFD <1>: Basic Indent.
+* LFD <2>: Major Modes.
+* LFD: String Key Sequences.
+* LFD (TeX mode): TeX Editing.
+* m (Calendar mode): Diary Commands.
+* M (Calendar mode): Lunar Phases.
+* M-!: Single Shell.
+* M-$: Spelling.
+* M-%: Query Replace.
+* M-': Expanding Abbrevs.
+* M-(: Balanced Editing.
+* M-): Balanced Editing.
+* M-,: Tags Search.
+* M--: Arguments.
+* M-- M-c: Fixing Case.
+* M-- M-l: Fixing Case.
+* M-- M-u: Fixing Case.
+* M-.: Find Tag.
+* M-/: Dynamic Abbrevs.
+* M-1: Arguments.
+* M-;: Comments.
+* M-<: Moving Point.
+* M-< (Calendar mode): Move to Beginning or End.
+* M-=: Position Info.
+* M-= (Calendar mode): Mark and Region.
+* M->: Moving Point.
+* M-> (Calendar mode): Move to Beginning or End.
+* M-?: Nroff Mode.
+* M-@ <1>: Words.
+* M-@: Marking Objects.
+* M-[: Paragraphs.
+* M-\ <1>: Indentation Commands.
+* M-\: Killing.
+* M-]: Paragraphs.
+* M-^ <1>: Indentation Commands.
+* M-^: Killing.
+* M-a: Sentences.
+* M-a (Calendar mode): Move to Beginning or End.
+* M-b: Words.
+* M-c: Case.
+* M-C-r: Regexp Search.
+* M-C-s: Regexp Search.
+* M-d <1>: Words.
+* M-d: Killing.
+* M-DEL <1>: Words.
+* M-DEL <2>: Kill Errors.
+* M-DEL: Killing.
+* M-e: Sentences.
+* M-e (Calendar mode): Move to Beginning or End.
+* M-ESC: Lisp Eval.
+* M-f: Words.
+* M-g: Fill Commands.
+* M-h <1>: Paragraphs.
+* M-h: Marking Objects.
+* M-i: Tab Stops.
+* M-k <1>: Sentences.
+* M-k: Killing.
+* M-l: Case.
+* M-LFD: Comments.
+* M-LFD (Fortran mode): ForIndent Commands.
+* M-m: Indentation Commands.
+* M-n <1>: Nroff Mode.
+* M-n: Repetition.
+* M-n (isearch-mode): Incremental Search.
+* M-n (minibuffer history): Minibuffer History.
+* M-n (Shell mode): Shell Mode.
+* M-p <1>: Nroff Mode.
+* M-p: Repetition.
+* M-p (isearch-mode): Incremental Search.
+* M-p (minibuffer history): Minibuffer History.
+* M-p (Shell mode): Shell Mode.
+* M-q: Fill Commands.
+* M-r: Moving Point.
+* M-r (minibuffer history): Minibuffer History.
+* M-s: Fill Commands.
+* M-s (minibuffer history): Minibuffer History.
+* M-SPC: Killing.
+* M-t <1>: Words.
+* M-t: Transpose.
+* M-TAB <1>: Tabs in Picture.
+* M-TAB: Lisp Completion.
+* M-TAB (customization buffer): Changing an Option.
+* M-TAB (isearch-mode): Incremental Search.
+* M-u: Case.
+* M-v <1>: Scrolling.
+* M-v: Moving Point.
+* M-v (Calendar mode): Scroll Calendar.
+* M-w: Kill Ring.
+* M-x: M-x.
+* M-y: Earlier Kills.
+* M-z: Killing.
+* M-{ (Calendar mode): Calendar Unit Motion.
+* M-|: Single Shell.
+* M-} (Calendar mode): Calendar Unit Motion.
+* M-~: Saving.
+* META: Meta Key.
+* meta key: Intro to Keystrokes.
+* next: Scrolling.
+* o (Calendar mode): Specified Dates.
+* p (Calendar mode): To Other Calendar.
+* p d (Calendar mode): General Calendar.
+* pgdn: Scrolling.
+* PGDN: Moving Point.
+* pgup: Scrolling.
+* PGUP: Moving Point.
+* prior: Scrolling.
+* q (Calendar mode): General Calendar.
+* RET: Inserting Text.
+* RET (isearch-mode): Incremental Search.
+* RET (Shell mode): Shell Mode.
+* RIGHT: Moving Point.
+* s (Calendar mode): Diary Commands.
+* S (Calendar mode): Sunrise/Sunset.
+* S-TAB (customization buffer): Changing an Option.
+* shift key: Intro to Keystrokes.
+* SPC: Completion Commands.
+* SPC (Calendar mode): General Calendar.
+* SPC (query-replace): Query Replace.
+* super key <1>: Super and Hyper Keys.
+* super key <2>: Representing Keystrokes.
+* super key: Intro to Keystrokes.
+* t (Calendar mode): LaTeX Calendar.
+* TAB <1>: Basic Indent.
+* TAB <2>: Text Mode.
+* TAB <3>: Indentation.
+* TAB <4>: Major Modes.
+* TAB <5>: Completion Example.
+* TAB: String Key Sequences.
+* TAB (customization buffer): Changing an Option.
+* TAB (Shell mode): Shell Mode.
+* u (Calendar mode) <1>: Diary Commands.
+* u (Calendar mode): Holidays.
+* UP: Moving Point.
+* x (Calendar mode): Holidays.