*** empty log message ***
[gnus] / texi / gnus.texi
1 \input texinfo                  @c -*-texinfo-*-
2 @comment %**start of header (This is for running Texinfo on a region.)
3 @setfilename gnus.info
4 @settitle Gnus 5.0 Manual
5 @synindex fn cp
6 @synindex vr cp
7 @synindex pg cp
8 @iftex
9 @finalout
10 @end iftex
11 @setchapternewpage odd
12 @c      @smallbook
13 @comment %**end of header (This is for running Texinfo on a region.)
14 @tex
15 \overfullrule=0pt
16 %\global\baselineskip 30pt      % For printing in double spaces
17 @end tex
18
19 @ifinfo
20
21 This file documents Gnus, the GNU Emacs newsreader.
22
23 Copyright (C) 1995 Free Software Foundation, Inc.
24
25 Permission is granted to make and distribute verbatim copies of
26 this manual provided the copyright notice and this permission notice
27 are preserved on all copies.
28
29 @ignore
30 Permission is granted to process this file through Tex and print the
31 results, provided the printed document carries copying permission
32 notice identical to this one except for the removal of this paragraph
33 (this paragraph not being relevant to the printed manual).
34
35 @end ignore
36 Permission is granted to copy and distribute modified versions of this
37 manual under the conditions for verbatim copying, provided also that the
38 entire resulting derived work is distributed under the terms of a
39 permission notice identical to this one.
40
41 Permission is granted to copy and distribute translations of this manual
42 into another language, under the above conditions for modified versions.
43 @end ifinfo
44
45 @iftex
46
47 @titlepage
48 @title Gnus Manual
49
50 @author by Lars Magne Ingebrigtsen
51 @page
52 @vskip 0pt plus 1filll
53 Copyright @copyright{} 1995 Free Software Foundation, Inc. 
54
55 Permission is granted to make and distribute verbatim copies of
56 this manual provided the copyright notice and this permission notice
57 are preserved on all copies.
58
59 Permission is granted to copy and distribute modified versions of this
60 manual under the conditions for verbatim copying, provided that the
61 entire resulting derived work is distributed under the terms of a
62 permission notice identical to this one.
63
64 Permission is granted to copy and distribute translations of this manual
65 into another language, under the above conditions for modified versions.
66
67 Cover art by Etienne Suvasa.
68 @end titlepage
69 @page
70
71 @end iftex
72
73 @node Top
74 @top The Gnus Newsreader
75
76 You can read news (and mail) from within Emacs by using Gnus.  The news
77 can be gotten by any nefarious means you can think of - @sc{nntp}, local
78 spool or your mbox file.  All at the same time, if you want to push your
79 luck.
80
81 @menu
82 * History::                 How Gnus got where it is today.
83 * Terminology::             We use really difficult, like, words here.
84 * Starting Up::             Finding news can be a pain.
85 * The Group Buffer::        Selecting, subscribing and killing groups.
86 * The Summary Buffer::      Reading, saving and posting articles.
87 * The Article Buffer::      Displaying and handling articles.
88 * The Server Buffer::       Making and editing virtual servers.
89 * Various::                 General purpose settings.
90 * Customization::           Tailoring Gnus to your needs.
91 * Troubleshooting::         What you might try if things do not work.
92 * The End::                 Farewell and goodbye.
93 * Appendix::                Technical stuff for technical people.
94 * Index::                   Variable, function and concept index.
95 * Key Index::               Key Index.
96 @end menu
97
98 @node History
99 @chapter History
100
101 @cindex history
102 @sc{gnus} was written by Masanobu UMEDA.  When autumn crept up in '94,
103 Lars Magne Ingebrigtsen grew bored and decided to rewrite Gnus.
104
105 The recommended pronunciation of the name this program is "ding
106 guh-noose", with "ding" being half-sung in a loud, high-pitched voice,
107 and "guh-noose" being grumbled and a disaffected fashion.  Any
108 irritation and/or damage this name may cause you is not the
109 responsibility of the author, even though you might like to strangle him
110 for the stupid idea.
111
112 If you want to investigate the person responsible for this outrage, you
113 can point your (feh!) web browser to
114 @file{http://www.ifi.uio.no/~larsi/}.  This is also the primary
115 distribution point for the new and spiffy versions of Gnus, also know as
116 The Site That Destroys Newsrcs And Drives People Mad.
117
118 During the first extended alpha period of develpment, the new Gnus was
119 called "(ding) Gnus".  @dfn{(ding)}, is, of course, short for @dfn{ding
120 is not Gnus}, which is a total and utter lie, but who cares? (Besides,
121 the "Gnus" in this abbreviation should probably be pronounced "news" as
122 UMEDA intended, which makes it a more appropriate name, don't you
123 think?)
124
125 In any case, after spending all that energy with coming up with a new
126 and spiffy name, we decided that the name was @emph{too} spiffy, so we
127 renamamed it back again to "Gnus".  But in mixed case.  "Gnus" vs.
128 @sc{gnus}.  New vs. old.
129
130 Incidentally, the next Gnus generation will be called "September Gnus",
131 and won't be released until February.  Confused?  You will be.
132
133 @menu
134 * Why?::                What's the point of Gnus?
135 * Compatibility::       Just how compatible is Gnus with @sc{gnus}?
136 * Conformity::          Gnus tries to conform to all standards.
137 * Contributors::        Oodles of people.  
138 * New Features::        Pointers to some of the new stuff in Gnus.
139 * Newest Features::     Features so new that they haven't been written yet.
140 @end menu
141
142 @node Why?
143 @section Why?
144
145 What's the point of Gnus?  
146
147 I want to provide a "rad", "happening", "way cool" and "hep" newsreader,
148 that lets you do anything you can think of.  That was my original
149 motivation, but while working on Gnus, it has become clear to me that
150 this generation of newsreaders really belong in the stone age.
151 Newsreaders haven't developed much since the infancy of the net.  If the
152 volume continues to rise with the current rate of increase, all current
153 newsreaders will be pretty much useless.  How do you deal with
154 newsgroups that have hundreds (or thousands) of new articles each day? 
155
156 Gnus offer no real solutions to these questions, but I would very much
157 like to see Gnus being used as a testing ground for new methods of
158 reading and fetching news. Expanding on Umeda-san's wise decision to
159 separate the newsreader from the backends, Gnus now offers a simple
160 interface for anybody who wants to write new backends for fetching mail
161 and news from different sources. I have added hooks for customizations
162 everywhere I can imagine useful. By doing so, I'm inviting every one of
163 you to explore and invent new ways of reading news.
164
165 May Gnus never be complete. @kbd{C-u 100 M-x hail-emacs}. 
166
167 @node Compatibility
168 @section Compatibility
169
170 @cindex compatibility
171 Gnus was designed to be fully compatible with @sc{gnus}.  Almost all key
172 bindings have been kept.  More key bindings have been added, of course,
173 but only in one or two obscure cases have old bindings been changed.
174
175 Our motto is:
176 @quotation
177 @cartouche
178 @center In a cloud bones of steel.
179 @end cartouche
180 @end quotation
181
182 All commands have kept their names.  Some internal functions have changed
183 their names.
184
185 The @code{gnus-uu} package has changed drastically. @xref{Decoding
186 Articles}. 
187
188 One major compatibility question if the presence of several summary
189 buffers.  All variables that are relevant while reading a group are
190 buffer-local to the summary buffer they belong in.  Although most
191 important variables have their values copied into their global
192 counterparts whenever a command is executed in the summary buffer, this
193 change might lead to incorrect values being used unless you are careful.
194
195 All code that relies on knowledge of @sc{gnus} internals will probably
196 fail.  To take two examples: Sorting @code{gnus-newsrc-assoc} (or
197 changing it in any way, as a matter of fact) is strictly verboten.  Gnus
198 maintains a hash table that points to the entries in this assoc (which
199 speeds up many functions), and changing the assoc directly will lead to
200 peculiar results.
201
202 @cindex hilit19
203 @cindex highlighting
204 Old hilit19 code does not work at all.  In fact, you should probably
205 remove all hilit code from all Gnus hooks
206 (@code{gnus-group-prepare-hook}, @code{gnus-summary-prepare-hook} and
207 @code{gnus-summary-article-hook}).  (Well, at the very least the first
208 two.)  Gnus provides various integrated functions for highlighting.
209 These are faster and more accurate.  To make life easier for everybody,
210 Gnus will by default remove all hilit calls from all hilit hooks.
211 Uncleanliness!  Away!
212
213 Packages like @code{expire-kill} will no longer work.  As a matter of
214 fact, you should probably remove all old @sc{gnus} packages (and other
215 code) when you start using Gnus.  More likely than not, Gnus already
216 does what you have written code to make @sc{gnus} do.  (Snicker.)
217
218 Even though old methods of doing things are still supported, only the
219 new methods are documented in this manual.  If you detect a new method of
220 doing something while reading this manual, that does not mean you have
221 to stop doing it the old way.
222
223 Gnus understands all @sc{gnus} startup files.
224
225 @kindex M-x gnus-bug
226 Overall, a casual user who hasn't written much code that depends on
227 @sc{gnus} internals should suffer no problems.  If problems occur,
228 please let me know (@kbd{M-x gnus-bug}).
229
230 Problems specific to GNU XEmacs can be reported to popineau@@ese-metz.fr
231 (Fabrice Popineau).  I will just forward any such questions to him,
232 anyway, so you might have to wait longer if you mail XEmacs questions to
233 me.
234
235
236 @node Conformity
237 @section Conformity
238
239 No rebels without a clue here, ma'am.  We conform to all standards known
240 to man.  Except, of course, where we disagree with the standards and/or
241 conventions.
242
243 @table @strong
244
245 @item RFC 822
246 There are no known breaches to this standard.
247
248 @item RFC 1036
249 There are no known breaches to this standard, either.
250
251 @item Usenet Seal of Approval
252 Gnus hasn't been formally through the Seal process, but I have read
253 through the Seal text, and I think that Gnus would pass.
254
255 @item Son-of-RFC 1036
256 We do have some breaches to this one.
257
258 @table @emph
259 @item MIME
260 Gnus does no MIME handling, and this standard-to-be seems to think that
261 MIME is the bees' knees, so we have major breakage here.
262 @item X-Newsreader
263 This is considered to be a "vanity header", while I consider it to be
264 consumer information.  After seeing so many badly formatted articles
265 coming from @code{tin} and @code{Netscape} I know not to use either of
266 those for posting articles.  I would not have known that if it wasn't
267 for the @code{X-Newsreader} header.
268 @item References
269 Gnus does line breaking on this header.  I infer from RFC1036 that being
270 conservative in what you output is not creating 5000-character lines, so
271 it seems like a good idea to me.  However, this standard-to-be says that
272 whitespace in the @code{References} header is to be preserved, so...  It
273 doesn't matter one way or the other to Gnus, so if somebody tells me
274 what The Way is, I'll change it.  Or not.
275 @end table
276
277 @end table
278
279 If you ever see Gnus act noncompliantly to the texts mentioned above,
280 don't hesitate to drop a note to Gnus Towers and let us know.
281
282
283 @node Contributors
284 @section Contributors
285 @cindex contributors
286
287 The new Gnus version couldn't have been done without the help of all the
288 people on the (ding) mailing list.  Every day for months I have gotten
289 tens of nice bug reports from them, filling me with joy, every single
290 one of them.  Smooches.  The people on the list have been tried beyond
291 endurance, what with my "oh, that's a neat idea <type type>, yup, I'll
292 release it right away <ship off> no wait, that doesn't work at all <type
293 type>, yup, I'll ship that one off right away <ship off> no, wait, that
294 absolutely does not work" policy for releases.  Microsoft - bah.  I'm
295 @emph{much} worse.
296
297 I would like to take this opportunity to thank the Academy for...  oops,
298 wrong show.
299
300 @itemize @bullet
301 @item
302 Of course, GNUS was written by Masanobu UMEDA.
303 @item 
304 Many excellent functions, especially dealing with scoring and
305 highlighting (as well as the soon-to-come @sc{soup} support) was written
306 by Per Abrahamsen.
307 @item
308 Innumerable bug fixes were written by Sudish Joseph.
309 @item
310 The refcard was written by Vladimir Alexiev.
311 @item
312 I stole some pieces from the XGnus distribution by Felix Lee and JWZ.
313 @item 
314 nnfolder has been much enhanced by Scott Byer.
315 @item
316 The orphan scoring was written by Peter Mutsaers.
317 @item 
318 GNU XEmacs support has been added by Fabrice Popineau. 
319 @item 
320 Various bits and pieces, especially dealing with .newsrc files, was
321 suggested and added by Hallvard B Furuseth.
322 @item 
323 Brian Edmonds has written @code{gnus-bbdb}, as well as other bits and
324 pieces. 
325 @item 
326 Ricardo Nassif did the proof-reading.
327 @item
328 Kevin Davidson came up with the name @dfn{ding}, so blame him.
329 @item 
330 Stainless Steel Rat, Ulrik Dickow, Jack Vinson, Daniel Quinlan, Ilja
331 Weis, Frank D. Cringle, Geoffrey T. Dairiki and Andrew Eskilsson have
332 all contributed code and suggestions.
333 @end itemize
334
335
336 @node New Features
337 @section New Features
338 @cindex new features
339
340 @itemize @bullet
341
342 @item
343 The look of all buffers can be changed by setting format-like variables
344 (@pxref{Group Buffer Format} and @pxref{Summary Buffer Format}). 
345  
346 @item 
347 Local spool and several @sc{nntp} servers can be used at once
348 (@pxref{Foreign Groups}).  
349
350 @item 
351 You can combine groups into virtual groups (@pxref{nnvirtual}). 
352
353 @item 
354 You can read a number of different mail formats (@pxref{Reading Mail}).
355 All the mail backends implement a convenient mail expiry scheme
356 (@code{Expiring Old Mail Articles}). 
357
358 @item
359 Gnus can use various strategies for gathering threads that have lost
360 their roots (thereby gathering loose sub-threads in one thread) or it
361 can go back and retrieve enough headers to build a complete thread
362 (@pxref{Customizing Threading}).
363
364 @item 
365 Killed groups can be displayed in the group buffer, and you can read
366 them as well.
367
368 @item 
369 Gnus can do partial group updates - you do not have to retrieve the
370 entire active file just to check for new articles in a few groups
371 (@pxref{The Active File}).
372
373 @item 
374 Gnus implements a sliding scale of subscribedness to groups
375 (@pxref{Group Levels}).
376
377 @item 
378 You can score articles according to any number of criteria (@pxref{Score
379 Files}).  You can even get Gnus to score articles for you
380 (@pxref{Adaptive Scoring}). 
381
382 @item 
383 Gnus maintains a dribble buffer that is auto-saved the normal Emacs
384 manner, so it should be difficult to lose much data on what you have
385 read if your machine should go down (@pxref{Auto Save}). 
386
387 @item 
388 Gnus now has its own startup file to avoid cluttering up the
389 @file{.emacs} file.
390
391 @item 
392 You can set the process mark on both groups and articles and perform
393 operations on all the marked items (@pxref{Process/Prefix}).
394
395 @item 
396 You can grep through a subset of groups and create a group from the
397 results (@pxref{nnkiboze}). 
398
399 @item 
400 You can list subsets of groups according to, well, anything
401 (@pxref{Listing Groups}). 
402
403 @item 
404 You can browse foreign servers and subscribe to groups from those
405 servers (@pxref{Browse Foreign Server}). 
406
407 @item 
408 Gnus can fetch articles asynchronously on a second connection to the
409 server (@pxref{Asynchronous Fetching}).
410
411 @item 
412 You can cache articles locally (@pxref{Article Caching}). 
413
414 @item 
415 The uudecode functions have been expanded and generalized