Computational Mail as Network Infrastructure/Borenstein				1


Computational Mail as Network Infrastructure 
for Computer-Supported Cooperative Work


Nathaniel S. Borenstein
Bellcore

Abstract

Computational email -- the embedding of programs within electronic mail 
messages -- is proposed as a technology that may help to solve some of the 
key problems in deploying successful applications for computer-supported 
cooperative work.  In particular, computational email promises to alleviate 
the problem of remote installation at separately-administered sites, the 
problem of getting users to "buy in" to new applications, and the problem of 
extremely heterogeneous user interaction environments.  In order for 
computational email to be practical, however, key problems of security and 
portability must be addressed, problems for which this research offers new 
solutions.    This paper outlines the promise of this new technology, the 
solutions to the key technical problems, and the areas where further work 
and application development are needed.

The Goal:  Distributed Computer-Supported Cooperative Work  

In recent years, increasing attention has been focused on the problem of 
computer-supported cooperative work (CSCW).  This work, broadly defined, is 
the attempt to provide computer-based solutions to the problems that arise 
when two or more people attempt to cooperate to perform a task or solve a 
problem.  

The simplest CSCW systems, from an architectural perspective, are those in 
which the cooperating individuals share a computerized application on a 
single machine, perhaps even using a single process.  In such systems, many 
problems of coordination and communication can be avoided.  However, such 
systems are increasingly implausible for solving the problems of real-world 
users, who may be widely separated geographically and may have significant 
amounts of computing power on their individual desks.  Truly distributed 
applications seem natural in the face of a high ratio of computing power to 
available communications bandwidth.  For many cooperative applications, 
distributed solutions seem inevitable, and indeed a growing number of CSCW 
prototypes are implemented in a distributed manner.

Unfortunately, the practical success of such systems to date has been 
extremely limited.  This paper begins with a discussion of three key problems 
that have inhibited the widespread use of distributed applications for CSCW.  
Following this, the paper offers a description of a new technology, 
"computational electronic mail (email)", that offers a potential solution to 
these problems.  Problems that have, in the past, rendered computational 
email impractical are discussed, along with proposed solutions to these 
problems.  Following this is a discussion of the author's particular realization 
of these solutions, a language designed specifically for the unusual 
requirements of computational email.  The design of this language and its 
prototype implementation are presented as a "proof-of-concept" for the 
practicality of computational email.  The preliminary results of that 
implementation, and its implication for future systems, are discussed briefly 
at the end of the paper.

The Practical Difficulty of Widely-Distributed User-Oriented 
Computation

When building a user-oriented distributed application, the programmer faces 
a special set of constraints above and beyond the usual substantial hurdles 
entailed in every new user interface.  In particular, he or she must solve at 
least three problems that are not generally faced by single-user or single-
machine applications:

  I.  The Problem of Remote Installation

In order for an application to be used by multiple users at multiple sites, it 
must, perforce, be installed at all such sites.  This is not a problem for 
applications in which all of the potential users are eager and knowledgeable 
participants, in which case they can be counted on either to install the 
software themselves or request such installation by the local authorities.  
However, this is by no means the normal situation for distributed 
applications.  In many distributed systems, as noted by Grudin [Grudin, 1990], 
there is a substantial imbalance between the motivations of the various 
particpants.  A common scenario, for example, involves one user asking a 
question of a group of users.  In such a situation, it is much more reasonable 
to expect the questioner to ensure the local installation of some CSCW 
software than to expect it of the people being asked.  

In short, the participants in a cooperative application often have widely 
differing degrees of motivation, and are therefore likely to exert similarly 
varying degrees of persistence and effort in order to ensure that the software 
for that application is locally installed.  Almost inevitably, this leads to a 
situation in which the highly-motivated individuals find themselves 
wheedling, cajoling, or even begging the less motivated individuals to install 
the software on their systems.  Without extreme persistence, CSCW 
applications can fail without ever really being tried, simply because a 
sufficient installed user base was never created.

  II.  The Problem of User Buy-In

Related to the problem of getting software installed at widely distributed 
sites is the problem of getting people to actually use the software once it is 
installed.  Because of the differing motivations of the participants, it is likely 
that some users are far more likely than others to actually run the software.  
As Grudin has noted, the users who are most crucial to the success of a CSCW 
application often have the least personal stake in using it.  For example, in 
any system that seeks to help novices get information from experts, the 
experts who know the answers have relatively little motivation to provide it.  
Some systems, such as the Answer Garden of Malone and Ackerman 
[Ackerman and Malone, 1990]  rely on the good will (and memory) of the 
experts to periodically run a program to see if anyone needs help.  Since the 
necessary combination of good will, reliability, and memory are relatively 
rare, this requirement can be crippling to the practical success of a system. 

  III.  The Problem of Heterogeneous User Environments

For better or worse, there are a wide variety of user interaction environments 
in use today, and this seems unlikely to change in the foreseeable future.  
Potential participants in a cooperative application may be running on dumb 
terminals, Macintoshes, personal computers running MS-DOS with or without 
MS-Windows, OS/2 with Presentation Manager, UNIX with X11, SunTools, 
NeWS, or various other environments.  It is unlikely, to say the least, that the 
purveyors of a cooperative application will be able to dictate, to all potential 
users of the system, a single interaction environment.  (Malone and 
Ackerman's Answer Garden was an exception in this regard:  they were able 
to assume that all users were running X11, for the simple reason that their 
application domain was questions and answers about the X11 system itself.)

In order for a distributed application to see widespread use and acceptance, it 
will have to run on a very wide variety of platforms, probably including all 
the ones just mentioned.  But, as programmers well know, getting any piece of 
software to work on such a variety of platforms is a major task in itself, 
above and beyond the main thrust of the cooperative application.

Needed:  A Platform On Which to Build

If all of these problems afflict a wide variety of cooperative applications, it 
seems natural to seek a mechanism to solve them for the entire class of 
applications, rather than for each application individually.  What is really 
needed is a platform on which distributed applications can be built without 
concern for the problems of distribution, user buy-in, and heterogeneous 
interaction environment.  

If a computational engine can be defined in such a way as to support the 
requirements of many cooperative applications, yet without commitment to a 
particular user interaction technology, and if that single engine can somehow 
overcome the first problem, the problem of remote installation, then neither 
the problem of remote installation nor the problem of heterogeneous user 
environments will afflict applications that are built on top of such an engine.  
This leaves the problem of user buy-in:  assuming such an engine were 
defined and widely implemented and installed, how could users be persuaded 
to use it regularly?  One solution is to "piggyback" the engine on top of a 
technology that is already at the fingertips of most computer users today, 
electronic mail.

The Case for Computational Email

The basic idea of computational email is very simple:  Instead of sending 
plain text, or even multimedia information, in a mail message, what is sent 
instead is a computer program in a well-defined language.  At the recipient's 
end, the mail-reading software recognizes (via a well-defined mechanism) 
that the mail message is intended to be executed rather than read, and 
(accordingly) executes it.  Thus, when the recipient reads a mail message, the 
message might first show him some introductory text, and then engage him in 
a question/answer dialogue.  For example, it might ask him to select which of 
ten proposed dates and times he can make it to a meeting.  The program 
might then mail the answers back to a network server that was collecting 
such answers from several such people, in order to find a meeting time 
suitable to all of them.

The greatest appeal in the idea of embedding applications within email is the 
simple way it solves the problem of user buy-in.  Because nearly everyone 
who uses a networked computer nowadays is likely to be a regular reader of 
email, an application that is delivered to a user in the form of email requires 
no special effort or feat of memory, on the part of the recipient, in order to 
run it.  Most important, remote users of a distributed application can, by 
embedding computation in email, solicit information or participation from a 
user who does not yet know that his participation is required.

While the idea of embedding computation in email suffers no less than any 
other application from the problems of distributing the initial software and 
devising an interaction mechanism that works regardless of interaction 
environment, it can be designed in such a way that the solution of the 
problem for computational email makes the problem simply nonexistent for 
applications built on a platform of computational email.  In other words, 
solving the remote installation once, for a computational email infrastructure, 
will solve it for a whole class of follow-on applications.

Prior Art

The idea of computational or "active" mail is sufficiently simple as to have 
been mentioned, in the research literature, at least fifteen years ago, in a 
paper by Anderson and Gillogly [Anderson and Gillogly, 1976], who discussed 
the concept without implementing it.   Several researchers have implemented 
computational email, or "active messaging," including Vittal [Vittal, 1981], 
Hogg [Hogg, 1985], Borenstein and Hansen [Borenstein, 1991a, and Hansen, 
1990], and Shepherd [Shepherd, 1990].  Each of these systems demonstrated 
facilities for embedding computation and email, and several offered 
convincing evidence for the general utility of such a facility.

Nonetheless, all of the prior work has suffered from at least two of four 
crucial flaws, which have prevented a generalized facility for computational 
email from becoming widely available:

1.  Lack of generality.  Some systems, notably the Andrew system 
without Ness [Borenstein, 1991a], offered only highly specialized 
facilities for active messages, such as special-purpose "voting" messages.  
Though useful, such facilities do not provide a platform on which larger 
applications can be built.

2.  Lack of conformity to the standard email transport model.  Some 
systems, notably Imail [Hogg, 1985], did not use asynchronous store-
and-forward delivery, and thus might arguably not be called electronic 
mail.  In particular, Imail provided a very powerful active messaging 
language, but could only be used to exchange messages between 
authenticated users of a single machine.  Since most email crosses 
insecure network connections, such mechanisms do not generalize well 
to the real world.

3.  Lack of security.  Some systems, such as R2D2 [Vittal, 1990] and 
Andrew with Ness [Hansen, 1990], provided general-purpose 
mechanisms that were exceedingly dangerous.  In such systems, a user 
is typically asked a question such as "There is a program here.  Do you 
want to try running it?"  If the user answers in the affirmative, he may 
have risked the destruction of all his files.  This is probably 
unacceptable to most users in the real world.

4.  Lack of portability.  Computational mail that provides a rich user 
interface mechanism, such as Andrew with Ness [Hansen, 1990], or 
Strudel [Shepherd, 1990], has typically been extremely non-portable 
with regard to user interaction environments.  With Andrew messages, 
for example, the interaction mechanisms only worked properly if the 
recipient read his mail using the Andrew Messages program, under the 
X11 or WM window systems.  In a highly heterogeneous world, such 
restrictions are not acceptable to many communities.

Thus, although the existing literature amply documents the continuing 
fascination that computational email holds for email researchers, it fails to 
provide a practical model for making computational email a part of the 
general shared infrastructure of a large, diverse, and not entirely trusting 
network community.  This is the starting point for the research reported here.

Portability Across User Environments

Stated in the most general and ambitious manner, the goal of making user 
interfaces entirely portable between a wide range of user interface 
environments is probably impossible.  However, a lesser goal will suffice for 
computational email.

A significant number of applications can be built using user interface 
primitives that require only textual input and output, and that are specified 
in a manner that assume nothing about the capabilities of the user interaction 
environment.  Examples of such primitives might include:

1.  Get text (a string) from the user.

2.  Get a number from the user.

3.  Ask the user a multiple choice question.

4.  Fill in the blanks in a form.

5.  Display a chunk of text to the user.

As long as the language primitives refer only to the information that must be 
given to or obtained from the user, and make no reference to the technologies 
by which that information is to be given or obtained, and as long as the 
information can be expressed as simple text, such primitives can be 
implemented in virtually any interaction environment.  For example, a 
multiple choice question might produce a dialog box for a user running in a 
graphical environment, while it might produce a numbered list on a teletype, 
with a request to "choose a number from 1 to 7."  

What matters, in such primitives, is that the mechanism by which the 
information is conveyed is left unspecified by the definition of the primitive.  
Given that fact, a user can expect to compose and test a program in one 
environment, secure in the knowledge that it will behave well even in a very 
different environment, where the interpreter understands the same language, 
even though it might interact with the user rather differently.

Security of Computational Email

The security of a computational email message is an area where virtually no 
compromise is acceptable.  This might not have been true a few years ago, but 
well-publicized episodes such as the Internet Worm [Spafford, 1989] have 
made most computer users highly conscious of, and concerned about, the 
security of their computer systems.

However, despite such concerns, it must be explicitly recognized that certain 
risks are routinely accepted by the general computing public.  Conventional 
electronic mail, for example, is not without risks.  The most common risk in 
current mail systems is resource deprivation.  For example, by repeatedly 
sending large mail messages, any network user can often fill the disk of 
another, depriving him (at least temporarily) of the use of that disk.  This can 
often be done completely anonymously, and can be a minor nuisance or a 
major problem, depending on what else shares the disk.  Similarly, a program 
that uses mail protocols on a network can, by playing "cat and mouse" with 
someone else's mail transport agent, effectively tie up much of the bandwidth 
available on a network, or even a substantial portion of the computational 
power of the remote processor.

