Advent of Computing - Episode 47.5 - Lars Brinkhoff Interview, Preserving ITS

Episode Date: January 18, 2021

Lars Brinkhoff has been spearheading the effort to keep the incompatible Timesharing System alive. Today we sit down to talk about the overall ITS restoration project, software preservation, and how ...emulation can help save the past. You can find the full restoration project at github: https://github.com/PDP-10/its And follow Lars on twitter: @larsbrinkhoff

Transcript
Discussion (0)
Starting point is 00:00:00 Welcome back to Advent of Computing. Today I have an offer, something special. This is an interview that I recently had the pleasure of conducting with Lars Brinkhoff. He's one of the main contributors of the current surviving build of ITS, the Incompatible Time Sharing System. In this interview we're going to be talking a little bit about ITS, a little bit about software preservation, and in general a lot about why it matters that the software is preserved. So without further ado, let's hop right into the interview. Today I have joining me Lars Brinkhoff, who is going to talk to us a little bit about the restoration and preservation of ITS, the incompatible time-sharing system. So Lars, why don't you start off by introducing yourself
Starting point is 00:00:50 to the listeners really quick? Okay, well, I'm just a regular programmer in my day job, and for some reason I've become very interested in ITS, and I have been trying to restore it back to its former glory the past few years. I think so far it seems like the project's been doing a great job at that. So in brief, could you describe just what the end goal is of the ITS restoration work that you've been involved with? the end goal is of the ITS restoration work that you've been involved with? Okay, the end goal. Well, that would be to have most of its software available and have emulators for most of its hardware for people to be able to explore and see what it was like back then,
Starting point is 00:01:41 how to use computers in that era. So how did this project get started? I know earlier in some of our long email threads, you were talking about how you're kind of a later addition to the overall effort. So can you talk a little bit about how the restoration process kind of got started up? Because I know ITS was still in use into like the 90s. Is that right? In some sites? Yeah, 1991 was the last time it was used at MIT.
Starting point is 00:02:13 So has the preservation kind of been an outgrowth of the same people that were using it at the end of its lifespan? Or is this a whole different crowd? Well, the first one was Ken Harenstein. a whole different crowd? Well, the first one was Ken Harenstein. He was an important ITS hacker back in the day. So already in 1992, he had ITS running on his PDP-10 emulator.
Starting point is 00:02:39 So that's the first important step. But that emulator wasn't available to the public. But that emulator wasn't available to the public. So it wasn't until 2001 that Bob Sapnik released his PDP-10 emulator. And people had that running. And that's the SimH emulator? Right, yes. SimH, yes. And so people were using that for a while, but it only supported the latest, smallest KS10 processor, which isn't where all the action were back in the day. So I got involved four or five years ago. It started as a small script to just do the manual installation
Starting point is 00:03:27 in an expect script. So once I had that running, I thought, well, why not have the ITS rebuild itself from source code? So I rebuilt the ITS kernel and then the assembler and so on and kind of snowballed from there.
Starting point is 00:03:46 I think a lot of projects usually snowball up pretty quickly. So Lars's code, and I guess it's a community project, so the overall project, is all available on GitHub. And I was actually running it a few days ago on my own system. And it's really cool to see it build the entire system, you can just run make and once everything is configured, it just builds ITS and emulation in front of you, which I think, even just watching it fly by, even though I don't know what every command is doing. It's really cool to see that happening on, well, really close to modern hardware. How much work had to be done with modifying the emulator? Because one of the things that makes ITS a little different is it didn't run on stock
Starting point is 00:04:37 PDP-10 hardware. It had custom stuff. I'm thinking about like the paging system. So did you have to work with the people who maintain the emulation to modify that to work better with ITS? Well, yes and no. Harry Steen and Sapnik, they both had the special ITS pager
Starting point is 00:05:00 or the KS10 processor, so that was all working when I got into the picture. However, an important step was when I heard about Rich... Sorry, what's his name again? Cornwell. He had started making a KA emulator, which is really where ITS was running most of its time.
Starting point is 00:05:27 So I got in touch with him and we operated over several months to add the ITS hardware to his emulator and we finally had it running. So that's been kind of the main action since then.
Starting point is 00:05:42 Very good. Another thing that I know I'm curious about and our listeners might also be curious about is what kind of work you've had to do to preserve the software. Because, once again, going back to what we've been saying, ITS was running into the 90s. So conceivably, the software and source code
Starting point is 00:06:02 has just been around, and there's the whole culture of sharing software with an ITS. Was it just a matter of tracking down the people that have the right hard drives, or did you have to transfer from printouts or any weird medium that you normally wouldn't be putting into a computer these days? Well, it's kind of all of the above. Well, it's kind of all of the above. When I started out, there was the kind of semi-secret 1990 snapshot of the system before it was shut down. And because that has lots of personal private files, it wasn't public. But the in-crowd kind of shared it between themselves and I got a copy so I was able to lift the source codes from there. And as things went on I got in touch with the former Maxima developer Erik Svensson and we kind of bugged MIT about this until they kind of relented and let us be a formal researcher.
Starting point is 00:07:07 So we have access to the full archive of P2P backup tapes now. But it's still a painful process to get files out because they have to be approved by MIT. And then they send the files to the original authors. And then we ask them for permission to include it on github i didn't i guess i've never thought about i've i've worked with archives too and it's always it can be a little bit of a process to get files and data and get it released i guess i never thought about that being an issue for source code but but that makes sense. It is just archival data.
Starting point is 00:07:46 Yeah, sure. Well, I kind of see the point. There's a lot of private files in there. You can't just release them to anyone who asks for them. So do you think that the overall state of preservation for the code in ITS is pretty good then, if it's just a matter of getting stuff released now? Is there any big glaring hole that's still lost that you can't track down?
Starting point is 00:08:11 Well, the one thing that I think is truly lost and which is a large regret for me is the original PDP-6 version of ITS. Oh, yeah. I would very much like to see that run, but I don't think it will happen. So do you think that since the PDP-6 was still in operation for a while once the AI lab upgraded to the 10, right?
Starting point is 00:08:39 So do you think it was just a matter of they overwrote those disks and were like, we don't need this code anymore, this is obsolete? I think the files were stored on the old Dictape formats. Oh, okay. And they kind of got lost or discarded over time. And all the new code for the PDP-10 was stored on the new fancy disks, and I didn't care to save the old PDP-6 stuff, I guess. That makes sense.
Starting point is 00:09:04 It's the kind of ephemera that's, in the moment, not necessary. Right. That is a shame, though, that it's lost, because that would be interesting. So I know the PDP-6 source for ITS was written in machine code. Is that correct? Yeah, all versions are. Okay.
Starting point is 00:09:26 All right, so it is all the same code. Another question I had was with the build chain for building ITS, that all runs in emulation, right? So in general, you're using all the same tools to compile ITS that would have been in use in the era. Yeah, sure. Absolutely. And that's kind of the goal to have it build as it would have been built back in the day. So here's the kicker then. How did you get interested in working with ITS this intimately? Did you have experience prior to five years ago when you started working with this project?
Starting point is 00:10:06 Well, I did play around a little bit with it back in 2001 when it became possible to run the emulator for yourself. So I just played around with it a little bit and I wrote a disassembler for the ITS-BP10 code. And, well, I didn't do that much. So it wasn't just until four years ago I started doing it for Rails. And so what made you make the step up into getting more involved with the project? Was that just you got to a certain point where you have some free
Starting point is 00:10:41 time and can invest in it or was there some kind of new interest that sparked that? Well, I think it's been at the back of my mind for a long time. I read Guy Steele's book, The Hacker's Dictionary, the hard copy version of the jargon file. I have a copyright over here that is very doggy myself. Right. So I read that when I was a kid, I think I kind of made an impression, a strong impression on the young me. So when I started working more seriously back in 2016, I think it kind of popped up and I just did more and more and step by step and it's a grow into the projects
Starting point is 00:11:27 we have today. All right very good. Was it hard to get adapted to the machine code or I guess primarily a lot are a lot of the utilities written in Lisp and ITS or is it mainly? Some mostly machine code. So did you have experience in either of those languages before this project? Or has this been a pretty steep learning curve? Well, I have experience in machine code and assembly language from before. Since I grew up in the 80s, I had a home computer and Atari ST with a 68,000 processor. And the name of the game was assembly programming already back then. So it wasn't that large of a step to do PDP-10 programming.
Starting point is 00:12:19 That's fine. So I've used a little bit of PDP-11 assembly. I know that's kind of a different thing. Is PDP assembly anywhere
Starting point is 00:12:30 close to working with a 6800, or is it its own beast entirely? Well, it is a bit
Starting point is 00:12:38 different in many details, but overall I kind of think most processors from this era, they're similar enough. It doesn't bother me. And I kind of think it's not that different from my day job actually. I do a lot of low-level programming in my day jobs and I'm kind of used to jumping into projects and quickly learn their tools.
Starting point is 00:13:10 Actually, I think ITS, it's kind of like basically like today, but simpler because all the hardware and the software were a lot simpler back then. That's a good point. I also work in IT in case no one can tell. And I know I wish that I could do more low-level work in my job. I write a lot of JavaScript, which I'm not the biggest fan, but that's a different story. Pays the bill, right? Huh? It pays the bill, right? I guess.
Starting point is 00:13:44 I have a lot of gripes with JavaScript, but I won't get into that. Let's see, just checking my notes really quick. So you're talking about how it was kind of an easy transition to get into working on this ITS project. Were there any big roadblocks you ran into that you didn't expect? You mentioned getting files released and approved from the MIT archive, but were there any... Sorry. That's fine. Were there any technical issues you ran into that really slowed work?
Starting point is 00:14:17 Well, not that much actually. Quite the opposite really, because people were saying, oh, this old KA10 code, it probably won't run. And the earlier efforts that used the KS processor, everyone advised, go with the KS, that's the latest code. The old KA probably doesn't work. But me and Rich Cornwell, we tried it and, well, actually, it did work. It worked very well. That's really cool i i guess that's a testament to just the code quality right if it was just in state and the emulation tools also you can really tell that these programmers they were really careful and care about backward compatibility and they they did a good job.
Starting point is 00:15:10 So what's been the most rewarding part of working with ITS? Besides just seeing it up and running, have there been any programs or anything you've been able to restore on the system that you got running and you're just like, yes, this is a really big step? Yeah, there has been a few highlights. I just ran a couple of really important programs back in the day and like Maxima, Maclease, MacHack. There's a lot of Mac as you can tell from Project Mac of course. So maybe one of the versions of MacHack 6, the chess program. That's kind of been a legend among chess programmers.
Starting point is 00:15:49 And people have been searching for the source code and well, we finally found it and we did make it run in the original environment. That's pretty cool. Other question, this might be a little left field. About Emacs on ITS and with emulation and everything.
Starting point is 00:16:08 I know I run a lot of weird emulation stuff in my free time for the show and just for understanding older projects. And one of the issues I always run into is keyboard layout. Um, I actually, I play a lot of games on the Play-Doh system, which they have emulated out in the cloud, and that had a very customized keyboard, and I always fat-finger everything. And I know Emacs has kind of weird key bindings
Starting point is 00:16:38 that, from what I understand, made more sense on the keyboards that were in use at the time. Is that correct? I don't think it's that big a difference from the keyboards of today. So I don't think it matters that much. As everyone should know, it uses a lot of control and meta codes, and control A is still control A today, so not that big a difference. All right.
Starting point is 00:17:06 Then another thing that comes to mind is ITS was used in the AI lab. And in my reading, I kept coming across people talking about using video cameras and robot arms with it. Have you been able to get any of that running through emulation? Or is that a step beyond what's going on right now? Oh, that's still on the to-do list. We don't have the video feeds. Sorry, no robot arm either. But do you think that'll be something that's feasible one day
Starting point is 00:17:40 as the state of emulation? Yeah, why not? That would be cool to see. It's kind of scraping the barrel now. Yeah, maybe someday. Just have to get the bindings right, right? Right. So the other thing I'm really curious about,
Starting point is 00:18:00 and this is something that I've ran into with other research I've done on the show, is we can preserve software, we can preserve hardware to a point, but what about preserving the culture around ITS? Because there's understandably going to be a smaller user base nowadays, since it's not in consistent operation. Is there anything you've been doing or the larger ITS preservation project has been doing to keep the culture alive? No, not really, I'm afraid. Well, maybe in a small way.
Starting point is 00:18:36 We're trying to find some common server that everyone can use to log in and kind of operate as a community, because that's something that's easy to miss now that it's so easy to install, I guess, on your own computer. So you think that having a large shared machine for public access is going to be coming soon in the future? Is that like robot arms? Is that down the line a ways?
Starting point is 00:19:04 Yeah, we are working on it. So it could be just some months away, maybe. Very cool. Well, I'm definitely excited for that to see more people using the system. Then how can people help contribute to this project? Is there anything that lay people who may not know as much about ITS as you could do to help the project? Well, my main
Starting point is 00:19:32 interest in this is mainly to just make it available to people. So please use it. That's the best way, I think. Of course, we have an open bug list of 400 bugs or so, so if you want to, you can jump in and
Starting point is 00:19:47 pick some bugs. That's not too many. No, no, no. Well, very cool. And then if people want to learn more about ITS or what you're working on, is there anywhere online that they can do that? I try to post
Starting point is 00:20:04 new and interesting events on my Twitter, so maybe there. Alright, and what's the handle for that? Well, it's just my name, Lars Brinkhoff. I'll add that in the notes also. Well, very cool. Thanks for coming on and talking with us, Lars.
Starting point is 00:20:20 Yeah, thank you for having me. Thanks for listening to this Yeah, thank you like the show, there are now a few ways you can support it. If you know someone else who's interested in the history of computing, then take a minute to share the show with them. You can also rate and review on Apple Podcasts and really anywhere you can listen to podcasts nowadays. And if you want to be a super fan, then you can support the show directly through Admin of Computing merch or signing up as a patron on Patreon. Patrons get early access to episodes, polls for the direction of the show, and assorted bonus content. You can find links to everything on my website, adventofcomputing.com.
Starting point is 00:21:17 If you have any comments or suggestions for a future episode, then go ahead and shoot me a tweet. I'm at Advent of Comp on Twitter. And as always, have a great rest of your day.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.