X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=info%2Fxemacs.info-21;h=f55fcc168bce91782f350fcc614e18f841330848;hb=e47437dbf7b5331e93c4a2c5de17a3544060d806;hp=24632e9400de65fefd6be97e4e6a45e5dd2a26ad;hpb=82da33b61c3e2dd2937db17b75b2838188793053;p=chise%2Fxemacs-chise.git- diff --git a/info/xemacs.info-21 b/info/xemacs.info-21 index 24632e9..f55fcc1 100644 --- a/info/xemacs.info-21 +++ b/info/xemacs.info-21 @@ -1,5 +1,5 @@ -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 @@ -30,753 +30,954 @@ versions, except that the sections entitled "The GNU Manifesto", translation approved by the author instead of in the original English.  -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. -* 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. -* completion-ignored-extensions: Completion. -* 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: Completion. -* 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.  -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. -* 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. -* 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. -* 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. -* 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. -* 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. -* 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.