Beyond resource deprivation, an even more insidious risk in mail systems is 
that they are vulnerable to intruders using essentially non-technical means.  
Recently, many users on the Internet were told, via official looking mail, that 
they had to change their passwords to "SYSTEST01" immediately; apparently 
more than a few complied.  The infamous "Christmas Tree Virus" that afflicted 
the IBM networks a few years back was entirely based on social engineering:  
Users received mail that appeared to come from someone they knew, saying 
"here's a neat program that will make an animated Christmas Tree on your 
screen."  When executed, the program did exactly that, thus avoiding 
suspicion, but it also sent copies of itself to all of the users' regular 
correspondents.

Finally, existing mail systems, like all network software, are vulnerable to 
security problems through bugs.  The Internet worm, for example, exploited a 
bug in a mail transport program as one of several mechanisms for 
transporting itself.

The point of the foregoing discussion is not to frighten the reader out of ever 
using email again, but rather to point out that a "risk free" solution is 
chimerical.  A more realistic security goal for computational email might be 
characterized as follows:  Computational email should entail no security 
problems that are worse, either in kind or in degree, than the problems that 
afflict ordinary (textual) email.  Given such a goal, we may begin by 
characterizing the potential risks into three broad categories:

1.  Destruction of Resources (e.g. files)

2.  Theft of Resources (e.g. private files)

3.  Deprivation of Resources (e.g. filling up a disk or tying up a CPU)

To understand how these problems can be addressed, it is instructive to 
consider an analogy.  Imagine, for a moment, that somewhere in the 
basement of the Pentagon there are two computers.  They are identical 
hardware, and they run identical software; they are as alike as two peas in a 
pod.  On each of them, there is an executable procedure called 
"DestroyBaghdad".  On one of the machines, executing this procedure does 
nothing.  On the other, the effects of executing the procedure are disastrous, 
at least for the citizens of Iraq.  The only difference between the two 
machines is a single wire coming out of the back of the second machine.1

The point, of course, is that nothing inherent to a computational language is 
dangerous; danger is posed only insofar as the effects of executing statements 
in a language include "side-effects" in the external world.  If all the "wires" 
connecting a computational language to the outside world are cut, then 
executing programs in that language is harmless.  (An exception to this claim 
is that such a program can still tie up the CPU, virtual memory, or swap space 
on a machine by going into an infinite loop; this can be handled via resource 
limitations.)

More concretely, if one starts with a conventional programming language, 
such as LISP [Steele, 1990], and removes all input and output from the 
language (including not only input and output to and from the user, but also 
to and from files, other processes, and arbitrary memory locations which 
might be connected with physical devices), one is left with a language without 
"wires" to the outside world.  No matter what can be expressed in such a 
language, it can do no harm to the outside world.

Unfortunately, though it can do no harm, it can do little good, either.  So the 
task of devising a secure language for computational email reduces, in 
practice, to the construction of a secure input/output mechanism for a 
conventional language.  Devising such a mechanism is really just a matter of 
judicious trade-offs.  For example, one can specify that the language has no 
general-purpose access to the file system, but has a limited form of access to 
a subset of the file system.  In the system to be described below, programs 
have access only to a restricted subdirectory of the user's files, and the 
interpreter is expected to ensure that no "tricks" (such as, in UNIX, the use of 
".." or symbolic links) can be used to access files outside that area.  Within 
that restricted area, programs are additionally restricted in their ability to 
overwrite existing files, and in the number and size of the files they can 
create.  In such a way, the potential harm to the file system that is caused by 
computational email is not greater than the disk-filling potential of textual 
email.  Similar restrictions are applied to other input/output processes, 
including sending mail.  Some security constraints also apply to user 
interaction:  for example, in order to prevent subversion through the clever 
exploitation of "intelligent" terminals, input and output is restricted to 
printable characters.

Heterogeneous Mail Reading Software

A major impediment to any enhancements to electronic mail systems is the 
tyranny of the lowest common denominator.  Multimedia mail systems such 
as Andrew [Borenstein, 1991a] and Diamond [Forsdick, 1984] have long 
suffered from the fact that, in the absence of widely accepted standards for 
multimedia mail formats, most email traffic will necessarily be plain text, 
even for users of multimedia systems, because most of their correspondents 
will not be users of compatible systems.  

