I learned from the history of Multics that in the early days of computers, Time Sharing System (TSS) was used at MIT, and then Compatible Time Sharing System (CTSS) was developed in 1961, also at MIT. In July 1963, Project MAC was started, to improve the system, which lead to the development of Multics.

Now, I have recently learned that hackers at the Artificial Intelligence Lab, also at MIT, developed the Incompatible Time Sharing System (ITS) and used it until 1990.

What are the technical differences between Compatible Time Sharing System (CTSS) and Incompatible Time Sharing System (ITS)?

3 Answers 3


The technical differences are large when compared to the technical similarities.

CTSS was built for a modified IBM 7094 system while ITS was built for the DEC PDP-6 (later PDP-10). Both of these machines were organized around 36 bit words, but the similarity tails off after that. Both machines lacked a hardware page map, and did not attempt to provide virtual memory capabilities to the timeshared applications. But they both had hardware and software features to protect the system and the users from rogue programs. Later on, DEC PDP-10s were modified to provide a third party page map, and DEC came out with a processor, the KI 10, that had a page map.

CTSS was intended to make timeshared access available across a wide swath of the MIT campus, and to a varied user community. Terminals were set up a long ways from the data center itself. These terminals included the golf-ball print head and the keyboard from the IBM Selectric, with communication gear built in for connection to the computer. Best keyboard I ever used.

ITS was intended to organize usage of the AI PDP-6. There was almost no security at all. They preferred to depend on security through obscurity. If you could figure out how to use the machine, then you probably belonged in the user community, regardless of your formal status. But remote access was initially not supported at all.

The "Incompatible" in ITS was a humorous reference to the "Compatible" in CTSS. For comparison purposes, the name unix was chosen as a deliberate ironic reference to the "multi" in Multics.

While the people who built ITS would have called themselves "hackers", this can be misleading in today's context. They were information anarchists, but they were largely benign, at least in their intent. They were also somewhat project leadership anarchists. Very little top down management went into ITS, as far as I could tell. Instead, people built things, and persuaded other people to accept them based on the usefulness of what had been built. Nonetheless, ITS exhibited a uniformity of design that makes the products of more formal development efforts look like a hodgepodge. The hackers respected each other.

The user interface for ITS was the debugger, DDT. The user interface for CTSS was a very early prototype for interactive user command languages that came along later. Examples of such later command languages might be the command language for TOPS-10, a timeshared operating system from DEC, or even the command shell for MS-DOS.

The primary language for ITS was LISP (apart from assembler). One of the widely used languages on CTSS was Basic, adapted from Dartmouth Basic. This reflects the different nature of the user communities for the two systems.

Most of the above is from personal recollection. I used both systems, about fifty years ago. I apologize for the lack of specific pointers to more formal history of the two systems. Here are a few links to get you started.

List of ITS machines

Writeup on Prof. Corbato architect of CTSS

Hackers: Heroes of the Computer Revolution.

  • I've never heard of or seen BASIC on CTSS. I'd sincerely love to know where you can read about that. I've only read about and used Michigan Algorithm Decoder (MAD) on CTSS. A substantial amount of CTSS software appears to have been written in MAD. There is even a version of the scheduler which was written in MAD in order to make it easier to experiment with. The more commonly used version of the scheduler was written in assembly language (MIT's version of IBM FORTRAN Assembly Program, FAP). Commented Feb 1, 2023 at 15:26
  • Maybe I am mistaken. I seem to remember people playing with Basic at MIT in that time frame. But my memory is far from perfect. Commented Feb 1, 2023 at 17:40
  • Looking up Basic in Wikipedia, I found that it was initially developed on DTSS, the Dartnouth Time Sharing System. Maybe it was ported from there to CTSS. Maybe not. The only program I ever wrote on CTSS was in either Fortran or MAD. Commented Feb 1, 2023 at 17:54
  • There's a list of languages that can run on CTSS in the WP article. The only ones that I am able to run on a 7094 emulator are FAP, MAD and LISP. I have not been able to locate any of the others yet. I have about 2 GB of CTSS related documentation here. drive.google.com/drive/folders/… Commented Feb 22, 2023 at 13:21

It's possible to try both CTSS and ITS yourself. Both operating systems run on emulators.

As for differences, Tom Knight, one of the ITS creators, wrote:

I would actually say that the main influence of CTSS on ITS was a demonstration of just what it was that we didn't want to do.

See more here: https://github.com/PDP-10/its/issues/1588


One notable similarity that was not mentioned here is that the ITS file system architecture very closely resembles the CTSS file system. Both have Master File Directories (MFD) and User File Directories (UFD) which are not part of a hierarchy; you cannot put a directory (folder) inside of a directory other than UFDs are "inside" of the MFD. Both have "first name" and "last name" file names. There is no dot (.) between them; they are both 6-character-maximum length, using characters that are six bits in length which does not provide both upper and lower case letters. The file names are monocase and represented as upper case. CTSS used BCD (pre-EBCDIC) characters in file names while ITS used DEC SIXBIT, a form of ASCII. CTSS and ITS support a larger character set but not for file names. Both have linked files (symbolic links).

Because of the emphasis on access protection, CTSS had "common files" directories where files shared between users were typically stored. The ITS file system did not need that feature as all files were shareable. A limitation of CTSS is that only one user could use the CTSS COMFIL command (which similar to the cd (change directory) command on UNIX/Windows) to get into a "common files" directory at a time; two or more users could not be in the same "common files" directory at once. Adding linked files overcame that as users did not need to be in the "common files" directories to access files in them, they could link the files into their personal directory and access them from there. That could have been the incentive to create linked files.

Source: CTSS Programmer's Guide

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .