On this page On this page
episode 17 — Early Web History and Interlisp with Larry Masinter.
We sit down with internet pioneer and longtime IETF contributor Larry Masinter to revisit the origins of many technologies developers use every day. From his early days at Xerox PARC to co-authoring foundational RFCs on HTTP, URIs, and more, Larry shares first-hand stories that connect the early web to the world we build in now. The conversation also explores his current passion project: reviving the Interlisp environment as a living historical system.
If you like this podcast you might also like our modular network framework in Rust: https://ramaproxy.org
00:00 Intro00:34 Introduction to Larry Masinter05:32 The Intellectual Environment at Xerox PARC06:49 The Interlisp Project and Its Impact10:05 Transitioning to Document Servers and HTTP12:02 Resources, Gopher and the Early Web15:45 Why did HTTP succeed where Gopher faded away20:56 Larry's Involvement in Web Standards and Protocols25:11 Reviving Interlisp post-pandemic27:13 interlisp.org , 5 years later32:57 The Tradition of April 1st RFCs33:51 Invention of Hypertext Coffee Pot Control Protocol (1998)37:04 The Invention of HTCPCP40:55 Exploring URI Schemes47:58 Form-Based File Upload49:12 The Politics of Web Standards01:05:12 The Evolution of Web Protocols01:05:53 Developing in the Interlisp Environment01:14:03 Goals of the Interlisp Revival Project01:23:39 Collaborations and Future Aspirations01:25:09 Outro
Music for this episode was composed by Dj Mailbox. Listen to his music at https://on.soundcloud.com/4MRyPSNj8FZoVGpytj
Elizabeth (Plabayo)
0:15 | 🔗
This is netstack.fm, your weekly podcast about networking, Rust, and everything in between. You are listening to episode 17 recorded on the 21st of November, 2025, where Glen has a conversation with Larry Masinter about the early history of the web and the revival of the Interlisp project. Welcome to another week of Netstack.FM Today our guest is Larry Masinter He is an early Internet pioneer and ACM fellow. After attending the Stanford University, he became a principal scientist of Xerox Artificial Intelligence Systems and he is also the author or co-author of 26 of the Internet Engineering Task Force's requests for comments or RFCs. in case you worked with any of the HTTP 1.1 or URI RFCs you might have seen his name He's a true legend and I'm very happy that he's today with us. Despite the fact that he's in pension, he is still very active and is working very hard with plenty of other people to bring back the interlisp system about which he will tell us all about later as well. So welcome to our virtual studio, Larry. Great, I'm happy to be here. Go ahead. So, yeah, maybe to get started, like, could you maybe tell a bit about like how did you get into like software and computers? Because yeah, it was still very early days in those days. Right. ⁓ I was an undergraduate at Rice University in Houston, Texas, and I was a math major. And I was thinking I was going to be a math mathematician. And when I was growing up, I wanted to be a scientist. I tried to build a computer when I was in sixth grade and of course it didn't work. didn't know that relays, you couldn't make relays out of electromagnets and nails. But that was my early interest. I read some books about artificial intelligence and perceptrons and I thought that was pretty cool. Well, and it's taken, is in the 50s. I was born in 1949. ⁓ And mathematics really attracted me because it was the truth that everything else was statistical and determined by experimentation and revisable. But math was the truth. But I learned ⁓ some things about computers. I went to a summer science institute by the National Science Foundation. in the US between my junior and senior years of high school. And I learned programming on a 1620 and a Univac 1100 assembly language. And that was a lot of fun, and so I kept that a part-time job trying to teach computing a business college that was hopeless. But when I went to Rice, I was thinking that programming was a way to earn money, that I stepped up with the math came out to Stanford to be in the math department. This is in But Vietnam came along fear of getting involved in the war led me to apply for this status called Consciousness Objector. so I did that and we had to do two years of alternative service. But my alternative service was to work for the Stanford Medical Center for two years on a project called Dendrel, which was set up analyze unknown chemical compounds by their mass spectrograph. That was an interesting project, but it turned out to be a mathematical problem ⁓ of how to generate all the graphs that satisfy the valence rules given the molecular formula of how you find graphs without any duplicates. And then they did some group theory and graph theory. And so that was my first real programming job. I was working for Stanford in the joint project by the Stanford Medical Center and the Computer Science Department, led by Ed Feigenbaum and Carl Jorassi and Josh Lederberg. He was a Nobel laureate. And Carl Jorassi invented birth And Ed Weigelbaum was a leader in computer science. So when that was over, I switched to computers, the degree program in computer science and stayed on as a grad student until about 1980, but I was really working at Xerox. When I was working on Dendrel, we were using B.B. Enlisp. And there were a lot of features that I had implemented for LISP 360 at Stanford that hadn't worked in LISP and I thought I was missing that. I learned algol at Rice. And so, Comets Virtual Programming and... I took over the implementation of the stretch regenerator from someone else. That formed my interest programming as a kind of domain where artificial intelligence would be useful. And I worked for Warren Tidelman, who was the original... founder of the Interlisp project. And I'll get into that later when I come back to what I've been doing lately because I've been working for the last four or five years on revival of Interlisp as a programming, as a historical artifact that runs on modern computers and that you can experience what it was like in the early days of Xerox PARC. Okay, that's very interesting. I imagine in those kind of environments it probably was quite intellectually driving. if we zoom in on Xerox Park like it's a pretty magical place and I don't really know. I think a lot of people from my generation sometimes wish that we could have worked in a place like that because a lot of like really magic happened there, Yes, yes, it was very intellectually stimulating. I remember if I got mad at me for saying that I thought the staff at Xerox Park was more interesting than the faculty at Stanford. Yeah, I can imagine. it actually like a big place? Like how much people work there at those kind of projects? Maybe there were hundreds, maybe a hundred, not a lot. And they did recruit top people. I think my role was more as the technical leader, I inherited from more entitlement. Yeah, so... Yeah, that's true. and the Interlisp And it was infrastructure to build something that other people could use for research. And so we had a lot of users around the world of Interlisp and we worked on the Interlisp-D, the window graphical user interface version of it. And anyway, I recommend people go to interlisp.org to our website where we've put a lot of material. But along the way, there was a standards effort called Common Lisp and ANSI committee XVJ 13 that I started to work on to come up with a common dialect of Lisp that all the different Lisp implementations could use. because the Department of Defense in the US was tired of funding people who wrote programs that were incompatible with the systems that other researchers in AI had. And so XQJ13 was founded to come up with a common Lisp language, and I became the kind of representative of the interlisp side. in the Lisbon Wars. And that was interesting. I wound up chairing group called the Cleanup Committee. So there were committees on major multilingual texts and object-oriented programming and the Aero system, some big projects that needed to be handled in the Lisbon environment. But then there were a lot of things that were small problems. And I invented the ⁓ form you had to fill out to get a change to the language. And ⁓ the methodology of saying you had to write out, fill out this form. The first part of the form is you describe what the problem was without reference to your solution. And the second part is you describe what your proposed solution is without arguing for it. And then you had to write costs to implementers, costs to users, et cetera, before you got into testimonials and history of the feature or whatever. And ⁓ that was very successful in getting people who were arguing about to agree that the form was filled out. they could agree on the form then you could say well there are some places where you trade off the cost of implementers and the cost of users and you have to make a choice. At least the nature of the choice and why people were making it was clear. Anyway, ⁓ as I had worked on Lisp in the AI winter came along and the market for Lisp and Lisp machines and other things kind of died. I had to switch at Xerox because I didn't go with the Lisp spin out. I had to switch to something else. So at the time, Xerox was trying to reinvent itself as the document company as opposed to the copier company. And so we worked on some document servers as in this whole client server architecture for accessing data from disparate systems. And we had three or four different kinds of systems that were in use at PARC after the model of the list machines. And they all had different file formats. And so what we defined was a document server was different from a file server in that the document in text and in PDF and in Word were all the same document just in different formats with some amount of difference between the identity of the document and then the representation of the document. And this ⁓ The of separating the two became an essential part of HTTP. That you would request something, would hand the server your request and the server would give you a representation of the state of that resource. You never transferred resources over the network, you only transferred representations. You mean like metadata? Kind of like how you would use like a head request to just get some head respect to get information about the resource? You would say the client would present to the server a request, give me the ready resource with this path and accept in these accept headers about what representations you could deal with. And then the server would return you some representation. You asked for an image and you gave a text. ⁓ There was an interim project at the time at PARC called System 33. System 33 was an essential part of what we were trying to bring into content negotiation. I thought underlie was the underpinnings of the HTTP distinction between resources and representations. Roy Fielding wrote this as part of his thesis, a model called Rest, which... ⁓ was a good, theoretical approach to what we were trying to do with the files in file formats. ⁓ This was already like a network server, right? Like it was. system 33 was a network server and it shared the protocol from, it had a kind of protocol similar to Gopher was the inspiration for the HTTP/0.9 And by the way, like it's actually the despite how of a fundamental protocol it is, like it's the first time somebody brings gopher up on this podcast. Like maybe for the especially younger audience, could you maybe quickly explain a bit like what gopher was and how it was working? Well, Gopher was an outgrowth of the instantiation of the common notion of a menu system, where the information resource had a bunch of menus, A, C, D, E, 10, 15, and you would select them until you... You would select what you were looking for and maybe you could type in a query and you would get back text or a PDF. actually this pre-dated PDF So it was a menu-based system which you could turn into Hypertext by adding all the stuff in between the links. So Go for it was a system for doing... ⁓ network access to information and resources, but only through menus. And the invention of hypertext, which had begun independently, brought that hypertext into Gopher. And I remember when I visited CERN ⁓ sometime in... Yes, the... early eighties, early nineties. I don't They had a chart of the number of sites that were Gopher versus WWW. And they were working on increasing the acceptance of Gopher and of the Gopher community to the web. was critical at the time was that CERN decided to make the web open source while Gopher was caught up in plan by the University of Minnesota to start charging license fees for using Gopher. And that difference was instrumental Gopher. that and several other things. So we worked hard on getting a Gopher URI scheme. that could encapsulate all of the kinds of different ways you could request things at Gopher so that the web could include everything that ... Gopher could do. And so that was important. And WCover! and that those URIs differ a lot with what we now know in HTTP Well, yeah, no, HTTP was very much like Gopher You open up a connection, you send a request, you get back a document, you close the connection. And the performance wasn't really important because this was a human, the number of requests you would get would be one per document. So you would retrieve the document and close the connection You didn't want fast start or cache connections or anything else because there was think HTTP/0.9 opened a connection send the request, receive the results and close it That happened. How often would that happen? Once a few minutes. Yeah, correct. And I even remember with HTTP 0.9 is that there were lot of headers not even there yet, including I think content length. Sometimes you would just send a payload and then because you close the connection anyway, you wouldn't even send the content length because you would know when the connection is closed, that's when my payload ends. Yeah. Good. That was important for generating services that we were able The first map server was done by Steve Putz. The map server... ⁓ for the web and that had the feature this was before we had forms that you would just click on links to as your user interface to modify what the map server was showing. was an early paper in the web conference ⁓ to show that you could build a service without using hypertext links, without any other way to input data. And that would mean that each time you want to navigate in the map, it would need to fetch, make a new connection, fetch that part of the map and serve it to you. Yes, right. Well, the only data it had was the coastline data from internet resource of all the coastlines of the world. So that was the only navigation we used. but I imagine it's still very exciting if you were seeing it at the time. And then to go back a bit to the fact you were trying to come up with like a URI scheme for like Gopher and connecting it to HTTP. What does that mean that at that point we already had things like hostname and path and those kinds of things. No, no, hostname was added later. came from the... need of server vendors, service providers to have multiple host names all served by one computer. Right, yeah, because I imagine in the past it was just a server, it's one server really, so you really identify it already because you connect to it over TCP with the correct IP address. So I suppose you already know that's the server I'm connecting to and at that point you can only just use the path I guess. Right, yeah. So at the time... And query parameters, was that a thing or also not yet? I forget when query parameters came in. It might have been part of the original design. The query parameters came in with forms. Okay. Alright, makes sense. ⁓ I http/0.9 and the early web didn't have forms and didn't have embedded objects. At the time I imagined people would use a a format like PDF, a compound document format, that's what it was. I think they called it Binto. which means that it sends you this kind of document and you fill it in and then you like upload it again? Is that what you're talking about? ⁓ No, I mean for One of the differences between HTTP and Gopher that HTTP was not optimized for we had to when we went from HTTP 1.0 to HTTP was enhancement of sharing a connection for multiple pipelining. because you didn't want the TCP slow start to dominate your performance. Anyway, Getting ahead of myself So I got into the... ⁓ standards on System 33 I was interested in finding other research ideas for how to create interoperability between workstations with different kinds of capabilities for displaying files in different formats. And the web was interesting enough. I started going to the organizational meetings around HTTP around the web. And I invited Tim Berners-Lee to come visit at PARC, he spent a couple of months there. And at the time, Hypertext, PARC had an active program in Hypertext called Notecards Notecards is now part of the Interlisp revival. of the original developers of Notecards, Frank Alonis, has been part of our Interlisp project. And were looking for someone to chair the working groups. Originally the URI working group and then later on the HTTP working group . And I had experience with standards. And a standard for language is kind of like a standard for protocol. And they're both languages. for expressing interfaces between different objects. So when I talk about protocol, want the language list for the language Algol the language Fortran, or language Rust as just more kinds of interfaces. And the standard for an interface. If you want to make a change to there are really three things that surround the language that people speak. There's the specification, there's a written description of what the language is. There are implementations. Things that take one or two or three, whatever it is that you're talking about. that each of them, there are implementations of producers and consumers of the interface for a bilateral interface. And then there are test suites that test whether or not the implementation matches the specification. And in the end, what you care about is changing the language itself. But you can't really do that. You have to either change the specification, the implementations, or the... test suites to surround the language and change it along the way. Language specifications are much more complicated than implementation specifications. Although some implementations, some languages are specified by a virtual implementation. So you take Java and Java is specified by the documentation for its. virtual machine. least some parts of it. So that's interesting. think underlying this is some theory of documents and algebra describing how these things interact. And I spent some time on the W3C technical architecture group writing up, but didn't really finish. Yeah, I suppose. I mean, it gets very abstract and I imagine you... Yeah, it's easy to lose your mind, on Well, so around the time of the pandemic, I was looking for some project. I retired from Xerox kind of on disability. I had Parkinson's and had had it for a large number of years. I was first diagnosed in 2004. ⁓ And, but after several years of not coping all that well, I had this procedure they call deep brain stimulation, where they insert some electrodes in your brain and to an embedded controller in my chest, which ⁓ signals that interfere with the Parkinson's tremors and the basal ganglia in some way that I don't really understand. But it gave me a new ⁓ ability to focus and I was looking for some project to take over my desire to contribute. And ⁓ my former colleagues from Xerox Two of them, Ron Kaplan and Nick Briggs, were working on getting Interlisp to run again on modern hardware and modern OSes. That was my third attempt at a retirement project. I thought that I would do something that would help other Parkinson's patients, but I didn't make a lot of progress on that. And then when COVID came along, I thought maybe I could build a website to help people learn how to do things online because I didn't think the pandemic would ever be over. But people discovered that on their own in variety of ways. And so revival of Interlis became my main project. And now we have ⁓ been doing it for five years. There's about maybe 15 contributors to the Open Source project. yeah, it's on interlisp.org. can go to http://interlisp.org and that should give you access to everything. There's a new primer that we're filling in. We've been funding some students at University of Alberta to help out and we accept donations of course. Very cool, I mean it even seems to include Notecards and everything. Yeah, has Notecards it has rooms, has loops. We have a lot of graphics packages. We have people who are using Medley Interlisp to enter into the game jam. Can you build a new game based on Interlisp? Retro looking graphics. Very cool. Yeah, I mean, I'm a big fan of that. Like originally I come from the game industry and yeah, it's very nice to work on older systems. They are lot more easier to grasp and... Especially also the hardware like if you if you want to understand something like one of the older processors like the ones in a gameboy or Like even older ones. I mean, they're relatively easy to understand but if you compare it to like a modern CPU or something, it's It's an entire I don't know like a very very big book or several books just to and compose the instructions let alone all the details so simpler times is nice to develop for. Well, the implementation was based on the original implementation in Xerox PARC for all three of the maybe four different languages we supported. Depending on the group, there was the Lisp group, was the Smalltalk group, and there was the Cedar group, Mesa. There was a lot of friendly co-opitation. You see something in one of the other systems that you wanted and in yours. a lot of cross-wordalization of ideas. Yeah, I mean, if you look at these systems like Smalltalk and Interlisp, I always feel there is something lost there. Now we didn't recover again, like capabilities that they had that we are still missing today in what you would call modern languages. Yes, well the ability to mainly, I think in Lisp, is to add an error, rewind the stack and change the code and keep on running. Yeah, compile load, execute. to speed up the turnaround. time to fix a bug and keep on going. So I guess the first part of the project was to get it working on modern systems. Is there still like a big road ahead of you? Well, no, you the Interlisp project was originally at Xerox and was spent out into a separate company called Invos. And then that became, that closed down and there was another company started by John Zabowski called Vinyu. and he had the rights to create derivative of works and ⁓ he passed away. And then the system was kind of in limbo for a decade or two the error of the IVR rights to create derivative works and distribute them. He gave to us. That's why we were able to make it open source. But that system included, had already been ported to some workstations. And then we got it to run on a Mac. And so it was already kind of halfway, or more than halfway ported. But was written in Kernigan and Plowger C. So there's a virtual instruction set. the compiler list was something I liked with Emacs lists these days, which came after Medley interlisp. Because then you compile the bytecodes. The barcodes are abstract with the construction set. Originally it was designed for very compact programs when memory was rare and a lot more expensive than CPU. But it has the advantage of also portability because most of the system is written in LISP and only the very low level, the lowest level of abstraction is implemented in C by interpreting the byte coded instruction set. that's nice i mean that i can understand why that's makes your life a lot easier because that that's the only part you would have to port a measure Yeah, well, in the end it turns out some things are... We don't want to rely on our common list implementation because it's so lacking. And so we go out to the host operating system to do some operations like open up a web page or convert a file from PostScript to PDF. So some of these things still require that. All of the people on the project are volunteers. Most people don't work all the time when they're retired. Yeah, I mean, if it's a passion, I suppose you find time for it, but at same time, guess life also moves on. Yeah. Right. We meet twice a week. Talk about it. Well, not everyone who contributes is, yes, it comes to the meetings. mainly old timers and a few students. And we have a few people who are between jobs, who are otherwise looking for some way to abuse themselves. What else can I tell you? Very cool. You can tell me a lot. For example, you can tell me how in 1998 you invented the Hypertext Coffee Pot Control Protocol or HTCPCP. There's a tradition in the IETF of April 1st RFCs. The IETF produces a series of documents called RFCs, which originally stood for requests for comments. But it was really kind of late in the process to be asking just for comments. Requests were errata, probably. But not every RFC is a standard. The RFC numbers, the goal is the RFCs never change. If want to make a change to the language, you need to change, create a new version of the specification, or at least updates. So one RFC can either obsolete or update another RFC. But not all RFCs are standards. And to make this point, I think... Introduced the notion of an April 1st RFC, which you can tell by The date of the RFC is always the April 1st of the year. And it's the only ones that have the day of the month in them explicitly. So an April RFC is not an April 1st RFC. So there's some famous RFCs. There's the TCP over carrier pigeon, over avian carriers, where they describe There had been a large series of documents about how to TCP over different transmission media mechanisms. So HTTP [correction: TCP] over cable television and TCP over modems and different kinds of ways of carrying TCP over transports. And avian carriers was how to use carrier visions and do TCP between different... ⁓ using birds. ⁓ Did they also try it or was it just purely theoretical? No, some people tried, but did this. They reported on their success at doing TCP over carrier pigeons. And, uh, but my favorite line in that... RFC is the bandwidth is proportional to the leg length. the width of the band around the carrier pigeon's foot. Yes, it's proportional That's a cult. Yeah, I just wonder like is it just like they Is it then something that you just think like okay this year? I want to be the one writing a first of april joke or do they come to? Someone in the community and say like maybe this year you can write one. I know how does that come? the i'm not entirely sure but i believe the rfc editor originally was john posto was the rfc editor and ⁓ keeper of the april first queue But now I'm not sure. I think it's still the RFC editor or the editor's office or something. But at the time, there were a lot of proposals to use HTTP as a substrate for implementing something that wasn't web access. So the Internet Printing Protocol, IPP, wanted to use HTTP and I was on this committee. And I thought, why do they want to use HTTP And I never got a good answer. It wasn't necessarily that it was adapted for it. was, HTTP is everywhere, so it must be good. And it seemed to me. So I wrote a little document trying to explain HTCPCB. It's somewhere on my website. My idea is that the April 1st RFCs serve as an instructive. way of fiducia and absurdum. You take something and you reduce it to its essential, into some contradiction or bad design or something. So my idea with HTCPCB was taking all the ways that you could extend HTTP to do something. and misusing them. So I wanted a new MIME type and a new method, the brew method, is equivalent to post. There had been a long debate in the IPP group over whether or not to introduce a new method. And there are no guidelines for any of these extension mechanisms. That means you can ever cash your brew as it's similar to POST you say And... And the new URI scheme using using unicode, hex-encoded, UTF-8 encoded Unicode for coffee spelled in different languages with an errata because I got the Japanese wrong. Fantastic. I mean not fantastically wrong but it's very cool that you still make an errata for it. And the error codes, there are lot of debates over whether or not to what kind of... what kind of error code you should use if you wanted to be more fine grained than a 401 or 402 or 404 and there's no rationale given for when to allocate a new error code. So I invented 418, I'm a teapot. Because it makes sense to have a HTTB, HTCBCB request to a coffee pot to return that it's not really a coffee pot. And yet now this code lives in pretty much every HTTP implementation out there. Right. Yeah, well, people got behind the, I'm a little deep, short end, so, took me over and poured me out. There's several other things in there about firewalls and bad security considerations. but then later you also co-authored an RFC around like the mail to URL scheme. But that's just about the URL, right? That's nothing to do with HTTP. No, it's just about the URL. ⁓ There's an internet draft that is not an RFC, but that I like and every once in while I'm tempted to bring it forward, but I haven't found anyone who would want to go sponsor it. But it's about two URI schemes called D URI and ⁓ TDB. or using dates and there's a problem that whenever you give a reference to the URI or URL, it's ambiguous about what you're really trying to refer to. And you say, this URL is in English. He's talking about just the resource that you're pointing to. The resource with all of its embedded objects. The resource in the whole website. or the resource that is as it existed a minute ago right now at this instant, or the resource over time. And the TDB URL was supposed to give you a way of saying that you could have a URL for anything. How many URLs are there? How many resources are there? Well, there's infinitely many. Are there countably many or infinitely many? Countably is less. There are numbers that are not countable. Anyway, TDB stands for thing described by, with a date. And you say, I mean the thing as of that date. No reference to the future stream of possible values. If you really want to come up with a formal definition, ⁓ a theoretical definition of what a URI is that it represents, that's a hard road for philosophers. Yeah, I mean, I feel it's such ambiguous use because I cannot even count how many, at least by now, how many protocols like use the URI and where they are similar, where they are not. then, mean, mean, including also some RFCs of yours, because you also are, I think, the co-author of the... the URL scheme to represent like data, I think a B64 encoded and even that is like all the URL but like that looks nowhere near what most people would think of ⁓ is a URL. ⁓ is. Yeah, the data URL reminded me of when I was learning assembly language in the Univac 1100 back in my high school days. And they added the thing called immediate address. ⁓ You would have an address which wasn't really an address, it was just the number. itself. Would it be like just a random number, a sequential number, or more like a hash? There was a flag in the word. So you pull up a word and you say, I want to read the word. You have something that takes a pointer, but you don't want to give it a pointer to somewhere you restore the data. You just want to give it the data itself. There were indirect addresses, which were... It would go and open the thing and it would say, I'm an indirect and I'm really over there instead. And that's like with HTTP. And you get it moved, you say where it is, and it follows the link. But we didn't have immediate addresses, and so that seemed to solve some problems for people. The data URL has really grown in use now that they've... figured out that the security context is the same as the parent that gave you the URL in the first place. I yeah, I'm not sure how much use there is today but the place where I see it mostly is when people use it for like embedding images and stuff. Right? Yeah, that needed more work. And then I have the only RFC that has a picture of the author. In the data URL RRC, here is an example which is a very low resolution image of me when my beard was dark instead of white. Look at that. A little... You know, I never even considered opening the... Or decoding the... Or embedding it in HTML and checking what's underneath the data. Hey. You have to have fun. Yeah, I mean, yeah, mean, that's why we do it, right? mean, and that that's all I mean. Yeah, I mean, how could you keep learning on something and work on your craft and and keep exploring it if it's not because you enjoy it like you just wouldn't and neither would you keep exploring and trying to bend your mind because was mean you were probably like. Yeah, you tell me like with how I sometimes experience it is like, and those are also often my more happier moments is when I try to figure something out and I feel like my brain is really melting and it can sometimes just take hours or days or weeks and like, and you try to iterate and iterate and eventually you come up with solutions and sometimes in steps, sometimes immediately, I don't know. And it's those things, those epiphanies like you feel like, okay, like, I don't know, everything becomes so clear and And I guess it's those kind of like sensations that you keep trying to rush, I guess. ⁓ The Eureka moment. And it seems like a... Yeah, of course sometimes in a wow moment, sometimes it's just, I don't know, more like a stretch or a series of moments, but yeah, that kind of feeling. And how come these things, like, okay, for example, if we take something like a data URL scheme, was the specific need or purpose that, that, that, was it just because for fun, or was there also like an actual, like, yeah, we are, we are actually having a problem here and, and this was our way to solve that. I wish I could remember, but I don't. It was someone who had a problem that this came to mind as a possible solution. And then for example, ⁓ if we look at something like form-based file upload in HTML, because as far as I know, you also worked on that, right? Yes. Yes, That was a problem that someone at Xerox had. They wanted to upload a file to a web server that was a printer. and they didn't have a way of doing that. And it seemed to me that we could do better. and just adding an upload command. There was a lot of problems with form submission. And forms didn't have a way of specifying the server couldn't tell the client what fields it wanted or what MIME type it wanted them in or the content negotiation was only one way. ⁓ and there was no way to label the content that you got back as to where where the data was I was trying to generalize the solution. think the modern HTML includes different mechanisms for uploading files, though, that were based more in the implementation. The politics of the web standards. was as much politics as I was was really kind of ugly. And that's mostly because of the commercial partners or also among researchers. And I love it. No, was mainly the WHAT working group. Depending on who you talk to, they wanted control or they were trying to manage their implementations without the interference. In the IETF there's no membership. There's no in group the decision mechanism is rough consensus which means that no one person can or company can hold you back from doing something but Sometimes ⁓ that's rougher than others. And there was a philosophical difference about how the specification should or shouldn't accommodate describing what should happen in a situation where other implementations would say it's an error. So the URI spec, the URI spec is still under some contention. There's a WHAT working group version of the URL spec. And there's an IETF version of the URI spec. And this difference in name, talking about the same thing with two different names and two different specifications, it's frustrating to a lot of people. Yeah. I mean, I find it very confusing to be honest, like because they are, mean, so also the context is that I also am the developer maintainer of like a network, like framework or set of libraries. And so then at times I'm trying to maybe... I don't know, find common abstraction points between all these different URLs or URIs or little that and I don't know, there are so many little details and, but yeah, as you say, even just the name. actually I think, I think even if I recall correctly, I think you have an RFC where you even explain a bit around like URI, URL, URN even, I think. And yeah, I don't know, like. But also it's just surprising how much stuff uses a URL. And they do often all look nowadays where they have like a scheme and a host name and a path and a query. There are plenty of those, but yeah, that's not all this, I guess. ⁓ I don't know what to do about the situation. was hoping that when the original disputants retired or went on to another job, maybe some more rational people could come in and satisfy this conundrum. I'm not sure. I don't think I have much to contribute to it anymore. Yeah, yeah, too bad because you were a very, ⁓ I mean, you were there, you know, like that's, guess my concern a bit, like if we wait 10, 20 years more, I know, you know like how in the UK, I mean, when the people found the ruins of the Romans and they didn't even know what it was about, they thought it was like made by giants and have a feeling we also want to look at these RFCs or like at these old mailing forums and or mailing groups and have no idea what it was about. then, yeah, a lot of context would be lost. Well, my consolation is that the stuff we have works reasonably well. So maybe the differences don't matter. and if there was really a serious problem, then people would jump in to solve it. Fair enough. Yeah, yeah. I mean, they do work very well. I suppose the issue is basically that, yeah, I guess a URI can just be many things. Maybe it was a bit silly to call them all like a URI or a URL or I don't know, because they can look so different. We wanted it well, we invented the name change from URI to URI with the idea of carving off the URIs and I think that didn't really solve any problem for anyone. That was something I held up until I gave in. And then at some point, I think you also worked on RFC, ⁓ which is like RFC 2732, or I don't know how pronounce these things, 2732, where it's about like formatting of literal IPv6 addresses and URLs. Like I wonder what is the use there? Like, I mean, because... I mean, yeah, I don't know. Like you wouldn't ever remember those kind of address, right? They're especially IPv6 and IPv4 address I can sometimes remember, an IPv6 I never can remember. Yeah. That was forced on us by the IPv6 committee. It didn't really fit into the syntax and they should have fixed it before. But it was little bit like the internationalization of domain names. There's a DNS to ASCII transformation in the DNS protocols that is not the same as the way that you write a Unicode DNS name in a URL. And I remember going to the internationalization of domain names committee and asking them to please add to their scope the internationalization of URLs. And they said, no, that was scope creep. They wouldn't take on the problem. Is that something that you would think is like a good idea that you internationalize like URLs? Because it to me like it would be, I don't know. like already, I mean, for example, if I look at the problem of things like phishing or scams, I would feel like once you can have like full Unicode URLs, like, I don't know, like you could have so much potential to confuse people of going to some wrong website. Yeah, yeah, absolutely all there. there's a service provider that will sell you ⁓ a top Red Heart. domain if you want to be Larry. and then a red heart emoji you can get emoji domain names And many web clients will be able to access them. Seems a bit unnecessary. don't know. Well, you know, people adapt technology to their own uses. Yeah, I worked on this problem for a while before I gave up. how to tell whether or not, if you give a URL, how many people will be in your target audience will be able to take that URL. and get the right answer. And then, ⁓ If you transcribe, if you go through a protocol that goes through a person reading the URL on the side of a bus and then being able to type it in and get the right resource, you can say, how many people can read that? And if you can admit the URL and it doesn't pass through the... human reading and transcribing and using, then it's not a very good URL, so don't make those up. Don't pass them around if they're not. And then it's not up to the protocol to decide. in advance, which things will or won't work. So my email address is lmm at acm.org. And every once in while I get people who tweet the initial L as a capital I. Yeah, and that's like still a simple example. So I mean, yeah, once you have unicode that's... Yeah. They're just more examples of ambiguities like that. Yeah. Okay. And then I feel like, ⁓ definitely a big one. also worked on besides URIs and a lot around data and, and interlisp is also the fact that you, you contributed to the HTTP/ 1.1 spec. I mean, the original one, which was quite, ⁓ I dunno, that definitely was a turning point. I feel of HTTP where it went from its origins to I feel it's kind of like the portal between the origins and where we are now heading with HTTP2 and then later HTTP3. Like definitely I feel like a lot of that started here, like where they had the concepts they want to solve but I guess maybe not at the time having the tools to do so. We were trying not to be invented as much more as selection. That there was a problem, different people could come up with different solutions and they all could coexist and to choose. And we were not trying to avoid trying to invent new things. So all these, were like mostly out there in the wild, see, like all those different headers and concepts, but maybe like in incompatible ways. Yeah, yeah the HTTP/1.1 spec was not intended to be a reinvention. It's just an ambiguity that people felt. So current implementations were really important. I never felt like we could make the kind of changes. Remember when the HTTP BIS came up under Mark Nottingham, I went and gave a talk at their working group meeting saying, you know, we couldn't change the referrer field to fix the misspelling. We couldn't make that change. Yeah, it's still in there. It's kind of weird, right? Because you could call a resolution where you say, okay, you have a long period, even if it's 20 years where you use both, you accept both headers, you have a referrer and the correct spelling, and then I imagine it would probably be safe after three decades to phase out the, I don't know, the original one, but it seems like it never happened. Yeah. Anytime the change was mandated was the addition of the host header That was the only thing that wasn't optional. But like among, for example, some things even in those original specs, I never see in the wild, for example, the trace header, like I never, ⁓ no, sorry, no, header, the trace method, like I never see it being used. But then again, I feel in general people don't really use methods a lot. that's kind of like the, yeah, example, like one thing, the one reason I started with this podcast was because I want to educate people around network protocols. And so for example, a common thing. And HTTP is an example of that because I feel most developers don't even know, even if we just talk about HTTP 1.1, like how it works or what it has, like all these methods, all these different status codes, because like, I mean, if you, like some protocols built on top of HTTP or just always returning 200 OKs even if it's like an error and they will put the error in the payload or something or whatever, ⁓ which is very confusing, especially for proxies. then or like let's say I visit the website and so for example I am from Belgium so we speak like three languages here at least the official one but of course there are plenty other ones so there are also people living here which might speak a language which is not official and yet because a lot of servers do it like goip based they will like serve you i don't know french because maybe your ip address looks like it's in brussels or in in the french side of belgium and and and uh that's a very frustrating experience because like you might not even find the way to switch the language because yeah it's maybe it's not a language you're familiar with and so you're trying to look around like where is where can i switch the language and so yeah i don't know like I find it a shame because we keep working on new protocols but I feel like we are not even properly using the original ones yet. mean not original original but still. mean for example HTTP 1.1 is from 1999 so I would have hoped that there is plenty of time to learn about it by now how it works all these different status codes and methods and ⁓ headers. I go back to the tripod, implementations, specifications, and test suites. What Working Group has really taken on, test suites define what the language is. And the specification also ran. Yeah, I I feel the specification is fine, the language is fine, the test is fine. It's more like people don't seem to be aware of it. Right, well that's down to the implementation. It seemed to me that there was a difference between, the difference also has to do with how many implementations are there. the emitters of HDDB, HTML, they're millions. and while HTML interpreters is really a decreasing number of them. but with Edge turning into Chrome and we're left with ⁓ Safari and Chrome. Well, you set up Firefox of course. And then like you have like a like what is called Ladybird. Is that the new one on the block? and firefox Yeah, but you know, always a handful. Yeah, yeah, for sure. Well, I mean, yeah, yeah, for sure. It's not an easy one, of course, to do. you do want it, of course. But yeah, there's so many protocols to be implemented. And especially the, I don't know, they keep pushing out new standards because then you're not only talking about network protocols, but you're also talking about web APIs and this and that. Like I feel like every year we have like, I don't know maybe 10 or 20 more of these so it starts to add up which sometimes I do feel like I don't know Maybe maybe we should just pause a bit, like I'm sure we need so many of them You there? Well... With standards, there's a value in having things work the same. And there's a value in having them work the same as long as it's my way. Yeah, exactly. So I guess it also helps if you're the first one, guess, to do it because you got to define your way, I guess. If you look back on all this and how HTTP is used now and how URIs are used, like, I don't know, how you feel about it. So. I thought I did some good work. But I got away from being able to be hands-on. So ⁓ I'm happy to be back in the world of Lisp and an implementation where I'm the technical lead, kind of. And ⁓ I can hack away. amazing like and and and nowadays how do you develop like what kind of system do you develop on what kind of editor what kind of don't know terminal those kind of things Now the interlisp was an operating system. It was the whole system. And you develop in the interlisp environment using Lisp. I assume the emulator is pretty much done. Have a good implementation. It uses X or SCF for display. And either read window and it's black and white and pixelated. And that's also what you develop on. ⁓ and you're developing the whole thing. The nice thing is that it runs a thousand times faster than it did 20 years ago. I mean, in a way it's nice but also I can imagine it can also cause issues. Nah, know, it had a way of slowing down. Some of the graphics demos had to be slowed down. I read that interlisp was using another kind of encoding which was like from xerox and now you switch it to unicode like what was the what was the original then We did. It's called the Xerox Character Coded Standard. It was one of the original contributors to the Unicode. Unicode was based on XCCS and some other ⁓ work from Apple, pretty much. ISO 646. Joe Becker did the original Xerox Japanese typing system. And he did his prototype work in Lisp And we switched to Unicode as an external format, but inside the strings are represented in strings of 16 bit characters. that's kind of like UTF-16 then. Well, except it was different character codes. So we were working on revising our fonts to use more modern fonts. ⁓ Yeah, Unicode support is a big deal. Better fonts is a big deal. We're working on reducing the overhead of getting into it. So if you go to online.interlisp.org, you can log in over the web. It opens up a VNC connection to a Docker container. It runs Interlisp in a sandbox for you. And if you log in and give us a username and password, we'll keep your data for at least six months. Yeah, I mean seems I can even run as a guest just to try it out. Yeah, if you're logging in as a guest then you don't get a persistent fast system. That's very cool. I feel I could spend some months in here locked up in this virtual environment. Thank you. Yeah, well we have a we have full implementation of POP and X and S prior to the TCP introduction because the Xerox protocols were far more advanced than the Internet protocols. But you mentioned POP, I mean I only know that in the context of mail protocols. That's what you're talking about? No, POP was a whole file access. It was a complete protocol stack, printing, filing. inter device communication at a remote eval server. The loops system for the Lisp Object-Oriented Programming System had a game that they were calling Trekan. And there's a way that you can run Trekan on multiple D Machines, this is in the early 80s and this sequence packet protocol and query remote procedure call all in full implementations. So I'd like to put together a demo using old older protocols of networking in the list world. And do you think there would be like, ⁓ I don't know, benefit or use of porting some of these to, to, I don't know, implementations and modern languages and, make use of it? you think it unlocks potential that we wouldn't have now? And are these kinds of things that you would build on top of TCP or, or where would they be? I'm thinking more of that. historical reenactment. If you do a historical reenactment of a famous battle. more for the understanding of how the internet really began. That's what we're doing with a lot of our demos. We're trying to get into the computer museum support business. Is that the one in the Bay area or which one is it? I made that. Well, we have an exhibit of Medley running at the Interim Computer Museum, which is a follow-on from ⁓ Paul Allen's Living Computer Museum, which closed. And what I'm hoping is that we can make some demos where you click on the URL and it brings you into running Medley online with the demo loaded and let you explore from there. kind of demo mode. That's one thing that our project, the Interlisp project, the Medley Interlaced Project is working on is demo mode. I just looked it up so it seems I wasn't too far off the ball like because you said pop right? And I was thinking it was around mailing but that's exactly what it's about no? Like that the fact where you I mean it's basically the protocol of what protocols used to between mail clients and servers for sales. Hit it. Yeah, it's certainly this one application, for sure. And then that. But you're saying there's a lot more of it. I know there's fax and stuff and those kind of things. Is that what you're referring to? There's a pop file server access. So we had a file server called the Interim File Server, IFS. And there were a bunch of file servers. The Computer History Museum has the backups from PARC. Have a lot of systems. who are given as a gift from Xerox. And I'd like to revive some of the systems because there were early systems for collaborative work. The Colab had a lab where people could share screens and communicate and work independently decades before Google Docs. I don't have a lot of aspiration of this stuff being useful as is, but as a source of ideas of things that have already been explored as prior art, for patents, as a way of giving people another perspective on how things don't have to be. necessarily the same. And is there a set of criteria or items that you would say like if we achieve this and this this with the interlisp revival project then I would call success or is it just for the you all have fun you keep doing what you can do and that's it My goal is to reach escape velocity. tell people, escape velocity is the system can be maintained without any of the original developers. So when there's enough people working on this, We didn't start with a clean release. We started with the 1990s version of Interlisp where had heard John Zabowski had increased the address space by a factor of 16, 4 bits. It was originally a 24-bit address space. Now it's a 28-bit address space. and several other improvements including the common list standard implementation which had changed and so we have some major problems you know we have a it's all on github under the interlisp group ... Look, there's a dozen repos. I'm trying to run the project as if it was IETF Decisions by rough consensus and everything open. So the meeting notes, groups are all available for anyone who wants to see. I'm having the website as a good introduction. I recommend people especially look at the bibliography which is new. We have a collection of papers and reports about Interlisp and also about systems built in it. to discuss Interlisp Yeah, I mean, there is a lot of reading material on there. You spend an eternity reading all that. Yeah. and well, tell your friends. We can all take apart and we can split the work. ⁓ Well, know, things that you find interesting. Yeah, yeah. mean, I mean, personally, I always found these languages very interesting. I don't think I've done too much with Lisp itself, but I've done a lot of work around the scheme, which is as far as I know, derived from Lisp. ⁓ Yeah. It's derived from, but it's... We turned into Lisp into a system implementation language. So, you know, can read and write packets, ⁓ If it wasn't, the whole operating system had to be done in Lisp. Hmm. That's super powerful because yeah I mean that means you can basically modify on the fly everything But at the same time, I have a hard time envisioning that you could ever do that, like, if you want to have a complete system. It's not intuitive to me that you could ever do that very efficient. Well, you know, I have a new way of thinking about efficiency, which is not in terms of percentages, but rather in terms of years of Moore's Law. And an efficient language is one, these days, is one where computation can be done in parallel. Yeah, that's true. If I was still younger and before I had a family and a couple of kids, would have probably spent way too much of my time reading quite a lot of this. It's very nice. Yeah. We're taking a different approach to software preservation. We're not trying to preserve... If you want an emulator of exactly what a D machine, the Xerox Lisp machines, felt like you could get one of those. We have them point out how to do that. ⁓ We're really trying to bring it to the point where it's usable for people who want to build something quickly. The way I like to contribute also to preservation is often to, I don't know, re-implement old networking protocols and making sure people can keep connecting to them. I mean, we talked about Gopher for example, in the past, like in the start of the conversation, and I mean, it's still being used. There are still plenty of Gopher servers and people sharing and interacting with each other via Gopher And I mean, I find it very exciting to implement these kind of protocols and make a client for it. have a server for it and be part of the network and yeah, mean, it would be same even for this, right? Like one aspect is the Interlisp but you also have many like protocols there. Some are unique to ⁓ Xerox but like it could also be cool for others to, I don't know, connect from the outside over those protocols to Interlisp systems. The focus that we wanted to have was on connecting interlisp to star and the gateway access protocol and the PDB10 Lisp. There was some early work that I'd like to be able to And then, a remote eval and... email. Yeah, there it is. There was talk about an ARPANET reenactment of the... ⁓ and that would be possible. What we're trying to do is encapsulate the XNS and POP protocol packets inside... or currently inside HTTP... I'm sorry, inside... inside TCP. There is ⁓ one fellow who built an emulator called Dodo. where a D machine would fly this bird that is now extinct. The data network encapsulates X and S inside TCP. But, as a way of demonstrating or letting people play with these older protocols to see what it was like. So we were currently working with Professor Eric Coleman at the University of Alberta, who has a group called Software History and Future Technology. And his broader research is around using emulations for software preservation. And it seemed like he was a good collaborator. And they have a lot of students who are in the library school or they... Digital Humanities Group that have been helping us with the primer and the bibliography and giving some talks about the project. very good, that's good, it's good to have those kind of collaborators Yeah, I think we're not going to reach the escape velocity unless we have some younger participants. Yeah, and I guess we're to find them better than the universities and students that are probably just as passionate and might I mean probably like me where we often feel like we missed a boat there or where we we wanted to be there and I guess this is kind of like their moment to or their chance to I don't know live a bit in that time, like be it via the preservation and helping to to maintain it and evolve it. I guess it's as close as we can get to it being born way too late. Okay. Well, know, the bibliography work really turned into its own project. I think we need to extract that out of the Interlisp baggage, out of our website and turn it into a general... Hugo theme or some other kind of extension. If someone wants to build using Zotero, the citation database, open source project, using that to gather the bibliography, that of the metadata, and then return that into static HTML pages. Yeah, mean, those kind of websites are always also very interesting. and there are surprisingly a lot of them around all kinds of topics and science fields, but it's not always easy to find them. Yeah. And then when you find them being able to them, I'd like to look at the possibility of using some people who are interested in using AI to enhance the museum experience. I mean... Yeah, I mean, I would think that within the United States there should be plenty of those kind of people that are both knowledgeable enough and have interest, but I might be wrong. Hey. Yeah. So anyway, thank you. Yeah, was my pleasure. ⁓ I wish you all the best. I hope that you will reach your escape velocity with the Interlisp project and that you may see it in good health. Alright, great, thank you. Elizabeth (Plabayo)
1:25:16 | 🔗
Netstack.fm is brought to you by Plabayo building secure, open, and resilient infrastructure with Rust protocols, and purpose. This show is also made possible by Rama, the open source networking framework. Plabayo offers service contracts and welcome sponsorships to keep building and supporting its ecosystem. The theme music of this podcast was composed by DJ Mailbox. If you enjoyed this episode, don't forget to subscribe on your favorite podcast platform and leave a five-star review. It really helps others discover the show. Thanks for tuning in. We'll see you next time for the next handshake.