The same problem affects any attempt to promote the use of computational 
email.  In order for such a system to be widely used, it must not require the 
use of a special mail-reading tool.  Instead, a mechanism is needed whereby a 
wide variety of mail-reading tools can easily be given the capability to handle 
computational email.

Such a mechanism has been prototyped by the author, and is described 
elsewhere [Borenstein, 1991b].  Its essence, however, is simple.  Each mail-
reading user interface is modified in a small but crucial way:  it is modified so 
that, whenever a user requests to see the body of a message, the software 
first checks to see whether or not the message is plain text.  (In Internet mail, 
this is done by checking the Content-type header field.)  If it is not plain text, 
then the body is not directly displayed; instead, an external program called 
metamail is invoked.  The metamail program is a simple switch that compares 
the content-type of the current message to a configuration file (mailcap file) 
that tells how various types of mail can be handled at the local site.  If a 
handler is found for the current message type, the message is passed off to 
that handler for presentation to the user.  Otherwise the user is informed 
about the unrecognized data, rather than shown the (probably 
incomprehensible) raw data stream.

Given this mechanism, it is easy to integrate computational email into a wide 
variety of mail-reading agents.  Once those agents have been modified to use 
the metamail software, as described above, it is simply a matter of installing 
an interpreter for the computation mail language, and adding an appropriate 
line to the local mailcap file.

ATOMICMAIL:  A Practical System for Computational Email

In accordance with the ideas described above, the author has designed a 
language suitable for embedding computation in electronic mail, known as 
ATOMICMAIL.2  The ATOMICMAIL software is designed to provide a secure 
and portable language for distributed applications that use electronic mail as 
a transport mechanism, or implement what might be called "User to User 
Remote Procedure Call."

ATOMICMAIL Language Definition

ATOMICMAIL uses LISP [Steele, 1990] as its basic language model.  There is 
nothing essential about LISP for this purpose, although it is a very clean 
interpreted language, which eases the validation of the security mechanisms.  
(It would be considerably harder to be sure about the security of a compiled 
language, and particularly one like C [Kernighan and Ritchie, 1988] that 
includes mechanisms (e.g. pointers) for accessing arbitrary memory locations.)  
Of course, LISP is just a starting point.  As mentioned before, all input and 
output facilities were removed from the basic language and replaced with 
input and output mechanisms that did not compromise security and that were 
portable to virtually any user interaction environment.

Thus, for example, LISP's READ primitive is gone, but new primitives such as 
GETSTRING and GETBOOLEAN are defined.  Similarly, new file system 
primitives permit a strictly limited access to a circumscribed local file system.

A complete specification of the ATOMICMAIL language is too lengthy and 
detailed to be included here.  The language is, however, rigorously specified 
in [Borenstein, 1990].  Figure 1 shows a small ATOMICMAIL program.

The Bellcore Prototype ATOMICMAIL Interpreter

Although a computational email language should be designed for portability 
and abstraction of user interface, an implementation (interpreter) must 
inevitably be grounded in some particular user interaction environment.  
Based on the realities of the heterogeneous environment at Bellcore, the 
initial ATOMICMAIL interpreter was written to use the curses library 
[Arnold, 1984] for its user interface.  The prototype interpreter will, 
therefore, run on any machine that is (or can emulate) a UNIX terminal.  
Under window systems such as X11, a terminal emulator window is used.  
This architecture clearly sacrifices a good deal of potential usability, but it 
ensures that the facilities of computational email will be available to the 
widest possible number of users.  A graphical (X11) interpreter for the same 
ATOMICMAIL language is also planned.  The prototype ATOMICMAIL 
interpreter uses, as its basic LISP engine, the Embedded LISP Interpreter 
(ELI) from the Andrew Message System [Borenstein, 1991a].

Like any network service, the implementation of a computational email 
system may be less secure than its specification.  A great deal of attention has 
been paid, in the design of ATOMICMAIL, to ensure that there would be no 
serious security problems in a hypothetical perfect implementation.  No 
claims are made, however, that the prototype is such a perfect 
implementation.  It seems likely that an ATOMICMAIL implementation is 
neither more nor less likely to contain unexpected and accidental security 
risks than any other network service software.  

Figures 2 through 4 show the prototype ATOMICMAIL interpreter at work.

As of September, 1991, the ATOMICMAIL software has been deployed in at 
least four different laboratories at Bellcore.  It is available to universities with 
a royalty-free license for non-commercial use.

