The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
			Stem Architecture Notes

Stem is a network application development toolkit and a suite of network
applications. Its goal is to transform common network tasks from
programming to configuration and to make solving difficult network tasks
much easier.

A running Stem system on a network consists of one or more
interconnected Stem daemons which are called Hubs.  Each Hub contains a
collection of modules and objects which are called Cells. Stem Cells are
capable of sending and receiving messages to any other Cell in the Stem
system. Modules and Cells are loaded or created in a Hub by using
configuration files. Configurations can be loaded and sent to any
connected Hub where they will be executed.

Stem's core set of modules provide all of the common operations needed
including message passing, interprocess communication, asynchronous
buffered I/O, socket connections and timers.  Other modules which can be
loaded and configured, perform such tasks as process creation and
management, log file management, gateways, protocol support, message
switching, etc...

Configuring Stem Cells has been designed for simplicity and
flexibilty. All Cells use a common style of attribute/value pair
arguments with well chosen default values which make common situations
easier to configure. Many example configuration files come with Stem as
well as demonstration scripts which run working applications such as
inetd emulation, log file transferring and chat servers.

Stem Messages are how Cells communicate with each other. Their names
are an ordered triplet:  Hub, Cell and Target. Each Cell registers itself with
a unique name and optional Target name in its Hub. All Hub names in a
Stem system must be unique too, which makes the address triplet
sufficient for any Message to be directed to any Cell.

For more detailed information on the architecture and design of Stem,
read the other technical notes.