This is ../info/gnus, produced by makeinfo version 4.3 from gnus.texi.

INFO-DIR-SECTION Emacs
START-INFO-DIR-ENTRY
* Gnus: (gnus).         The newsreader Gnus.
END-INFO-DIR-ENTRY

   This file documents Gnus, the GNU Emacs newsreader.

   Copyright (C) 1995,96,97,98,99,2000,2001 Free Software Foundation,
Inc.

   Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
any later version published by the Free Software Foundation; with the
Invariant Sections being none, with the Front-Cover texts being "A GNU
Manual", and with the Back-Cover Texts as in (a) below.  A copy of the
license is included in the section entitled "GNU Free Documentation
License" in the Emacs manual.

   (a) The FSF's Back-Cover Text is: "You have freedom to copy and
modify this GNU Manual, like GNU software.  Copies published by the Free
Software Foundation raise funds for GNU development."

   This document is part of a collection distributed under the GNU Free
Documentation License.  If you want to distribute this document
separately from the collection, you can do so by adding a copy of the
license to the document, as described in section 6 of the license.


File: gnus,  Node: History,  Next: On Writing Manuals,  Up: Appendices

History
=======

   GNUS was written by Masanobu UMEDA.  When autumn crept up in '94,
Lars Magne Ingebrigtsen grew bored and decided to rewrite Gnus.

   If you want to investigate the person responsible for this outrage,
you can point your (feh!) web browser to `http://quimby.gnus.org/'.
This is also the primary distribution point for the new and spiffy
versions of Gnus, and is known as The Site That Destroys Newsrcs And
Drives People Mad.

   During the first extended alpha period of development, the new Gnus
was called "(ding) Gnus".  "(ding)" is, of course, short for "ding is
not Gnus", which is a total and utter lie, but who cares?  (Besides,
the "Gnus" in this abbreviation should probably be pronounced "news" as
UMEDA intended, which makes it a more appropriate name, don't you
think?)

   In any case, after spending all that energy on coming up with a new
and spunky name, we decided that the name was _too_ spunky, so we
renamed it back again to "Gnus".  But in mixed case.  "Gnus" vs.
"GNUS".  New vs. old.

* Menu:

* Gnus Versions::       What Gnus versions have been released.
* Other Gnus Versions:: Other Gnus versions that also have been released.
* Why?::                What's the point of Gnus?
* Compatibility::       Just how compatible is Gnus with GNUS?
* Conformity::          Gnus tries to conform to all standards.
* Emacsen::             Gnus can be run on a few modern Emacsen.
* Gnus Development::    How Gnus is developed.
* Contributors::        Oodles of people.
* New Features::        Pointers to some of the new stuff in Gnus.


File: gnus,  Node: Gnus Versions,  Next: Other Gnus Versions,  Up: History

Gnus Versions
-------------

   The first "proper" release of Gnus 5 was done in November 1995 when
it was included in the Emacs 19.30 distribution (132 (ding) Gnus
releases plus 15 Gnus 5.0 releases).

   In May 1996 the next Gnus generation (aka. "September Gnus" (after 99
releases)) was released under the name "Gnus 5.2" (40 releases).

   On July 28th 1996 work on Red Gnus was begun, and it was released on
January 25th 1997 (after 84 releases) as "Gnus 5.4" (67 releases).

   On September 13th 1997, Quassia Gnus was started and lasted 37
releases.  If was released as "Gnus 5.6" on March 8th 1998 (46
releases).

   Gnus 5.6 begat Pterodactyl Gnus on August 29th 1998 and was released
as "Gnus 5.8" (after 99 releases and a CVS repository) on December 3rd
1999.

   If you happen upon a version of Gnus that has a prefixed name -
"(ding) Gnus", "September Gnus", "Red Gnus", "Quassia Gnus" - don't
panic.  Don't let it know that you're frightened.  Back away.  Slowly.
Whatever you do, don't run.  Walk away, calmly, until you're out of its
reach.  Find a proper released version of Gnus and snuggle up to that
instead.


File: gnus,  Node: Other Gnus Versions,  Next: Why?,  Prev: Gnus Versions,  Up: History

Other Gnus Versions
-------------------

   In addition to the versions of Gnus which have had their releases
coordinated by Lars, one major development has been Semi-gnus from
Japan.  It's based on a library called SEMI, which provides MIME
capabilities.

   These Gnusae are based mainly on Gnus 5.6 and Pterodactyl Gnus.
Collectively, they are called "Semi-gnus", and different strains are
called T-gnus, ET-gnus, Nana-gnus and Chaos.  These provide powerful
MIME and multilingualization things, especially important for Japanese
users.


File: gnus,  Node: Why?,  Next: Compatibility,  Prev: Other Gnus Versions,  Up: History

Why?
----

   What's the point of Gnus?

   I want to provide a "rad", "happening", "way cool" and "hep"
newsreader, that lets you do anything you can think of.  That was my
original motivation, but while working on Gnus, it has become clear to
me that this generation of newsreaders really belong in the stone age.
Newsreaders haven't developed much since the infancy of the net.  If the
volume continues to rise with the current rate of increase, all current
newsreaders will be pretty much useless.  How do you deal with
newsgroups that have thousands of new articles each day?  How do you
keep track of millions of people who post?

   Gnus offers no real solutions to these questions, but I would very
much like to see Gnus being used as a testing ground for new methods of
reading and fetching news.  Expanding on UMEDA-san's wise decision to
separate the newsreader from the back ends, Gnus now offers a simple
interface for anybody who wants to write new back ends for fetching mail
and news from different sources.  I have added hooks for customizations
everywhere I could imagine it being useful.  By doing so, I'm inviting
every one of you to explore and invent.

   May Gnus never be complete.  `C-u 100 M-x all-hail-emacs' and `C-u
100 M-x all-hail-xemacs'.


File: gnus,  Node: Compatibility,  Next: Conformity,  Prev: Why?,  Up: History

