init commit
[urisagit/Stem.git] / Design / arch_notes
1                         Stem Architecture Notes
2
3 Stem is a network application development toolkit and a suite of network
4 applications. Its goal is to transform common network tasks from
5 programming to configuration and to make solving difficult network tasks
6 much easier.
7
8 A running Stem system on a network consists of one or more
9 interconnected Stem daemons which are called Hubs.  Each Hub contains a
10 collection of modules and objects which are called Cells. Stem Cells are
11 capable of sending and receiving messages to any other Cell in the Stem
12 system. Modules and Cells are loaded or created in a Hub by using
13 configuration files. Configurations can be loaded and sent to any
14 connected Hub where they will be executed.
15
16 Stem's core set of modules provide all of the common operations needed
17 including message passing, interprocess communication, asynchronous
18 buffered I/O, socket connections and timers.  Other modules which can be
19 loaded and configured, perform such tasks as process creation and
20 management, log file management, gateways, protocol support, message
21 switching, etc...
22
23 Configuring Stem Cells has been designed for simplicity and
24 flexibilty. All Cells use a common style of attribute/value pair
25 arguments with well chosen default values which make common situations
26 easier to configure. Many example configuration files come with Stem as
27 well as demonstration scripts which run working applications such as
28 inetd emulation, log file transferring and chat servers.
29
30 Stem Messages are how Cells communicate with each other. Their names
31 are an ordered triplet:  Hub, Cell and Target. Each Cell registers itself with
32 a unique name and optional Target name in its Hub. All Hub names in a
33 Stem system must be unique too, which makes the address triplet
34 sufficient for any Message to be directed to any Cell.
35
36 For more detailed information on the architecture and design of Stem,
37 read the other technical notes.