Viewing Mail
Mail viewing is a really important
angle, as hypertext mail is going
to be really cool, and there is such
a lot of stuf f which is mail to
which one will need to refer.
See also: sending mail
Current practice
Currently, there are many sets of
scripts which take a stream of mail
and arrange it into a web. The web
is then basically static, in that
it is not designed for easy manipualion.
Also, it is a rather heavy user of
files.
Most mail interfaces manipulate mail
by actually moving mail from one
mbox file from another. This is
slow. It involves rebuilding indexes
on each of the mbox files involved,
which is also slow although can be
incremental. This systems doesn't
allow the same message to be filed
in two mailboxes unless it is duplicated
(yuk).
Requirements
To give the functionality of a good
mail application, I see the need
for a basic store of messages, which
I would expect to be by date. Making
this a Berkeley mailbox (mbox) format
makes life a lot easier for integration
with other systems.A mail folder
then becomes a view, or query, on
the mail. The most general model
is that mail messages can have arbitrary
labels (flags) added a la emacs RMAIL.
The labels would have to be selected
from a set, which is user definable.
In a web application, a label could
be represented as including a list
of all messages having that label.
Adding a label would be a question
of making a link from the label to
the message.
(Should this mailbox system be reserved
for messages? Why not allow any URL
to be included in the indexing system?)
Garbage collection
The lifetime of a message would be
affected by its date, and other parameters
in a flexible expression.
Software components
Use of the message-id and date as
a URL for mail messages.
Indexing of mbox files to allow rapid
retrieval of messages by date and
message-id, and retrieval by message-id
only being rapid for recent messages.
It may be that the rest of the fucntionality
is best implemented using a relational
database program, but a set of hash
objects and data objects would probably
work fine for most people's work
load.
Tim BL