A module is an addition to the server, which adds to or modifies its functionality. There are a few different types of modules.
Location
A location module is located on a specific location (mount point) in the virtual name space of the server, and handles all accesses below this level in the namespace, in the same way that a normal hard disk is located at a specific place in a normal UNIX filesystem.

The most obvious use for a location module is the filesystem module, which acts more or less exactly like a harddrive in UNIX. For a closer description, see the desctiption of the filesystem module.

Extension
An extension module handles one or mode extensions. One example is the imagemap handling module, which by default handles all files with the extension '.map', wherever they are located in the filesystem.

Parser
A parsing module handles one or more specific tags in HTML files. An example is the default SPML parse module, which handles extensions to HTML

First try
A 'first try' module will always be called before all other modules, except for other 'first try' modules, which will be called in priority order. An example of a 'first try' module, is the redirect module.

Last resort
A last resort module will be called after all other types of modules have failed to manage a URL. An example is the relay module, which relays failed requests to another server, to make the move to Spinner from an existing server smoother.
Then there are the required modules, which are one of each kind:

Contenttypes
This is the module that handles the mapping of extension to contenttypes. All other modules may also set the contenttype to whatever they want to, so this is a fallback for those that dont, like the default filesystem module.

There must be a contenttypes module present, but it can be replaced.

Main SPML Parser
This module takes care of all SPML parsing. If there are other parser modules enabled, they are called from this module.

If there is no Main SPML Parse module present, no parsing will take place at all.

Security Module and User database
The user database manage the security. It is currently only used by the SPML parser (see <if user=X>), but in the future all modules will probably have a 'may-configure' and 'may-access' field. User made modules may also use it to get info about users or verify logins. The same goes for CGI- and LPC-scripts.