Go forward to Score File Syntax.
Go up to A Programmers Guide to Gnus.

Backend Interface
-----------------

   Gnus doesn't know anything about NNTP, spools, mail or virtual
groups.  It only knows how to talk to "virtual servers".  A virtual
server is a "backend" and some "backend variables".  As examples of the
first, we have `nntp', `nnspool' and `nnmbox'.  As examples of the
latter we have `nntp-port-number' and `nnmbox-directory'.

   When Gnus asks for information from a backend--say `nntp'--on
something, it will normally include a virtual server name in the
function parameters.  (If not, the backend should use the "current"
virtual server.)  For instance, `nntp-request-list' takes a virtual
server as its only (optional) parameter.  If this virtual server hasn't
been opened, the function should fail.

   Note that a virtual server name has no relation to some physical
server name.  Take this example:

     (nntp "odd-one"
           (nntp-address "ifi.uio.no")
           (nntp-port-number 4324))

   Here the virtual server name is `odd-one' while the name of the
physical server is `ifi.uio.no'.

   The backends should be able to switch between several virtual
servers.  The standard backends implement this by keeping an alist of
virtual server environments that it pulls down/pushes up when needed.

   There are two groups of interface functions: "required functions",
which must be present, and "optional functions", which Gnus will always
check whether are present before attempting to call.

   All these functions are expected to return data in the buffer
`nntp-server-buffer' (` *nntpd*'), which is somewhat unfortunately
named, but we'll have to live with it.  When I talk about "resulting
data", I always refer to the data in that buffer.  When I talk about
"return value", I talk about the function value returned by the
function call.

   Some backends could be said to be "server-forming" backends, and
some might be said to not be.  The latter are backends that generally
only operate on one group at a time, and have no concept of "server" -
they have a group, and they deliver info on that group and nothing more.

   In the examples and definitions I will refer to the imaginary backend
`nnchoke'.

Menu

Required Backend Functions
Functions that must be implemented.
Optional Backend Functions
Functions that need not be implemented.
Writing New Backends
Extending old backends.