# Incompatible Timesharing System

Dans les années 1960, Incompatible Timesharing System (en français, « Système en temps partagé Incompatible (avec les systèmes commerciaux disponibles) »), abrégé ITS et nommé par opposition à CTSS (« Compatible Time Sharing System »), fut un des premiers systèmes d'exploitation à temps partagé.
Il a été développé pendant les années 1960, en grande partie dans le MIT Computer Science and Artificial Intelligence Laboratory avec l’aide du Project MAC (en), par une communauté hacker alors naissante, qui désapprouvait l’orientation trop restrictive prise par CTSS ; le nom est un détournement de celui de CTSS, comme plus tard celui d’Unix sera un détournement de Multics.
Écrit en assembleur pour des machines PDP-6, puis PDP-10, son développement s’arrêta à partir de 1982 quand les efforts de développement se portèrent vers d’autres machines.
La dernière machine utilisant ITS fut arrêtée en mai 1990 au laboratoire du MIT. (La légende veut que rms (Richard Stallman) modifia le système de fichiers d'ITS sur cette machine fin avril 90, afin de le rendre hiérarchique histoire de montrer que c'était possible et « pour l'art », les fichiers d'ITS étaient nommés par deux blocs de 6 caractères en majuscules).

## Historique

Le développement de ITS débute à la fin des années 1960 quand la majorité des membres du MIT AI Lab (le laboratoire d’intelligence artificielle du MIT) se trouve en désaccord avec l’orientation prise par le Multics du projet MAC, initié depuis 1964, et notamment concernant l’inclusion d’un système de sécurité des données. Le nom, choisi par Tom Knight (en), est un clin d’œil à CTSS, développé au MIT au début des années 1960.
ITS est d’abord écrit en assembleur pour DEC PDP-6. Il sera plus tard porté sur PDP-10 où il sera très utilisé et amélioré. L’activité autour de ITS se réduit considérablement après 1982. Le MIT utilisera ITS jusqu’en 1990. Le Stacken Computer Club, en Suède, sera le dernier à l’utiliser en 1995. Il existe encore quelques ITS fonctionnels pour des raisons historiques mais fonctionnant sur des PDP-10 virtualisés.

## Fonctionnalités

À l'époque, ITS introduisit de nouvelles fonctionnalités, qui furent reprises par d’autres systèmes d'exploitation plus tard, dont :
* l’affichage sur le terminal est indépendant du matériel : les programmes génèrent des commandes de contrôle d’écran que le système traduit automatiquement en séquence de caractères que le terminal utilisé sait afficher ;
* un mécanisme de périphérique virtuel (en) pour les processus utilisateurs (appelé « jobs » sur ITS). Ces périphériques virtuels fonctionnent aussi pour éditer des fichiers en réseaux comme s’ils étaient locaux (comme dans un système de fichiers distribué). Les machines sur lesquelles était développé ITS étaient connectées à l’ARPANET ;
* une gestion avancée de processus : les processus utilisateurs sont classés dans un arbre géré par un processus superviseur. Les processus inférieurs peuvent être gelés (« frozen ») à n’importe quel moment, en préservant leur état (y compris l’état des registres) ; les processus peuvent ainsi être relancés plus tard comme si de rien n’était ;
* des mécanismes d’interruptions permettant une gestion asynchrone des processus. PCLSRing (en), un mécanisme, qui sera repris dans Unix, d’atomicité rendant les appels systèmes interruptibles. Un processus peut ainsi observer n’importe quel autre processus (y compris lui-même) même en plein milieu d’un appel système ;
* pour pouvoir être utilisable par le département de robotique du AI Lab, ITS supporte aussi bien le temps réel que le temps partagé.

### Environnement de l'utilisateur

L’interface utilisateur est très différente de celle proposée par les autres systèmes à la même époque :
* À l’origine, il n’y avait pas de mot de passe, et l’on n’était pas obligé de s'authentifier. L’identification est considérée comme un acte courtois qui permet de savoir qui est connecté à la machine.
* Pour se prémunir des manipulations cherchant à faire crasher le système, une commande exécutable par tous permet de crasher la machine, rendant le défi beaucoup moins drôle. De plus, cette commande envoie à toutes les personnes connectées le nom de la personne qui l’a exécutée.
* Tous les fichiers sont modifiables par tous.
* Les utilisateurs peuvent discuter, grâce à un système de messagerie instantanée, avec les autres terminaux. La commande « SHOUT » permet de demander de l’aide aux utilisateurs connectés.
* N’importe quel utilisateur peut voir l’affichage d’un autre terminal grâce à la commande « OS » (pour « Output Spy »). La personne ainsi espionnée peut détecter celle qui l’espionne grâce à la commande « JEDGAR » (prononcé « JED-GAR »), en référence au directeur du FBI J. Edgar Hoover. Il peut aussi tuer le processus sur la machine luser (contraction de « user » et « looser ») espion ; mais cette fonctionnalité fut « désactivée » par la suite, car JEDGAR pouvait confirmer avoir tué le processus sans que ce ne soit le cas.
* Les « touristes » (les personnes invitées dans le laboratoire d’IA du MIT ou sur le réseau ARPAnet) sont autorisés. Plus tard, une politique sur l’accès des touristes fut publiée. L’appellation « TURIST » provient d’une limitation du système de fichier à six caractères, lui-même une conséquence de l’encodage sixbit d’un mot de 36-bit, standard du PDP-10.
Par défaut, le langage de plus haut niveau de l'interface en ligne de commande est le langage de débogage du PDP-10, le Dynamic debugging technique (en) (DDT).
L'éditeur de texte le plus courant est TECO (« Text Editor and Corrector ») avant qu'il ne soit supplanté par Emacs, lui-même issu de TECO.
DDT et TECO utilise une table de distribution (en) fondée sur des commandes à une seule lettre ; ils n'avaient pas réellement de syntaxe (en) propre.
Le Jargon File est né d'un travail commun entre les utilisateurs de ITS du AI Lab au MIT et au Stanford Artificial Intelligence Laboratory.

### Applications développées pour ITS

Emacs (« Editor MACroS ») était à l’origine une collection de programmes TECO, appelés « macros » ; il fut ensuite réécrit pour d’autres systèmes : en C pour Unix, en ZetaLisp pour un système d’exploitation pour machine Lisp développé au MIT (« Lisp Machine operating system »).
La commande d’aide système info fit d’abord partie de Emacs avant d’être réécrite sous la forme d’un programme à part entière pour les Unix-like.
Macsyma (précurseur de Mathematica et Maple) introduisit une modélisation des langages algébriques.
SHRDLU a été développé sur ITS.
Plusieurs langages de programmation ont été créés sur ITS : MacLisp (le précurseur de ZetaLisp et Common Lisp), Microplanner (en) (implémenté en MacLisp), MDL programming language (en) (qui sera la base de l’environnement de programmation de la société Infocom), Scheme.

## Développeurs

* Richard Greenblatt
* Stewart Nelson (en)
* Tom Knight
* Richard Stallman