restricted access Electronic Mail and Text Messaging in CTSS, 1965-1973
In lieu of an abstract, here is a brief excerpt of the content:

Electronic Mail and Text Messaging in CTSS, 1965-1973

Applications from prior technologies are often reimplemented on new computing or communications platforms, and users sometimes don't realize that the applications have been recycled. For example, text messaging was available between computer users for years before its implementation on cell phones, and email has precursors before its implementation on the Internet.

My colleague Noel Morris and I implemented both an electronic mail command and a text messaging facility for the Massachusetts Institute of Technology's Compatible Time-Sharing System (CTSS) in 1965.1 The MAIL command let a system user send a text message to another user's "mail box" so the recipient could read the message later. The WRITE subcommand of the .SAVED command allowed a user to send a one-line message to another logged-in user's terminal.

Begun at the MIT Computation Center in 1961, CTSS was fairly operational the following year.2 By 1965, there were hundreds of registered users from MIT and other New England colleges, and the CTSS provided service to up to 30 simultaneous users every day on each of the two systems on which CTSS ran—the MIT Computation Center and Project MAC IBM 7094s. CTSS users logged into the 7094 from remote dial-up terminals and were able to store files on a disk online. This new ability encouraged users to share information in new ways.


When geographically separated CTSS users wanted to pass messages to each other, they sometimes created files with names such as "TO TOM" and put them in "common file" directories (which today PC users call folders). Recipients could log into CTSS later from any terminal, look for the files addressed to them, and print the files on the remote terminal. This method only worked between pairs of users who shared a common file directory. It relied on an ad hoc convention and had obvious privacy problems.

A more general message facility, the MAIL command, was proposed for CTSS in MIT "Programming Staff Note 39" by Louis Pouzin, Glenda Schroeder, and Pat Crisman.3 The memo has no date, but numerical sequence places it in either December 1964 or January 1965. PSN 39 proposed a facility that would let any CTSS user send text messages to any other. Each user's messages would be appended to a per-user file called MAIL BOX, which would have a "private" mode so that only the owner could read or delete messages. The proposed uses of MAIL were communication from "the system" to users informing them that files had been backed up, communication to the authors of CTSS commands with criticisms, and communication from command authors to the CTSS manual editor.

In the spring of 1965, Noel Morris and I were new members of the MIT research staff, working for the Political Science Department. When we read the PSN document about the proposed CTSS MAIL command, we asked, "Where is it?" We were told there was nobody available to write it. We wrote the MAIL command that summer. Noel saw how to use the features of the new CTSS file system to write messages into a user's mailbox file, and I wrote the code that interfaced with the user. We made a few changes from the original PSN 39 proposal during implementation. For example, to read their mailbox, users used the PRINT command instead of a special argument to MAIL. (The CTSS manual write-up and the source code of MAIL are available online.4,5) Each message in a MAIL BOX was preceded by a single line showing the sending user's identification. The MAIL command was installed in the fall of 1965. It did not support a message subject; carbon copies; sending to a list; fonts, color, or graphics in messages; or other improvements that became available in later mail mechanisms. Messages could only be sent to other users of the same time-sharing machine.

Text Messaging

Our implementation of text messaging started in the spring of 1965. It was a feature of the command shell .SAVED abbreviation command, which read lines from the terminal and executed them. It could expand...