HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
PDP-10
its
Assembly2017–2026
PDP-10 / its

its

Incompatible Timesharing System

23Distinct people
76Mentions
0Explicit recommenders
963GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Incompatible Timesharing System

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 8:03:49 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year76 dated mentions

Observed mentions: 2017-01-24 01:14:25 UTC to 2026-09-12 02:00:03 UTC.

051015202017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments20172018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 6 mentions; 1 submissions, 5 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 9 mentions; 0 submissions, 9 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 8 mentions; 1 submissions, 7 comments20212022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 7 mentions; 1 submissions, 6 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 19 mentions; 2 submissions, 17 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 11 mentions; 2 submissions, 9 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC211
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC606
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC615
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC909
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC817
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC716
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC19217
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC1129
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC514
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC303

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
Incompatible Timesharing System About ITS ITS, the Incompatible Timesharing System, is an operating system for the PDP-10 computer family. It was created by hackers at MIT in the 1960s. The MIT site was shut down in 1990, but enthusiasts continue to operate ITS systems to this day. Some notable ITS features: Hosted the first versions of Emacs, Zork, Macsyma, Maclisp, Scheme, and multi-player Maze War Virtual memory User-space device drivers Networking: TCP/IP, ARPAnet, Chaosnet Transparent network file system Terminal-independent text output Graphical workstations There is a mailing list for discussion about ITS. Go to http://its.victor.se/mailman/listinfo/its-hackers_its.victor.se for more information. About this project This repository contains source code, tools, and scripts to build an ITS system from scratch. The goals are: To provide an automated build from start to end. No user intervention is necessary. To check which programs have source code, and which programs are missing source code. To ensure that we know how to build all programs. To update programs with the latest bug fixes and enhancements. To be able to set configurable options across the whole system, such as host name, IP address, hardware devices. The build currently runs on the SIMH and KLH10 emulators. Of course, we'd be delighted to test this on a real KS10. Building To build ITS with this repository, you need some tools installed; see the table below. Ensure all submodules are checked out, and then type make EMULATOR=simh, make EMULATOR=pdp10-ka, make EMULATOR=pdp10-kl, make EMULATOR=pdp10-ks, or make EMULATOR=klh10. This will leave built files in the out directory, some of which are disk images with ITS installed. Emulator Dependencies klh10 git, c compiler, make, expect, curses, autoconf simh git, c compiler, make, expect, curses, autoconf, sdl2 pdp10-ka git, c compiler, make, expect, curses, autoconf, sdl2, sdl2-image, sdl2-net, gtk3 pdp10-kl git, c compiler, make, expect, curses, autoconf, sdl2, sdl2-image, gtk3 pdp10-ks git, c compiler, make, expect, curses, autoconf, sdl2 Usage To start ITS, type ./start. If you see KLH10#, type go and Enter. If you see the DSKDMP prompt, type its, press Enter, and then ESCG. If you use the pdp10-kl emulator there is no prompt and you need to type ESCL ITS, press Enter, and then ESCG. Eventually, you will see SYSTEM JOB USING THIS CONSOLE. You are now ready to log in, so type CTRLZ. See doc/DDT.md for a list of useful commands. Alternatively to logging in directly in the system console window, which will always be displaying daemon messages, you may prefer to use a separate terminal session for logging in. To do this just run telnet localhost <port> from another shell window and press CTRLZ to log in there. The port should be determined as per this list: Port Type Emulator 10000 TK10 pdp10-ka 10002 Datapoint kludge pdp10-ka 10003 Morton box pdp10-ka 10004 DZ11 simh, pdp10-ks 10007 DTE2 pdp10-kl 10008 DL10 (pdp10-kl in the future?) To shut down ITS, type :lock and then 5down. Log yourself out to avoid the 5 minute grace period: type :logout. When ITS writes SHUTDOWN COMPLETE, it's safe to stop the emulator. Press CTRL\ to escape to the simulator command prompt and quit to close it. If you had a separate telnet user session running you can similarly press CTRL[ and then exit telnet. ITS can optionally use some additional peripheral devices. To attach a simulated GT40 graphics terminal, type ./start gt40. If you run the KA10 emulator, you can use the Knight TV raster display by typing ./start tv11 tvcon. On a TV, type F1 instead of CTRLZ. Here is an overview of the repository: bin - PDP-10 binary files necessary to bootstrap the system. build - build scripts. conf - configuration for building ITS. doc - documentation, most of which appear in the INFO system. src - source code for ITS and all programs. tools - build tools. out - build output. user - optional user files installed in ITS. Terminal Emulators Several emulators for terminals and peripheral processors are built along with ITS. They can be started conveniently with the start script, or separately. Not all terminal emulators are set up to work with all PDP-10 emulators by default. Name Description Type klh10 pdp10-ka pdp10-kl pdp10-ks simh type340 Type 340 vector no yes no no no gt40 GT40 PDP-11 vector no yes no yes yes imlac Imlac PDS-1 vector no yes no no no simh_imlac Imlac PDS-1 vector no yes no no no tv11 Knight TV PDP-11 cpu no yes no no no tvcon Knight TV console raster no yes no no no datapoint Datapoint 3300 text no yes no no no vt52 VT52 text no yes yes yes yes tek Tektronix 4010 vector no yes yes no no Documentation See the doc subdirectory for documentation. There are some short introductions for beginners: How to create a new user DDT cheat sheet for Unix users Basic editing with EMACS TECO survival guide DDT debugging newbie guide Hello MIDAS Hello Maclisp Introduction to Muddle DUMP and itstar Games Printing Assembling ITS Com link mode Logo PDP-6 Networking A list of known ITS machines. How ITS is built. Applications Some major applications: Adventure, game C10, C compiler CLU, programming language. DDT, debugger Emacs, editor Logo, interpreter Mac Hack VI and Tech II, chess programs Maclisp, interpreter and compiler Muddle, interpreter Macsyma, symbolic math Maze War, game Midas, assembler Muscom and musrun, for playing music PDP-11 simulator Scheme, interpreter Spacewar!, game Stanford University Drawing System TECO, editor TOPS-10 and WAITS emulator There is a detailed list of all installed programs.
Read the full README on GitHub

What Hacker News says

7 sources
Surprising related fact: terminal multiplexers appear to be a relative neologism, multiple terminal emulators running on a graphical system likely predate them by years. I've been trying to dig my way into the history for funsies recently, below is hacked out of my notes that will eventually be a post or article or something. Window by Edward Wang is in 4.3BSD in 1986, and it's the earliest member of the species I can find. Screen was initially written by Oliver Laumann and Carsten Bormann at TU Berlin in 1987. tmux didn't happen until 2007. By contrast, blit terminals could run multiple terminal emulators in graphical windows around 1982 (commercial by 84; http://doc.cat-v.org/bell_labs/blit/ ). Likewise, some of the UNIX workstation vendors' early windowing systems like Sun Windowing System (SunOS 1.0, 1983) supported multiple termina
Read the rest
l emulators. The earliest graphical multiple terminal emulator is probably Xerox PARC's Alto, which could run multi-window Chat (which was more or less a telnet superset) for talking to PARC's bespoke MAXC PDP-10 clone or other ARPA sites in 1979 or so. The necessary condition for software terminal multiplexing (a robust pseudoterminal system) has been around for a very long time in places like the DEC 36-bit lineage: it was present in the PDP-6 Time Sharing Monitor announced in 1967 ( http://bitsavers.org/pdf/dec/pdp6/PDP-6_TimsharingBroch.pdf ), and continued to be present in most of the PDP-10 systems, importantly the TENEX line, and was later available in some of the smaller DEC systems like RSTS for the PDP-11. That was enough to detach and reattach jobs to terminals, but I can't find record of a screen-splitting tool. There were some patches from RAND and BBN to 6th edition UNIX by the late 70s ( https://minnie.tuhs.org/cgi-bin/utree.pl?file=SRI-NOSC/dmr/p... ), but there wasn't really wide-spread PTY support in UNIX until 1983 when 8th edition and 4.2 BSD sprung TENEX-like psuedoterminals, which kind of puts a lower bound on UNIX-like systems having such a thing. It's possible EMACS was first, still in PDP-10 environments. ITS EMACS had some kind of hsplit support early on, possibly as early as April 1978 ( https://github.com/PDP-10/its/blob/master/doc/eak/emacs.lore ), and later some limited terminal-dependent vsplit support was developed for Multics EMACS between 84-88 by Honeywell Canada on behalf of the Canadian Department of National Defense for use in translation work ( http://bitsavers.trailing-edge.com/pdf/honeywell/multics/CH2... ). I can't find a record of when Comint mode or something like it came into being, which is necessary to use it as a terminal multiplexer. There's a whole diversion about SRI NLS being able to do terminal multiplexing in demos on a SDS940 running the Berkeley Time Sharing System by the late 60s. They never split to multiple text terminals in any footage I've seen, and at least early on it seems the apparent screen multiplexing in eg. the mother of all demos in '68, was done with cameras pointed at CRTs and analog video muxes.
In What's a good Linux terminal emulator that doesn't try to reinvent TMUX?
I think of ITS (the Incompatible Timesharing Network at the MIT-AI Lab) as the first social network. https://news.ycombinator.com/item?id=23115608 DonHopkins on May 8, 2020 | parent | context | favorite | on: Zork source code, 1977 Zork definitely has some puzzles that are practically impossible to figure out, without some help. The ITS operating system that Zork was developed on was a extremely open, with very little security, but lots of obscurity. ITS was like the original "social network," where users would hang out and socialize, with lots of visibility and awareness of each other and what they're doing, where everybody could see each other's files and read each other's email, with programs like "INQUIR" for telling other people about yourself, "WHOIS" and "FINGER" for finding out about other people, "WHOJ" to see who's on and what t
Read the rest
hey're doing, "SEND" and "REPLY" for sending immediate messages back and forth, "UNTALK" for multi-window chatting, "MAIL" for sending email, "RMAIL" and "BABYL" for reading email, etc. And (important to Zork) also "OS" (Output Spy) to spy on other people's sessions over their shoulders! Only two people could play Zork at once on DM, and only after east coast business hours. Usually there were a few other people just hanging out, spying on the two lucky people playing, chit chatting with each other and the players by sending messages and email, etc. It was considered perfectly normal and inoffensive behavior for people to spy on each other and learn about running Lisp, hacking Emacs, or playing Zork. (As long as you're not creepy or obnoxious about it, but people tended to be polite and follow the Tourist Policy, and people liked to help each other learn. And if you liked creepy obnoxious stuff, you could subscribe to REM-DIARY-READERS!) https://medium.com/@donhopkins/mit-ai-lab-tourist-policy-f73... >TOURIST POLICY AND RULES FOR TOURIST USE OF ITS MACHINES >It has been a long standing tradition at both the Laboratory for Computer Science and the Artificial Intelligence Laboratory at MIT to allow non-laboratory people to use the laboratories’ computers during off hours. During the early days of the laboratories’ existence a non-laboratory person (such people have come to be called tourists) could gain access to one of the computers by direct personal contact with a laboratory member. Furthermore, tourist access was controlled because access to the laboratories’ computers was de facto achieved through on site terminals. A tourist sponsored by a laboratory member would generally receive some guidance and tutelage concerning acceptable behavior, proper design techniques for hardware and software, proper programming techniques, etc. The expectation on the laboratories’ part was that a large percentage would become educated in the use of the advanced computing techniques developed and used in our laboratories and thereby greatly facilitate the technology transfer process. A second expectation was that some percentage would become interested and expert enough to contribute significantly to our research efforts. Tourists in this latter group would at some point in time graduate out of the tourist class and become laboratory members. In actual fact a number of former and present staff members and faculty earned their computational wings in just this fashion. [...] MIT-DM was the Dynamic Modeling Lab's PDP-10 running a slightly different version of ITS, and it was the only ITS machine that had any form of file protection, which was primarily used to hide the Zork source code. But even that was essentially only security through obscurity, which was why the source was eventually leaked. Zork had its own end-game, but getting an account on MIT-DM was like the pre-game, and logging into MIT-DM itself was like the Zork Lobby where you'd hang out waiting for your turn and socializing. You could get an account on most of the ITS machines just by asking nicely and using the right magic words, like mentioning Lisp on MIT-AI, or Macsyma on MIT-MC, or SomewhatBasic on MIT-ML. But Zork was so sought after that DM was one of the harder ITS machines to get an account on -- you couldn't just say you wanted to play Zork or hack Lisp: you had to say you were interested in MDL for some plausible sounding mumbo jumbo like "algebraic applications". But they still knew you just wanted to play Zork, though. PDP-10/its: Incompatible Timesharing System (github.com) https://news.ycombinator.com/item?id=13514918 https://github.com/PDP-10/its
In Orkut
> ITS is also available as open source (https://github.com/PDP-10/its) Sometimes I wonder, if you wanted to create an operating system like ITS for more modern platforms, what it would look like? ITS is written in PDP-10 assembly, what if someone wrote a compiler which read in PDP-10 assembly language and spit out C code? Could that be a first step to porting it? It is surely a lot more complicated than that. It contains self-modifying code, which would obviously break that translation strategy. A lot of hardware-specific code would have to be rewritten. 6 character filenames without nested directories might have been acceptable in the 1970s, but few could endure it today. A multi-user system with a near-total absence of security was acceptable back then, obviously not in today's very different world. ITS does have some interesting featur
Read the rest
es contemporary systems don't: A process can submit commands to be run by the shell that spawned it – actually MS-DOS COMMAND.COM also had that feature (INT 2E), but I haven't seen anything else with it. A Unix shell could implement this by creating a Unix domain socket, and passing its path to subprocesses via an environment variable–but I've never seen that done. Another was that a program being debugged could call an API to run commands in its own debugger – I've never seen that in any other debugger, although I suppose you could write a GDB plugin to implement it (have a magic do-nothing function, then a GDB Python script sets a breakpoint on that function, and interprets its argument as commands for GDB.) Actually, in ITS these two features were the exact same feature, since the debugger was used as the command shell. Another was that a program had named subprocesses (by default the subprocess name was the same as the executable name, but it didn't have to be.) Compare that to most Unix shells, where it is easy to forget what you are running as background jobs 1, 2 or 3.
In The Unix-Haters Handbook (1994) [pdf]
Richard Gabriel's "The Rise of Worse is Better," written around the same time period the Unix-HATERS Handbook was written, gives some clues. Unix was contrasted with environments such as Scheme (which is rather small, but because it's designed as a "crown jewel"), Common Lisp (the exemplar of a "big complex system" that is complete and correct, but large and complex), and the ITS operating system (https://en.wikipedia.org/wiki/Incompatible_Timesharing_Syste...). Thankfully there are many open-source Scheme and Common Lisp implementations, and ITS is also available as open source (https://github.com/PDP-10/its). Of course, modern Unix-like systems these days are large and complex, though Plan 9 and Inferno are quite architecturally refined, reducing some of the complexities that you'll see in contemporary Unix-like systems.
In The Unix-Haters Handbook (1994) [pdf]

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.