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.

  •  
    about 'long now'
    library
    purpose_
    projects_
    location_
    clock
    shop
    time links
    discussions
    contribute
    main