[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.2 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.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.2.1 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. It 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.

On the 26th of October 2000, Oort Gnus was begun and was released as Gnus 5.10 on May 1st 2003 (24 releases).

On the January 4th 2004, No Gnus was begun.

On April 19, 2010 Gnus development was moved to Git. See http://git.gnus.org for details (http://www.gnus.org will be updated with the information when possible).

On the January 31th 2012, Ma Gnus was begun.

If you happen upon a version of Gnus that has a prefixed name—“(ding) Gnus”, “September Gnus”, “Red Gnus”, “Quassia Gnus”, “Pterodactyl Gnus”, “Oort Gnus”, “No Gnus”, “Ma 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.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.2.2 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.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.2.3 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. See section 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.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.2.4 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 (2)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.


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 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.

MIME—RFC 2045–2049 etc

All the various MIME RFCs are supported.

Disposition Notifications—RFC 2298

Message Mode is able to request notifications from the receiver.

PGP—RFC 1991 and RFC 2440

RFC 1991 is the original PGP message specification, published as an informational RFC. RFC 2440 was the follow-up, now called Open PGP, and put on the Standards Track. Both document a non-MIME aware PGP format. Gnus supports both encoding (signing and encryption) and decoding (verification and decryption).

PGP/MIME—RFC 2015/3156

RFC 2015 (superseded by 3156 which references RFC 2440 instead of RFC 1991) describes the MIME-wrapping around the RFC 1991/2440 format. Gnus supports both encoding and decoding.


RFC 2633 describes the S/MIME format.

IMAP—RFC 1730/2060, RFC 2195, RFC 2086, RFC 2359, RFC 2595, RFC 1731

RFC 1730 is IMAP version 4, updated somewhat by RFC 2060 (IMAP 4 revision 1). RFC 2195 describes CRAM-MD5 authentication for IMAP. RFC 2086 describes access control lists (ACLs) for IMAP. RFC 2359 describes a IMAP protocol enhancement. RFC 2595 describes the proper TLS integration (STARTTLS) with IMAP. RFC 1731 describes the GSSAPI/Kerberos4 mechanisms for IMAP.

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.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.2.5 Emacsen

This version of Gnus should work on:

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. Particularly, Gnus 5.10.8 should also work on Emacs 20.7 and XEmacs 21.1.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.2.6 Gnus Development

Gnus is developed in a two-phased cycle. The first phase involves much discussion on the development mailing list ‘ding@gnus.org’, 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 “Oort Gnus” and “No Gnus”. See section Gnus Versions.

After futzing around for 10–100 alpha releases, Gnus is declared frozen, and only bug fixes are applied. Gnus loses the prefix, and is called things like “Gnus 5.10.1” instead. Normal people are supposed to be able to use these, and these are mostly discussed on the ‘gnu.emacs.gnus’ newsgroup. This newgroup is mirrored to the mailing list ‘info-gnus-english@gnu.org’ which is carried on Gmane as ‘gmane.emacs.gnus.user’. These releases are finally integrated in Emacs.

Some variable defaults differ between alpha Gnusae and released Gnusae, in particular, mail-source-delete-incoming. This is to prevent lossage of mail if an alpha release hiccups while handling the mail. See section Mail Source Customization.

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.

So if you have problems with or questions about the alpha versions, direct those to the ding mailing list ‘ding@gnus.org’. This list is also available on Gmane as ‘gmane.emacs.gnus.general’.

Some variable defaults differ between alpha Gnusae and released Gnusae, in particular, mail-source-delete-incoming. This is to prevent lossage of mail if an alpha release hiccups while handling the mail. See section Mail Source Customization.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.2.7 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.

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, Kevin Greiner, Jesper Harder, Paul Jarc, Simon Josefsson, David Kågedal, Richard Pieri, Fabrice Popineau, Daniel Quinlan, Michael Shields, Reiner Steib, Jason L. Tibbitts, III, Jack Vinson, Katsumi Yamaoka, and Teodor Zlatanov.

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, Tassilo Horn, 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, 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, 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!

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.2.8 New Features

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.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ] (ding) Gnus

New features in Gnus 5.0/5.1:

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ] September Gnus

New features in Gnus 5.2/5.3:

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ] Red Gnus

New features in Gnus 5.4/5.5:

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ] Quassia Gnus

New features in Gnus 5.6:

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ] Pterodactyl Gnus

New features in Gnus 5.8:

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ] Oort Gnus

New features in Gnus 5.10:

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ] No Gnus

New features in No Gnus:

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ] Ma Gnus

I’m sure there will be lots of text here. It’s really spelled 真 Gnus.

New features in Ma Gnus:

[ < ] [ > ]   [ << ] [ Up ] [ >> ]

This document was generated on January 25, 2015 using texi2html 1.82.