     [file docstyle.texi not included]

Gnus Coding Style and Maintenance Guide
***************************************

This manual describes ...

Copyright © 2004--2005, 2007--2020 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.3 or any later version published by the Free Software Foundation; with no Invariant Sections, 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''.

     (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and modify this GNU manual.''

Gnus Coding Style
*****************

Dependencies
============

The Gnus distribution contains a lot of libraries that have been written for Gnus and used intensively for Gnus.  But many of those libraries are useful on their own.  E.g., other Emacs Lisp packages might use the MIME library see The Emacs MIME Manual.

General purpose libraries
-------------------------

netrc.el
     .netrc parsing functionality. There are no Gnus dependencies in this file.

format-spec.el
     Functions for formatting arbitrary formatting strings. There are no Gnus dependencies in this file.

hex-util.el
     Functions to encode/decode hexadecimal string. There are no Gnus dependencies in these files.

Encryption and security
-----------------------

encrypt.el
     File encryption routines There are no Gnus dependencies in this file.

password.el
     Read passwords from user, possibly using a password cache. There are no Gnus dependencies in this file.

tls.el
     TLS/SSL support via wrapper around GnuTLS There are no Gnus dependencies in this file.

pgg*.el
     Glue for the various PGP implementations. There are no Gnus dependencies in these files.

sha1.el
     SHA1 Secure Hash Algorithm. There are no Gnus dependencies in these files.

Networking
----------

dig.el
     Domain Name System dig interface. There are no serious Gnus dependencies in this file.  Uses gnus-run-mode-hooks (a wrapper function).

dns.el, dns-mode.el
     Domain Name Service lookups. There are no Gnus dependencies in these files.

Mail and News related RFCs
--------------------------

pop3.el
     Post Office Protocol (RFC 1460) interface. There are no Gnus dependencies in this file.

imap.el
     IMAP library. There are no Gnus dependencies in this file.

ietf-drums.el
     Functions for parsing RFC 2822 headers. There are no Gnus dependencies in this file.

rfc1843.el
     HZ (rfc1843) decoding.  HZ is a data format for exchanging files of arbitrarily mixed Chinese and ASCII characters. rfc1843-gnus-setup seem to be useful only for Gnus.  Maybe this function should be relocated to remove dependencies on Gnus.  Other minor dependencies: gnus-newsgroup-name could be eliminated by using an optional argument to rfc1843-decode-article-body.

rfc2045.el
     Functions for decoding rfc2045 headers There are no Gnus dependencies in these files.

rfc2047.el
     Functions for encoding and decoding rfc2047 messages There are no Gnus dependencies in these files. Only a couple of tests for gnusy symbols.

rfc2104.el
     RFC2104 Hashed Message Authentication Codes There are no Gnus dependencies in these files.

rfc2231.el
     Functions for decoding rfc2231 headers There are no Gnus dependencies in these files.

flow-fill.el
     Interpret RFC2646 "flowed" text. There are no Gnus dependencies in this file.

uudecode.el
     Elisp native uudecode. There are no Gnus dependencies in this file.

canlock.el
     Functions for Cancel-Lock feature There are no Gnus dependencies in these files.

message
-------

All message composition from Gnus (both mail and news) takes place in Message mode buffers.  Message mode is intended to be a replacement for Emacs mail mode.  There should be no Gnus dependencies in message.el.  Alas it is not anymore.  Patches and suggestions to remove the dependencies are welcome.

Emacs MIME
----------

The files mml*.el and mm-*.el provide MIME functionality for Emacs.

MML (MIME Meta Language) is supposed to be independent from Gnus.  Alas it is not anymore.  Patches and suggestions to remove the dependencies are welcome.

Gnus backends
-------------

The files nn*.el provide functionality for accessing NNTP (nntp.el), IMAP (nnimap.el) and several other Mail back ends (probably nnml.el, nnfolder.el and nnmaildir.el are the most widely used mail back ends).

GNU Free Documentation License
******************************

     [file doclicense.texi not included]