Next: Gnus Maintainance Guide, Previous: Top, Up: Top

## 1 Gnus Coding Style

### 1.1 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 Top.

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

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

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

#### 1.1.4 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 RFC822bis 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.

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

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

#### 1.1.7 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).

### 1.2 Compatibility

No Gnus and Gnus 5.10.10 and up should work on:

- Emacs 21.1 and up.
- XEmacs 21.4 and up.

Gnus 5.10.8 and below should work on:

- Emacs 20.7 and up.
- XEmacs 21.1 and up.