Initial Uses of ATOMICMAIL

The initial deployment of ATOMICMAIL has demonstrated that computational 
email can be made to work portably and securely.   It has not, however, 
proven that such a mechanism is worthwhile.  Before such a claim can be 
made, it is necessary to have one or more substantial applications that are 
highly valued by the user community.  While it is too early to evaluate their 
overall utility, six applications have been prototyped at Bellcore:  a survey 
generator, a meeting scheduler, a document distributor, an information finder, 
an activist alert mechanism, and a distributed mail-based game.

The survey generator is a tool for generating simple surveys with 
ATOMICMAIL.  With this tool, the user simply enters a set of questions (fill in 
the blank, multiple choice, etc.) and the mail addresses to which he wants the 
questions sent.  The recipients are surveyed interactively by an 
ATOMICMAIL message, which then sends the response back as normal 
electronic mail, or (optionally) sends it to a process which collates the results 
and sends back only a high-level summary.  

The meeting scheduler allows the person calling a meeting to specify the 
purpose of the meeting, a list of participants, and a set of possible dates and 
times for the meeting.  Each participant is surveyed via ATOMICMAIL, and 
the results are collected and returned to the originator as a summary that 
quickly shows which times, if any, everyone can make it.

The document distributor is a tool that makes it easy for someone who is 
distributing documents to generate an ATOMICMAIL message that offers 
recipients a scrollable list of document titles.  When a recipient selects a title, 
he is shown an abstract of the document and asked whether he wants to 
order it.  Orders are sent to a designated "fulfillment" address via normal 
electronic mail.

The information finder is an application that maintains a database of 
expertise within an organization.  Users are encouraged to send questions on 
any topic to the information finder, which will use ATOMICMAIL to ask the 
question of one or more relevant experts.  If the experts don't know the 
answers, they are asked to suggest other experts, who are then surveyed in 
turn.  This process continues, spreading out to more specialized and possibly 
more distant experts, until an answer is obtained that satisfies the user.

The activist alert mechanism is a program that shows its recipient a brief text 
explaining a "hot" political issue.  It then asks if the user wants to lobby his or 
her elected officials on this topic.  If the user assents, the program verifies the 
names of the user's elected representatives, and either generates a paper 
copy of a letter to those representatives or sends a fax to them directly.  
Finally, it asks the user if there are any other people to whom the alert 
should be redistributed.

The "Name That Tune" game is an ATOMICMAIL version of the familiar game 
show.  All of the "bidding" steps in the game are conducted via ATOMICMAIL.  
In the final step of the game, a multipart message, including both audio and 
ATOMICMAIL, is used to play the tune and ask the user to name it.

Earlier, ATOMICMAIL was also used to prototype another mail-related 
service, dynamic mailing lists.  In this service, a message to a mailing list 
contained, in addition to its normal text, an ATOMICMAIL component that 
asked people whether or not they wanted to take part in further discussions 
on the same topic.  In this case, although ATOMICMAIL facilitated a quick 
prototype, it soon became obvious that the functionality was better 
accomplished by modifying the message reading software so that even plain 
text messages could be the start of new dynamic mailing lists.

Future Work

There are many directions for the future of ATOMICMAIL.  Beyond additional 
and enhanced ATOMICMAIL application services, there are several other 
promising directions for future work.  A graphical interpreter for the current 
ATOMICMAIL language would both further demonstrate the interface-
independence of the language and make the execution of ATOMICMAIL 
programs much more pleasant for those who could use it.  By incorporating 
cryptographic techniques and digital signatures, it should be possible to 
extend ATOMICMAIL's capabilities to allow users to permit more dangerous 
actions to be executed when the mail is authenticated as coming from a 
trusted source.  Another direction for extension would be to relax somewhat 
the assumptions about user interface environments.  For example, an 
ATOMICMAIL-like language that presumed the presence of a bitmap display 
might permit substantially more interesting applications to be developed.   
Overall, there is no shortage of promising new directions for research on 
computational electronic mail.

Acknowledgements