Compatibility
-------------

   Gnus was designed to be fully compatible with GNUS.  Almost all key
bindings have been kept.  More key bindings have been added, of course,
but only in one or two obscure cases have old bindings been changed.

   Our motto is:

                         In a cloud bones of steel.

   All commands have kept their names.  Some internal functions have
changed their names.

   The `gnus-uu' package has changed drastically.  *Note Decoding
Articles::.

   One major compatibility question is the presence of several summary
buffers.  All variables relevant while reading a group are buffer-local
to the summary buffer they belong in.  Although many important
variables have their values copied into their global counterparts
whenever a command is executed in the summary buffer, this change might
lead to incorrect values being used unless you are careful.

   All code that relies on knowledge of GNUS internals will probably
fail.  To take two examples: Sorting `gnus-newsrc-alist' (or changing
it in any way, as a matter of fact) is strictly verboten.  Gnus
maintains a hash table that points to the entries in this alist (which
speeds up many functions), and changing the alist directly will lead to
peculiar results.

   Old hilit19 code does not work at all.  In fact, you should probably
remove all hilit code from all Gnus hooks (`gnus-group-prepare-hook'
and `gnus-summary-prepare-hook').  Gnus provides various integrated
functions for highlighting.  These are faster and more accurate.  To
make life easier for everybody, Gnus will by default remove all hilit
calls from all hilit hooks.  Uncleanliness!  Away!

   Packages like `expire-kill' will no longer work.  As a matter of
fact, you should probably remove all old GNUS packages (and other code)
when you start using Gnus.  More likely than not, Gnus already does
what you have written code to make GNUS do.  (Snicker.)

   Even though old methods of doing things are still supported, only the
new methods are documented in this manual.  If you detect a new method
of doing something while reading this manual, that does not mean you
have to stop doing it the old way.

   Gnus understands all GNUS startup files.

   Overall, a casual user who hasn't written much code that depends on
GNUS internals should suffer no problems.  If problems occur, please
let me know by issuing that magic command `M-x gnus-bug'.

   If you are in the habit of sending bug reports _very_ often, you may
find the helpful help buffer annoying after a while.  If so, set
`gnus-bug-create-help-buffer' to `nil' to avoid having it pop up at you.


File: gnus,  Node: Conformity,  Next: Emacsen,  Prev: Compatibility,  Up: History

Conformity
----------

   No rebels without a clue here, ma'am.  We conform to all standards
known to (wo)man.  Except for those standards and/or conventions we
disagree with, of course.

*RFC 822*
     There are no known breaches of this standard.

*RFC 1036*
     There are no known breaches of this standard, either.

*Son-of-RFC 1036*
     We do have some breaches to this one.

    _X-Newsreader_
    _User-Agent_
          These are considered to be "vanity headers", while I consider
          them to be consumer information.  After seeing so many badly
          formatted articles coming from `tin' and `Netscape' I know
          not to use either of those for posting articles.  I would not
          have known that if it wasn't for the `X-Newsreader' header.

*USEFOR*
     USEFOR is an IETF working group writing a successor to RFC 1036,
     based on Son-of-RFC 1036.  They have produced a number of drafts
     proposing various changes to the format of news articles.  The
     Gnus towers will look into implementing the changes when the draft
     is accepted as an RFC.

   If you ever notice Gnus acting non-compliant with regards to the
texts mentioned above, don't hesitate to drop a note to Gnus Towers and
let us know.


File: gnus,  Node: Emacsen,  Next: Gnus Development,  Prev: Conformity,  Up: History

Emacsen
-------

   Gnus should work on :

   * Emacs 20.3 and up.

   * XEmacs 20.4 and up.


   This Gnus version will absolutely not work on any Emacsen older than
that.  Not reliably, at least.  Older versions of Gnus may work on older
Emacs versions.

   There are some vague differences between Gnus on the various
platforms--XEmacs features more graphics (a logo and a toolbar)--but
other than that, things should look pretty much the same under all
Emacsen.


File: gnus,  Node: Gnus Development,  Next: Contributors,  Prev: Emacsen,  Up: History

Gnus Development
----------------

   Gnus is developed in a two-phased cycle.  The first phase involves
much discussion on the `ding@gnus.org' mailing list, where people
propose changes and new features, post patches and new back ends.  This
phase is called the "alpha" phase, since the Gnusae released in this
phase are "alpha releases", or (perhaps more commonly in other circles)
"snapshots".  During this phase, Gnus is assumed to be unstable and
should not be used by casual users.  Gnus alpha releases have names
like "Red Gnus" and "Quassia Gnus".

   After futzing around for 50-100 alpha releases, Gnus is declared
"frozen", and only bug fixes are applied.  Gnus loses the prefix, and
is called things like "Gnus 5.6.32" instead.  Normal people are
supposed to be able to use these, and these are mostly discussed on the
`gnu.emacs.gnus' newsgroup.

   Some variable defaults differ between alpha Gnusae and released
Gnusae.  In particular, `mail-source-delete-incoming' defaults to `nil'
in alpha Gnusae and `t' in released Gnusae.  This is to prevent lossage
of mail if an alpha release hiccups while handling the mail.

   The division of discussion between the ding mailing list and the Gnus
newsgroup is not purely based on publicity concerns.  It's true that
having people write about the horrible things that an alpha Gnus release
can do (sometimes) in a public forum may scare people off, but more
importantly, talking about new experimental features that have been
introduced may confuse casual users.  New features are frequently
introduced, fiddled with, and judged to be found wanting, and then
either discarded or totally rewritten.  People reading the mailing list
usually keep up with these rapid changes, while people on the newsgroup
can't be assumed to do so.


File: gnus,  Node: Contributors,  Next: New Features,  Prev: Gnus Development,  Up: History

Contributors
------------

   The new Gnus version couldn't have been done without the help of all
the people on the (ding) mailing list.  Every day for over a year I have
gotten billions of nice bug reports from them, filling me with joy,
every single one of them.  Smooches.  The people on the list have been
tried beyond endurance, what with my "oh, that's a neat idea <type
type>, yup, I'll release it right away <ship off> no wait, that doesn't
work at all <type type>, yup, I'll ship that one off right away <ship
off> no, wait, that absolutely does not work" policy for releases.
Micro$oft--bah.  Amateurs.  I'm _much_ worse.  (Or is that "worser"?
"much worser"?  "worsest"?)

   I would like to take this opportunity to thank the Academy for...
oops, wrong show.

   * Masanobu UMEDA--the writer of the original GNUS.

   * Shenghuo Zhu--uudecode.el, mm-uu.el, rfc1843.el, webmail.el,
     nnwarchive and many, many other things connected with MIME and
     other types of en/decoding, as well as general bug fixing, new
     functionality and stuff.

   * Per Abrahamsen--custom, scoring, highlighting and SOUP code (as
     well as numerous other things).

   * Luis Fernandes--design and graphics.

   * Justin Sheehy-the FAQ maintainer.

   * Erik Naggum--help, ideas, support, code and stuff.

   * Wes Hardaker--`gnus-picon.el' and the manual section on "picons"
     (*note Picons::).

   * Kim-Minh Kaplan--further work on the picon code.

   * Brad Miller--`gnus-gl.el' and the GroupLens manual section (*note
     GroupLens::).

   * Sudish Joseph--innumerable bug fixes.

   * Ilja Weis--`gnus-topic.el'.

   * Steven L. Baur--lots and lots and lots of bugs detections and
     fixes.

   * Vladimir Alexiev--the refcard and reference booklets.

   * Felix Lee & Jamie Zawinski--I stole some pieces from the XGnus
     distribution by Felix Lee and JWZ.

   * Scott Byer--`nnfolder.el' enhancements & rewrite.

   * Peter Mutsaers--orphan article scoring code.

   * Ken Raeburn--POP mail support.

   * Hallvard B Furuseth--various bits and pieces, especially dealing
     with .newsrc files.

   * Brian Edmonds--`gnus-bbdb.el'.

   * David Moore--rewrite of `nnvirtual.el' and many other things.

   * Kevin Davidson--came up with the name "ding", so blame him.

   * François Pinard--many, many interesting and thorough bug reports,
     as well as autoconf support.


   This manual was proof-read by Adrian Aichner, with Ricardo Nassif,
Mark Borges, and Jost Krieger proof-reading parts of the manual.

   The following people have contributed many patches and suggestions:

   Christopher Davis, Andrew Eskilsson, Kai Grossjohann, David Kċgedal,
Richard Pieri, Fabrice Popineau, Daniel Quinlan, Jason L. Tibbitts, III,
and Jack Vinson.

   Also thanks to the following for patches and stuff:

   Jari Aalto, Adrian Aichner, Vladimir Alexiev, Russ Allbery, Peter
Arius, Matt Armstrong, Marc Auslander, Miles Bader, Alexei V. Barantsev,
Frank Bennett, Robert Bihlmeyer, Chris Bone, Mark Borges, Mark Boyns,
Lance A. Brown, Rob Browning, Kees de Bruin, Martin Buchholz, Joe
Buehler, Kevin Buhr, Alastair Burt, Joao Cachopo, Zlatko Calusic,
Massimo Campostrini, Castor, David Charlap, Dan Christensen, Kevin
Christian, Jae-you Chung, James H. Cloos, Jr., Laura Conrad, Michael R.
Cook, Glenn Coombs, Andrew J. Cosgriff, Neil Crellin, Frank D. Cringle,
Geoffrey T. Dairiki, Andre Deparade, Ulrik Dickow, Dave Disser, Rui-Tao
Dong, Joev Dubach, Michael Welsh Duggan, Dave Edmondson, Paul Eggert,
Mark W. Eichin, Karl Eichwalder, Enami Tsugutomo, Michael Ernst, Luc
Van Eycken, Sam Falkner, Nelson Jose dos Santos Ferreira, Sigbjorn
Finne, Sven Fischer, Paul Fisher, Decklin Foster, Gary D. Foster, Paul
Franklin, Guy Geens, Arne Georg Gleditsch, David S. Goldberg,
Michelangelo Grigni, Dale Hagglund, D. Hall, Magnus Hammerin, Kenichi
Handa, Raja R. Harinath, Yoshiki Hayashi, P. E. Jareth Hein, Hisashige
Kenji, Scott Hofmann, Marc Horowitz, Gunnar Horrigmo, Richard Hoskins,
Brad Howes, Miguel de Icaza, François Felix Ingrand, Tatsuya Ichikawa,
Ishikawa Ichiro, Lee Iverson, Iwamuro Motonori, Rajappa Iyer, Andreas
Jaeger, Adam P. Jenkins, Randell Jesup, Fred Johansen, Gareth Jones,
Simon Josefsson, Greg Klanderman, Karl Kleinpaste, Michael Klingbeil,
Peter Skov Knudsen, Shuhei Kobayashi, Petr Konecny, Koseki Yoshinori,
Thor Kristoffersen, Jens Lautenbacher, Martin Larose, Seokchan Lee,
Joerg Lenneis, Carsten Leonhardt, James LewisMoss, Christian Limpach,
Markus Linnala, Dave Love, Mike McEwan, Tonny Madsen, Shlomo Mahlab,
Nat Makarevitch, Istvan Marko, David Martin, Jason R. Mastaler, Gordon
Matzigkeit, Timo Metzemakers, Richard Mlynarik, Lantz Moore, Morioka
Tomohiko, Erik Toubro Nielsen, Hrvoje Niksic, Andy Norman, Fred
Oberhauser, C. R. Oldham, Alexandre Oliva, Ken Olstad, Masaharu Onishi,
Hideki Ono, Ettore Perazzoli, William Perry, Stephen Peters, Jens-Ulrik
Holger Petersen, Ulrich Pfeifer, Matt Pharr, Andy Piper, John McClary
Prevost, Bill Pringlemeir, Mike Pullen, Jim Radford, Colin Rafferty,
Lasse Rasinen, Lars Balker Rasmussen, Joe Reiss, Renaud Rioboo, Roland
B. Roberts, Bart Robinson, Christian von Roques, Markus Rost, Jason
Rumney, Wolfgang Rupprecht, Jay Sachs, Dewey M. Sasser, Conrad
Sauerwald, Loren Schall, Dan Schmidt, Ralph Schleicher, Philippe
Schnoebelen, Andreas Schwab, Randal L. Schwartz, Danny Siu, Matt
Simmons, Paul D. Smith, Jeff Sparkes, Toby Speight, Michael Sperber,
Darren Stalder, Richard Stallman, Greg Stark, Sam Steingold, Paul
Stevenson, Jonas Steverud, Paul Stodghill, Kiyokazu Suto, Kurt Swanson,
Samuel Tardieu, Teddy, Chuck Thompson, Tozawa Akihiko, Philippe Troin,
James Troup, Trung Tran-Duc, Jack Twilley, Aaron M. Ucko, Aki Vehtari,
Didier Verna, Vladimir Volovich, Jan Vroonhof, Stefan Waldherr, Pete
Ware, Barry A. Warsaw, Christoph Wedler, Joe Wells, Lee Willis, Katsumi
Yamaoka and Lloyd Zusman.

   For a full overview of what each person has done, the ChangeLogs
included in the Gnus alpha distributions should give ample reading
(550kB and counting).

   Apologies to everybody that I've forgotten, of which there are many,
I'm sure.

   Gee, that's quite a list of people.  I guess that must mean that
there actually are people who are using Gnus.  Who'd'a thunk it!


File: gnus,  Node: New Features,  Prev: Contributors,  Up: History

New Features
------------

* Menu:

* ding Gnus::          New things in Gnus 5.0/5.1, the first new Gnus.
* September Gnus::     The Thing Formally Known As Gnus 5.2/5.3.
* Red Gnus::           Third time best---Gnus 5.4/5.5.
* Quassia Gnus::       Two times two is four, or Gnus 5.6/5.7.
* Pterodactyl Gnus::   Pentad also starts with P, AKA Gnus 5.8/5.9.

   These lists are, of course, just _short_ overviews of the _most_
important new features.  No, really.  There are tons more.  Yes, we
have feeping creaturism in full effect.


File: gnus,  Node: ding Gnus,  Next: September Gnus,  Up: New Features

(ding) Gnus
...........

   New features in Gnus 5.0/5.1:

   * The look of all buffers can be changed by setting format-like
     variables (*note Group Buffer Format:: and *note Summary Buffer
     Format::).

   * Local spool and several NNTP servers can be used at once (*note
     Select Methods::).

   * You can combine groups into virtual groups (*note Virtual
     Groups::).

   * You can read a number of different mail formats (*note Getting
     Mail::).  All the mail back ends implement a convenient mail
     expiry scheme (*note Expiring Mail::).

   * Gnus can use various strategies for gathering threads that have
     lost their roots (thereby gathering loose sub-threads into one
     thread) or it can go back and retrieve enough headers to build a
     complete thread (*note Customizing Threading::).

   * Killed groups can be displayed in the group buffer, and you can
     read them as well (*note Listing Groups::).

   * Gnus can do partial group updates--you do not have to retrieve the
     entire active file just to check for new articles in a few groups
     (*note The Active File::).

   * Gnus implements a sliding scale of subscribedness to groups (*note
     Group Levels::).

   * You can score articles according to any number of criteria (*note
     Scoring::).  You can even get Gnus to find out how to score
     articles for you (*note Adaptive Scoring::).

   * Gnus maintains a dribble buffer that is auto-saved the normal Emacs
     manner, so it should be difficult to lose much data on what you
     have read if your machine should go down (*note Auto Save::).

   * Gnus now has its own startup file (`.gnus') to avoid cluttering up
     the `.emacs' file.

   * You can set the process mark on both groups and articles and
     perform operations on all the marked items (*note
     Process/Prefix::).

   * You can grep through a subset of groups and create a group from the
     results (*note Kibozed Groups::).

   * You can list subsets of groups according to, well, anything (*note
     Listing Groups::).

   * You can browse foreign servers and subscribe to groups from those
     servers (*note Browse Foreign Server::).

   * Gnus can fetch articles, asynchronously, on a second connection to
     the server (*note Asynchronous Fetching::).

   * You can cache articles locally (*note Article Caching::).

   * The uudecode functions have been expanded and generalized (*note
     Decoding Articles::).

   * You can still post uuencoded articles, which was a little-known
     feature of GNUS' past (*note Uuencoding and Posting::).

   * Fetching parents (and other articles) now actually works without
     glitches (*note Finding the Parent::).

   * Gnus can fetch FAQs and group descriptions (*note Group
     Information::).

   * Digests (and other files) can be used as the basis for groups
     (*note Document Groups::).

   * Articles can be highlighted and customized (*note Customizing
     Articles::).

   * URLs and other external references can be buttonized (*note
     Article Buttons::).

   * You can do lots of strange stuff with the Gnus window & frame
     configuration (*note Windows Configuration::).

   * You can click on buttons instead of using the keyboard (*note
     Buttons::).



File: gnus,  Node: September Gnus,  Next: Red Gnus,  Prev: ding Gnus,  Up: New Features

September Gnus
..............

   New features in Gnus 5.2/5.3:

   * A new message composition mode is used.  All old customization
     variables for `mail-mode', `rnews-reply-mode' and `gnus-msg' are
     now obsolete.

   * Gnus is now able to generate "sparse" threads--threads where
     missing articles are represented by empty nodes (*note Customizing
     Threading::).

          (setq gnus-build-sparse-threads 'some)

   * Outgoing articles are stored on a special archive server (*note
     Archived Messages::).

   * Partial thread regeneration now happens when articles are referred.

   * Gnus can make use of GroupLens predictions (*note GroupLens::).

   * Picons (personal icons) can be displayed under XEmacs (*note
     Picons::).

   * A `trn'-like tree buffer can be displayed (*note Tree Display::).

          (setq gnus-use-trees t)

   * An `nn'-like pick-and-read minor mode is available for the summary
     buffers (*note Pick and Read::).

          (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode)

   * In binary groups you can use a special binary minor mode (*note
     Binary Groups::).

   * Groups can be grouped in a folding topic hierarchy (*note Group
     Topics::).

          (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)

   * Gnus can re-send and bounce mail (*note Summary Mail Commands::).

   * Groups can now have a score, and bubbling based on entry frequency
     is possible (*note Group Score::).

          (add-hook 'gnus-summary-exit-hook 'gnus-summary-bubble-group)

   * Groups can be process-marked, and commands can be performed on
     groups of groups (*note Marking Groups::).

   * Caching is possible in virtual groups.

   * `nndoc' now understands all kinds of digests, mail boxes, rnews
     news batches, ClariNet briefs collections, and just about
     everything else (*note Document Groups::).

   * Gnus has a new back end (`nnsoup') to create/read SOUP packets
     (*note SOUP::).

   * The Gnus cache is much faster.

   * Groups can be sorted according to many criteria (*note Sorting
     Groups::).

   * New group parameters have been introduced to set list-addresses and
     expiry times (*note Group Parameters::).

   * All formatting specs allow specifying faces to be used (*note
     Formatting Fonts::).

   * There are several more commands for setting/removing/acting on
     process marked articles on the `M P' submap (*note Setting Process
     Marks::).

   * The summary buffer can be limited to show parts of the available
     articles based on a wide range of criteria.  These commands have
     been bound to keys on the `/' submap (*note Limiting::).

   * Articles can be made persistent with the `*' command (*note
     Persistent Articles::).

   * All functions for hiding article elements are now toggles.

   * Article headers can be buttonized (*note Article Washing::).

   * All mail back ends support fetching articles by `Message-ID'.

   * Duplicate mail can now be treated properly (*note Duplicates::).

   * All summary mode commands are available directly from the article
     buffer (*note Article Keymap::).

   * Frames can be part of `gnus-buffer-configuration' (*note Windows
     Configuration::).

   * Mail can be re-scanned by a daemonic process (*note Daemons::).

   * Gnus can make use of NoCeM files to weed out spam (*note NoCeM::).

          (setq gnus-use-nocem t)

   * Groups can be made permanently visible (*note Listing Groups::).

          (setq gnus-permanently-visible-groups "^nnml:")

   * Many new hooks have been introduced to make customizing easier.

   * Gnus respects the `Mail-Copies-To' header.

   * Threads can be gathered by looking at the `References' header
     (*note Customizing Threading::).

          (setq gnus-summary-thread-gathering-function
                'gnus-gather-threads-by-references)

   * Read articles can be stored in a special backlog buffer to avoid
     refetching (*note Article Backlog::).

          (setq gnus-keep-backlog 50)

   * A clean copy of the current article is always stored in a separate
     buffer to allow easier treatment.

   * Gnus can suggest where to save articles (*note Saving Articles::).

   * Gnus doesn't have to do as much prompting when saving (*note
     Saving Articles::).

          (setq gnus-prompt-before-saving t)

   * `gnus-uu' can view decoded files asynchronously while fetching
     articles (*note Other Decode Variables::).

          (setq gnus-uu-grabbed-file-functions 'gnus-uu-grab-view)

   * Filling in the article buffer now works properly on cited text
     (*note Article Washing::).

   * Hiding cited text adds buttons to toggle hiding, and how much
     cited text to hide is now customizable (*note Article Hiding::).

          (setq gnus-cited-lines-visible 2)

   * Boring headers can be hidden (*note Article Hiding::).

   * Default scoring values can now be set from the menu bar.

   * Further syntax checking of outgoing articles have been added.



File: gnus,  Node: Red Gnus,  Next: Quassia Gnus,  Prev: September Gnus,  Up: New Features

Red Gnus
........

   New features in Gnus 5.4/5.5:

   * `nntp.el' has been totally rewritten in an asynchronous fashion.

   * Article prefetching functionality has been moved up into Gnus
     (*note Asynchronous Fetching::).

   * Scoring can now be performed with logical operators like `and',
     `or', `not', and parent redirection (*note Advanced Scoring::).

   * Article washing status can be displayed in the article mode line
     (*note Misc Article::).

   * `gnus.el' has been split into many smaller files.

   * Suppression of duplicate articles based on Message-ID can be done
     (*note Duplicate Suppression::).

          (setq gnus-suppress-duplicates t)

   * New variables for specifying what score and adapt files are to be
     considered home score and adapt files (*note Home Score File::)
     have been added.

   * `nndoc' was rewritten to be easily extendable (*note Document
     Server Internals::).

   * Groups can inherit group parameters from parent topics (*note
     Topic Parameters::).

   * Article editing has been revamped and is now actually usable.

   * Signatures can be recognized in more intelligent fashions (*note
     Article Signature::).

   * Summary pick mode has been made to look more `nn'-like.  Line
     numbers are displayed and the `.' command can be used to pick
     articles (`Pick and Read').

   * Commands for moving the `.newsrc.eld' from one server to another
     have been added (*note Changing Servers::).

   * There's a way now to specify that "uninteresting" fields be
     suppressed when generating lines in buffers (*note Advanced
     Formatting::).

   * Several commands in the group buffer can be undone with `M-C-_'
     (*note Undo::).

   * Scoring can be done on words using the new score type `w' (*note
     Score File Format::).

   * Adaptive scoring can be done on a Subject word-by-word basis
     (*note Adaptive Scoring::).

          (setq gnus-use-adaptive-scoring '(word))

   * Scores can be decayed (*note Score Decays::).

          (setq gnus-decay-scores t)

   * Scoring can be performed using a regexp on the Date header.  The
     Date is normalized to compact ISO 8601 format first (*note Score
     File Format::).

   * A new command has been added to remove all data on articles from
     the native server (*note Changing Servers::).

   * A new command for reading collections of documents (`nndoc' with
     `nnvirtual' on top) has been added--`M-C-d' (*note Really Various
     Summary Commands::).

   * Process mark sets can be pushed and popped (*note Setting Process
     Marks::).

   * A new mail-to-news back end makes it possible to post even when
     the NNTP server doesn't allow posting (*note Mail-To-News
     Gateways::).

   * A new back end for reading searches from Web search engines
     ("DejaNews", "Alta Vista", "InReference") has been added (*note
     Web Searches::).

   * Groups inside topics can now be sorted using the standard sorting
     functions, and each topic can be sorted independently (*note Topic
     Sorting::).

   * Subsets of the groups can be sorted independently (`Sorting
     Groups').

   * Cached articles can be pulled into the groups (*note Summary
     Generation Commands::).

   * Score files are now applied in a more reliable order (*note Score
     Variables::).

   * Reports on where mail messages end up can be generated (*note
     Splitting Mail::).

   * More hooks and functions have been added to remove junk from
     incoming mail before saving the mail (*note Washing Mail::).

   * Emphasized text can be properly fontisized:



File: gnus,  Node: Quassia Gnus,  Next: Pterodactyl Gnus,  Prev: Red Gnus,  Up: New Features

Quassia Gnus
............

   New features in Gnus 5.6:

   * New functionality for using Gnus as an offline newsreader has been
     added.  A plethora of new commands and modes have been added.  See
     *note Gnus Unplugged:: for the full story.

   *  The `nndraft' back end has returned, but works differently than
     before.  All Message buffers are now also articles in the `nndraft'
     group, which is created automatically.

   * `gnus-alter-header-function' can now be used to alter header
     values.

   *  `gnus-summary-goto-article' now accept Message-ID's.

   *  A new Message command for deleting text in the body of a message
     outside the region: `C-c C-v'.

   *  You can now post to component group in `nnvirtual' groups with
     `C-u C-c C-c'.

   *  `nntp-rlogin-program'--new variable to ease customization.

   *  `C-u C-c C-c' in `gnus-article-edit-mode' will now inhibit
     re-highlighting of the article buffer.

   *  New element in `gnus-boring-article-headers'--`long-to'.

   *  `M-i' symbolic prefix command.  See the section "Symbolic
     Prefixes" in the Gnus manual for details.

   *  `L' and `I' in the summary buffer now take the symbolic prefix
     `a' to add the score rule to the "all.SCORE" file.

   *  `gnus-simplify-subject-functions' variable to allow greater
     control over simplification.

   *  `A T'--new command for fetching the current thread.

   *  `/ T'--new command for including the current thread in the limit.

   *  `M-<RET>' is a new Message command for breaking cited text.

   *  `\\1'-expressions are now valid in `nnmail-split-methods'.

   *  The `custom-face-lookup' function has been removed.  If you used
     this function in your initialization files, you must rewrite them
     to use `face-spec-set' instead.

   *  Canceling now uses the current select method.  Symbolic prefix
     `a' forces normal posting method.

   *  New command to translate M******** sm*rtq**t*s into proper
     text--`W d'.

   *  For easier debugging of `nntp', you can set
     `nntp-record-commands' to a non-`nil' value.

   *  `nntp' now uses `~/.authinfo', a `.netrc'-like file, for
     controlling where and how to send AUTHINFO to NNTP servers.

   *  A command for editing group parameters from the summary buffer
     has been added.

   *  A history of where mails have been split is available.

   *  A new article date command has been added--`article-date-iso8601'.

   *  Subjects can be simplified when threading by setting
     `gnus-score-thread-simplify'.

   *  A new function for citing in Message has been
     added--`message-cite-original-without-signature'.

   *  `article-strip-all-blank-lines'--new article command.

   *  A new Message command to kill to the end of the article has been
     added.

   *  A minimum adaptive score can be specified by using the
     `gnus-adaptive-word-minimum' variable.

   *  The "lapsed date" article header can be kept continually updated
     by the `gnus-start-date-timer' command.

   *  Web listserv archives can be read with the `nnlistserv' back end.

   *  Old dejanews archives can now be read by `nnweb'.



File: gnus,  Node: Pterodactyl Gnus,  Prev: Quassia Gnus,  Up: New Features

Pterodactyl Gnus
................

   New features in Gnus 5.8:

   * The mail-fetching functions have changed.  See the manual for the
     many details.  In particular, all procmail fetching variables are
     gone.

     If you used procmail like in

          (setq nnmail-use-procmail t)
          (setq nnmail-spool-file 'procmail)
          (setq nnmail-procmail-directory "~/mail/incoming/")
          (setq nnmail-procmail-suffix "\\.in")

     this now has changed to

          (setq mail-sources
                '((directory :path "~/mail/incoming/"
          		   :suffix ".in")))

     More information is available in the info doc at Select Methods ->
     Getting Mail -> Mail Sources

   * Gnus is now a MIME-capable reader.  This affects many parts of
     Gnus, and adds a slew of new commands.  See the manual for details.

   * Gnus has also been multilingualized.  This also affects too many
     parts of Gnus to summarize here, and adds many new variables.

   * `gnus-auto-select-first' can now be a function to be called to
     position point.

   * The user can now decide which extra headers should be included in
     summary buffers and NOV files.

   * `gnus-article-display-hook' has been removed.  Instead, a number
     of variables starting with `gnus-treat-' have been added.

   * The Gnus posting styles have been redone again and now works in a
     subtly different manner.

   * New web-based back ends have been added: `nnslashdot',
     `nnwarchive' and `nnultimate'.  nnweb has been revamped, again, to
     keep up with ever-changing layouts.

   * Gnus can now read IMAP mail via `nnimap'.



File: gnus,  Node: On Writing Manuals,  Next: Terminology,  Prev: History,  Up: Appendices

On Writing Manuals
==================

   I guess most manuals are written after-the-fact; documenting a
program that's already there.  This is not how this manual is written.
When implementing something, I write the manual entry for that something
straight away.  I then see that it's difficult to explain the
functionality, so I write how it's supposed to be, and then I change the
implementation.  Writing the documentation and writing the code goes
hand in hand.

   This, of course, means that this manual has no, or little, flow.  It
documents absolutely everything in Gnus, but often not where you're
looking for it.  It is a reference manual, and not a guide to how to get
started with Gnus.

   That would be a totally different book, that should be written using
the reference manual as source material.  It would look quite
differently.


File: gnus,  Node: Terminology,  Next: Customization,  Prev: On Writing Manuals,  Up: Appendices

Terminology
===========

"news"
     This is what you are supposed to use this thing for--reading news.
     News is generally fetched from a nearby NNTP server, and is
     generally publicly available to everybody.  If you post news, the
     entire world is likely to read just what you have written, and
     they'll all snigger mischievously.  Behind your back.

"mail"
     Everything that's delivered to you personally is mail.  Some
     news/mail readers (like Gnus) blur the distinction between mail
     and news, but there is a difference.  Mail is private.  News is
     public.  Mailing is not posting, and replying is not following up.

"reply"
     Send a mail to the person who has written what you are reading.

"follow up"
     Post an article to the current newsgroup responding to the article
     you are reading.

"back end"
     Gnus gets fed articles from a number of back ends, both news and
     mail back ends.  Gnus does not handle the underlying media, so to
     speak--this is all done by the back ends.

"native"
     Gnus will always use one method (and back end) as the "native", or
     default, way of getting news.

"foreign"
     You can also have any number of foreign groups active at the same
     time.  These are groups that use non-native non-secondary back
     ends for getting news.

"secondary"
     Secondary back ends are somewhere half-way between being native
     and being foreign, but they mostly act like they are native.

"article"
     A message that has been posted as news.

"mail message"
     A message that has been mailed.

"message"
     A mail message or news article

"head"
     The top part of a message, where administrative information (etc.)
     is put.

"body"
     The rest of an article.  Everything not in the head is in the body.

"header"
     A line from the head of an article.

"headers"
     A collection of such lines, or a collection of heads.  Or even a
     collection of NOV lines.

"NOV"
     When Gnus enters a group, it asks the back end for the headers of
     all unread articles in the group.  Most servers support the News
     OverView format, which is more compact and much faster to read and
     parse than the normal HEAD format.

"level"
     Each group is subscribed at some "level" or other (1-9).  The ones
     that have a lower level are "more" subscribed than the groups with
     a higher level.  In fact, groups on levels 1-5 are considered
     "subscribed"; 6-7 are "unsubscribed"; 8 are "zombies"; and 9 are
     "killed".  Commands for listing groups and scanning for new
     articles will all use the numeric prefix as "working level".

"killed groups"
     No information on killed groups is stored or updated, which makes
     killed groups much easier to handle than subscribed groups.

"zombie groups"
     Just like killed groups, only slightly less dead.

"active file"
     The news server has to keep track of what articles it carries, and
     what groups exist.  All this information in stored in the active
     file, which is rather large, as you might surmise.

"bogus groups"
     A group that exists in the `.newsrc' file, but isn't known to the
     server (i.e.,  it isn't in the active file), is a _bogus group_.
     This means that the group probably doesn't exist (any more).

"activating"
     The act of asking the server for info on a group and computing the
     number of unread articles is called "activating the group".
     Un-activated groups are listed with `*' in the group buffer.

"server"
     A machine one can connect to and get news (or mail) from.

"select method"
     A structure that specifies the back end, the server and the virtual
     server settings.

"virtual server"
     A named select method.  Since a select method defines all there is
     to know about connecting to a (physical) server, taking the thing
     as a whole is a virtual server.

"washing"
     Taking a buffer and running it through a filter of some sort.  The
     result will (more often than not) be cleaner and more pleasing
     than the original.

"ephemeral groups"
     Most groups store data on what articles you have read.  "Ephemeral"
     groups are groups that will have no data stored--when you exit the
     group, it'll disappear into the aether.

"solid groups"
     This is the opposite of ephemeral groups.  All groups listed in the
     group buffer are solid groups.

"sparse articles"
     These are article placeholders shown in the summary buffer when
     `gnus-build-sparse-threads' has been switched on.

"threading"
     To put responses to articles directly after the articles they
     respond to--in a hierarchical fashion.

"root"
     The first article in a thread is the root.  It is the ancestor of
     all articles in the thread.

"parent"
     An article that has responses.

"child"
     An article that responds to a different article--its parent.

"digest"
     A collection of messages in one file.  The most common digest
     format is specified by RFC 1153.


File: gnus,  Node: Customization,  Next: Troubleshooting,  Prev: Terminology,  Up: Appendices

Customization
=============

   All variables are properly documented elsewhere in this manual.  This
section is designed to give general pointers on how to customize Gnus
for some quite common situations.

* Menu:

* Slow/Expensive Connection:: You run a local Emacs and get the news elsewhere.
* Slow Terminal Connection::  You run a remote Emacs.
* Little Disk Space::         You feel that having large setup files is icky.
* Slow Machine::              You feel like buying a faster machine.


File: gnus,  Node: Slow/Expensive Connection,  Next: Slow Terminal Connection,  Up: Customization

Slow/Expensive NNTP Connection
------------------------------

   If you run Emacs on a machine locally, and get your news from a
machine over some very thin strings, you want to cut down on the amount
of data Gnus has to get from the NNTP server.

`gnus-read-active-file'
     Set this to `nil', which will inhibit Gnus from requesting the
     entire active file from the server.  This file is often very
     large.  You also have to set `gnus-check-new-newsgroups' and
     `gnus-check-bogus-newsgroups' to `nil' to make sure that Gnus
     doesn't suddenly decide to fetch the active file anyway.

`gnus-nov-is-evil'
     This one has to be `nil'.  If not, grabbing article headers from
     the NNTP server will not be very fast.  Not all NNTP servers
     support XOVER; Gnus will detect this by itself.


File: gnus,  Node: Slow Terminal Connection,  Next: Little Disk Space,  Prev: Slow/Expensive Connection,  Up: Customization

Slow Terminal Connection
------------------------

   Let's say you use your home computer for dialing up the system that
runs Emacs and Gnus.  If your modem is slow, you want to reduce (as
much as possible) the amount of data sent over the wires.

`gnus-auto-center-summary'
     Set this to `nil' to inhibit Gnus from re-centering the summary
     buffer all the time.  If it is `vertical', do only vertical
     re-centering.  If it is neither `nil' nor `vertical', do both
     horizontal and vertical recentering.

`gnus-visible-headers'
     Cut down on the headers included in the articles to the minimum.
     You can, in fact, make do without them altogether--most of the
     useful data is in the summary buffer, anyway.  Set this variable to
     `^NEVVVVER' or `From:', or whatever you feel you need.

     Set this hook to all the available hiding commands:
          (setq gnus-treat-hide-headers 'head
                gnus-treat-hide-signature t
                gnus-treat-hide-citation t)

`gnus-use-full-window'
     By setting this to `nil', you can make all the windows smaller.
     While this doesn't really cut down much generally, it means that
     you have to see smaller portions of articles before deciding that
     you didn't want to read them anyway.

`gnus-thread-hide-subtree'
     If this is non-`nil', all threads in the summary buffer will be
     hidden initially.

`gnus-updated-mode-lines'
     If this is `nil', Gnus will not put information in the buffer mode
     lines, which might save some time.


File: gnus,  Node: Little Disk Space,  Next: Slow Machine,  Prev: Slow Terminal Connection,  Up: Customization

Little Disk Space
-----------------

   The startup files can get rather large, so you may want to cut their
sizes a bit if you are running out of space.

`gnus-save-newsrc-file'
     If this is `nil', Gnus will never save `.newsrc'--it will only
     save `.newsrc.eld'.  This means that you will not be able to use
     any other newsreaders than Gnus.  This variable is `t' by default.

`gnus-read-newsrc-file'
     If this is `nil', Gnus will never read `.newsrc'--it will only
     read `.newsrc.eld'.  This means that you will not be able to use
     any other newsreaders than Gnus.  This variable is `t' by default.

`gnus-save-killed-list'
     If this is `nil', Gnus will not save the list of dead groups.  You
     should also set `gnus-check-new-newsgroups' to `ask-server' and
     `gnus-check-bogus-newsgroups' to `nil' if you set this variable to
     `nil'.  This variable is `t' by default.


File: gnus,  Node: Slow Machine,  Prev: Little Disk Space,  Up: Customization

Slow Machine
------------

   If you have a slow machine, or are just really impatient, there are a
few things you can do to make Gnus run faster.

   Set `gnus-check-new-newsgroups' and `gnus-check-bogus-newsgroups' to
`nil' to make startup faster.

   Set `gnus-show-threads', `gnus-use-cross-reference' and
`gnus-nov-is-evil' to `nil' to make entering and exiting the summary
buffer faster.


File: gnus,  Node: Troubleshooting,  Next: Gnus Reference Guide,  Prev: Customization,  Up: Appendices

Troubleshooting
===============

   Gnus works _so_ well straight out of the box--I can't imagine any
problems, really.

   Ahem.

  1. Make sure your computer is switched on.

  2. Make sure that you really load the current Gnus version.  If you
     have been running GNUS, you need to exit Emacs and start it up
     again before Gnus will work.

  3. Try doing an `M-x gnus-version'.  If you get something that looks
     like `Gnus v5.46; nntp 4.0' you have the right files loaded.  If,
     on the other hand, you get something like `NNTP 3.x' or `nntp
     flee', you have some old `.el' files lying around.  Delete these.

  4. Read the help group (`G h' in the group buffer) for a FAQ and a
     how-to.

  5. Gnus works on many recursive structures, and in some extreme (and
     very rare) cases Gnus may recurse down "too deeply" and Emacs will
     beep at you.  If this happens to you, set `max-lisp-eval-depth' to
     500 or something like that.

   If all else fails, report the problem as a bug.

   If you find a bug in Gnus, you can report it with the `M-x gnus-bug'
command.  `M-x set-variable <RET> debug-on-error <RET> t <RET>', and
send me the backtrace.  I will fix bugs, but I can only fix them if you
send me a precise description as to how to reproduce the bug.

   You really can never be too detailed in a bug report.  Always use the
`M-x gnus-bug' command when you make bug reports, even if it creates a
10Kb mail each time you use it, and even if you have sent me your
environment 500 times before.  I don't care.  I want the full info each
time.

   It is also important to remember that I have no memory whatsoever.
If you send a bug report, and I send you a reply, and then you just send
back "No, it's not! Moron!", I will have no idea what you are insulting
me about.  Always over-explain everything.  It's much easier for all of
us--if I don't have all the information I need, I will just mail you
and ask for more info, and everything takes more time.

   If the problem you're seeing is very visual, and you can't quite
explain it, copy the Emacs window to a file (with `xwd', for instance),
put it somewhere it can be reached, and include the URL of the picture
in the bug report.

   If you just need help, you are better off asking on
`gnu.emacs.gnus'.  I'm not very helpful.

   You can also ask on the ding mailing list--`ding@gnus.org'.  Write
to `ding-request@gnus.org' to subscribe.

