Introduction  Software 
Hardware  Business/Social 
Long Mail Software Philosophy/Architecture
Digital data cannot be stored independently of the software to access
it. Thus
In Stewart Brand's book, The Clock of The Long Now, he gives a diagram
of the layers of social time, with the fast, ephemeral, dynamic layers
above building upon and constrained by the slower, stable layers
below. Over the past century and a half of its history, software as a
social phenomemon has evolved from an obscure, cutting edge
innovation, to an integral part of world culture. Thus, software has
become embedded in Stewart Brand's layers of time, one interpretation
of which could be:
The broadening of software creation from simply being a technical or
commercial creation into being part of a culture has implications on
the design of software systems that are intended to survive the
lifetimes of that culture.
Long Term Software Strategy
Designing a software system to last several lifetimes requires more
than good engineering. The creation and maintenance process must be
aware of culture needs and contraints and should contribute
beneficially to the culture.
Traditional good software engineering
Writing maintainable code (Reward patience)
Good documentation
Good error/exception handling/reporting
Plan for continuity
Designing for scalability in size and time
Plan for changes in data representation
Use ASCII/Unicode encodings
Use interpreted languages if possible
Maintaining data/code locality: to protect against partial code loss
Work within the culture of software
Choose open source tools/protocols/encodings that are likely to survive
Languages: Perl, Python
Operating Systems: Linux/BSD OS
Protocols: TCP/IP, IMAP, XMLRPC
Support and work with existing projects
Give away our own code and designs
Software Architecture
Long Mail follows the UNIX structure of multiple process systems. It
consists as a collection of daemon each of which is responsible for a
particular task. Daemons normally communicate with each other via an
RPC mechanisms or by filesystem based semaphore.
The following daemons will exist in the system:
Batching: Handles incoming mail by placing it into a batch
and hands it off to other daemons for processing.
Indexing: Creates indices for each mail message. Indices
are typically fixed length record flat files for good scalability.
Backup: Copies batches of mail messages to CD-R as
non-magnetic backup. Coordinates with mirroring daemon to keep CD
backups as synchronized as possible.
Mirroring: Talks and exchanges e-mail messages with other
mirrors to insure maintenance of identical archives.
Query: Handles incoming search, browse, and retrieval requests.
These daemons may be spread over multiple machines for each mirror.