The ATOMICMAIL project has been made possible by the enlightened 
management with which Bellcore is generally blessed.  The development of 
the language and the prototype software has benefited greatly from the many 
clever people who have helped me with useful suggestions and 
encouragement, including Bob Kraut, Al Buzzard, Jonathan Rosenberg, Louis 
Gomez, John Patterson, Steve Rohall, Ralph Hill, Will Leland, Peter Clitherow, 
Shoshana Hardt-Kornacki, Steve Uhler, Mike Bianchi, Scott Stornetta, Michael 
Littman, Ron Underwood, Mike O'Dell, Nat Howard, Dana Chee, Mark Segal, 
Steve Butera, Dave Sincoskie, Mark Donadio, Laurence Brothers, and, no doubt, 
others whom I have inadvertently omitted.

References

[Ackerman and Malone, 1990]  Ackerman, M. and Malone, T., "Answer Garden:  
A Tool for Growing Organizational Memory", Proceedings of the Conference on 
Office Information Systems, Cambridge, Massachusetts, 1990]

[Anderson and Gillogly, 1976]  Anderson, R. H., and J. J. Gillogly, "Rand 
Intelligent Terminal Agent (RITA): Design Philosophy", Rand Corporation 
Technical Memorandum R-1809-ARPA, February, 1976.

[Arnold, 1984]  Arnold, Kenneth C. R. C., "Screen Updating and Cursor 
Movement Optimization:  A Library Package", UNIX Programmer's Manual 
Supplementary Documents, USENIX Association, 1984.

[Borenstein, 1990] Borenstein, Nathaniel S., "MAGICMAIL Language Reference 
Manual", Bellcore Technical Memorandum.

[Borenstein, 1991a]  Borenstein, Nathaniel S., and Chris A. Thyberg, "Power, 
Ease of Use, and Cooperative Work in a Practical Multimedia Message System", 
International Journal of Man-Machine Studies, April, 1991.

[Borenstein, 1991b] Borenstein, Nathaniel S., "Multimedia Electronic Mail:  Will 
the Dream Become Reality?", Communications of the ACM, April, 1991.

[Forsdick, 1984]  Forsdick, H.C., Thomas, R.H., Robertson, G. G., and Travers, V. 
M., "Initial Experience with Multimedia Documents in Diamond", Computer 
Message Service, Proceedings IFIP 6.5 Working Conference, IFIP, 1984.

[Grudin, 1990]   Grudin, J., "Seven plus one challenges for Groupware 
Developers", Rev. of DAIMI PB 323 Aarhus University Computer Science 
Department.

[Hansen, 1990]  Hansen, W. Fred, "Enhancing Documents with Embedded 
Programs:  How Ness Extends Insets in the Andrew Toolkit", Proceedings of 
IEEE Computer Society 1990 International Conference on Computer 
Languages, New Orleans, 1990.

[Hogg, 1985]  Hogg, John, "Intelligent Message Systems", in Office Automation, 
D. Tsichritzis, editor, Springer-Verlag, 1985.

[Kernighan and Ritchie, 1978]  Kernighan, Brian W., and Dennis M. Ritchie, The 
C Programming Language, Prentice-Hall, 1978.

[Shepherd, 1990]  Shepherd, Allan, Niels Mayer, and Allan Kuchinsky, "Strudel 
-- An Extensible Electronic Conversation Toolkit", Proceedings of CSCW '90, 
October, 1990.

[Spafford, 1989]  Spafford, Eugene H., "The Internet Worm: Crisis and 
Aftermath," Communications of the ACM, June, 1989.

[Steele, 1990]  Steele, Guy L., Common Lisp:  The Language, Second Edition, 
Digital Press, 1990.

[Vittal, 1981]  Vittal, John, "Active Message Processing:  Messages as 
Messengers", in Computer Message Systems, R. P. Uhlig, editor, North-Holland 
Publishing Company, 1981.



Figures

Figure 1 -- program code for a simple survey

Figure 2 -- The ATOMICMAIL help screen

Figure 3 -- An ATOMICMAIL survey

1It should be noted that no ethically-trained software engineer would ever consent to 
write a "DestroyBaghdad" procedure.  Basic professional ethics would instead require 
him to write a "DestroyCity" procedure, to which "Baghdad" could be given as a 
parameter.
2The original name for this language was MAGICMAIL, which stands for "Messages that 
are Active Generate Innovation and Cooperation, but Mustn't Allow Internet Larceny."  
Unfortunately, a trademark was unavailable, so the language has been renamed 
ATOMICMAIL, which stands for "A Trademark On MAGICMAIL is Impossible; Clearly 
Monikers Are Inhibited by Legalisms."