This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Project

What is the Medley Interlisp Project?

The Medley Interlisp Project was created to revive Medley Interlisp.

Because Interlisp has been around a long time, with multiple iterations, you might find the multitude of names for the Interlisp language and related companies confusing. To assist, we have created a glossary of terms used on this website.

What are the origins of Interlisp? Why do we care?

The 1970s and 80s saw major advances in computing and Human-Computer interaction. Interlisp was one of the many experimental systems developed during these heady times. It represents an early example of a system with a GUI (Graphical User Interface), and IDE (Integrated Development Environment).

Within the Xerox PARC environment, it was an early example of a network enabled machine supporting email, file sharing, printing and more. In essence it was a forerunner of today’s computing systems.

Medley Interlisp represents the last Xerox Interlisp release. Medley continued Xerox PARC’s experimentation with developing systems for D-machines. A family of computers (Dorado, Dolphin, Dandelion, Daybreak) resulted. The project was later spun out to a company called Envos, which then turned into Venue.

What are we trying to accomplish?

Our aim is to allow Medley Interlisp to “live again”: usable on modern systems, sufficient to allow someone to develop some code and experience what it was like to use this groundbreaking system. You could think of this as a kind of “vintage software” project, to try to capture the sense of fluidity in the development cycle.

We hope to provide a platform for demonstration of early experiments of hypertext (Notecards), Desktop management (Rooms), Object-oriented programming (LOOPS), as well as Interlisp itself.

What are our challenges?

Since we aim to revive Medley Interlisp to support not just a demo or test drive, but actual use as a development and learning tool, we need to overcome a number of compatibility problems with current systems and interfaces.

We also want to restore and present earlier versions of Interlisp, for the student of computer history. For more information go to Interlisp and Software Preservation Network.

What have we done so far?

We have done a lot of cleanup and adaptation to make Interlisp Medley usable again in the modern world. Among other developments, you can now run Medley Interlisp on many OS and hardware configurations, or in the cloud, using a web browser.

We’ve also been working on integration of the Interlisp style development with git and GitHub, Docker and other modern components.

Who is involved?

We are some of the original developers and users of the system 30 years ago, joined by newcomers interested in software history and preservation, along with members of the Lisp community. We work with organizational partners. And with you!

Check out this presentation for more information

A presentation from the 2020 Remote Chaos Experience conference highlights some of the interesting aspects of Interlisp.

What have we lost?

The presentation synopsis states it this way:

We have ended up in a world where UNIX and Windows have taken over, and most people have never experienced anything else. Over the years, though, many other system designs have come and gone, and some of those systems have had neat ideas that were nevertheless not enough to achieve commercial success. We will take you on a tour of a variety of those systems, talking about what makes them special.

1 - News

2023 Annual Report (in preparation)

Sneak Peek: We are working on our 2023 Medley Interlisp Annual Report. Still a work in progress – don’t distribute until we announce it ready.

3/2023

Bay Area Lisp talk:

Drafts and final versions of slide decks can be found here

12/2022

9/2022

  • Newcomers welcome!

6/2022

  • Documentation update. We’re updating the project documentation. Feel free to make suggestions for improvement
  • Significant development of integration with GitHub (via the GITFNS module) for doing a Lisp-based PR review workflow

3/2022

  • Interlisp Online new version! Many new/improved features. From any (recent) browser. Medley is running “in the cloud” and you connect to it (and your account) over the web
  • Medley Documentation. We’ve been updating the online documentation at least for getting started – instructions on Running in various contexts and Building and Using
  • Interlisp.Org has been approved as tax-exempt by California Franchise Tax Board and the California AG, State Charity Registration Number: CT0278267
  • We have joined (as an “implementation sponsor”) the Software Preservation Network. See Interlisp and SPN for more information
  • Many updates to Medley features and files; most releases have a ‘What’s Changed’ section or URL

1/2022

Merry Christmas and Happy New Year

  • Steve’s Medley Interlisp: The Interactive Environment reformated for easier online reading.
  • Sponsoring the Software Preservation Network.
  • Interlisp.online progress, changes expected
  • New User documentation
  • California Franchise Tax Board (FTB) confirming exempt status

12/2021

  • Interlisp Online: Run Medley Interlisp in the cloud with just a browser. No download or install. Lower the barrier to entry. Of course, it’s better to install a release on your own machine, but for the casual visitor, this is better.
    • Still under development but try it out, report problems (use issue tag ‘online’).
    • There seem to be problems with Safari on older macs–try Firefox or Chrome.
    • a mouse and keyboard are still necessary on tablets.
    • For the immersive “Lisp Machine” experience, run “fullscreen”.
    • HiRes display? Most browsers will let you scale the pixels.
  • InterlispOrg Inc has been approved as a 501c3 with the IRS. The simplest way to donate is using the GitHub Sponsor button.

11/2021

2 - Get Involved

There several ways to get involved in the Medley Interlisp Project, depending on your background and interests. These are elaborated below:

  1. Try it! We’ve tried to make it easy.
  2. Look at, comment on, and contribute to Interlisp on GitHub.
  3. Join in the discussions through a variety of interfaces.
  4. Participate in weekly meetings; Read meeting agendas and notes.
  5. Propose a project you want to take on, with help and guidance from us.
  6. Send us a donation.

1. Try it!

We’re actively trying to improve the new user experience, but don’t expect a polished commercial product–we’re still in the middle of restoration. But things are pretty stable. online.interlisp.org should get you started. Type in (+ 1 2 3).

2. GitHub

We work primarily through the Interlisp repositories on GitHub. While there are several repositories for the project, issues (problem reports) are to be found in the medley repo issue list. If you have a GitHub account, you can watch the repositories of interest (medley, maiko, online).

Bug reports, feature requests, documentation problems, and questions are posted as GitHub issues in the Medley repository. Do check to see if your issue or question is answered there first.

3. Join in the discussions

EMail

There are two Google groups (mailing lists):

The archives are public. The LispCore group gets much more email, and posts from non-members are moderated.

  • Interlisp.org is a Google workspace; let us know if you want an “interlisp.org” email addresses and why you want it.

Chat

  • Libera.Chat has a #Interlisp IRC Channel. A place for informal chat. Connect by pointing your IRC client to irc.libera.chat:6697 (TLS) and /join #interlisp. Say hello. There are also channels for #lisp (any dialect) and #common-lisp.
  • [Lisp-Romania] has a Discord Interlisp channel.
  • X (Twitter) handle: interlisp8.
  • Direct email: In addition to the email groups listed above, you can email us at info@interlisp.org.

4. Weekly meetings. We have weekly meetings on Zoom:

Mondays: 2pm PT/5pm ET. Implementation – technical discussions Wednesdays: 10am PT/1pm ET. Communication – website, talks, documentation, bibliography, etc.

Meetings are to report accomplishments, status, plans, and problems, and discuss directions. Meetings are recorded, but recordings are not public.

If you would like to join our weekly meetings, let us know.

5. Medley Projects

Check out our Project List for ideas. Find something that matches your interests, or propose a different project. Funding is available to help support a limited number of projects.

6: Donations

We use donations to pay for online services, web hosting; larger donations for hiring consultants and contract workers to help with various tasks. You can donate through GitHub sponsors, which is convenient. They do charge a fee – 3% if done through ACH, 6% for credit card donations. For larger amounts contact our donations team.

3 - Organizational Partners

Software Preservation Network

We joined SPN in 2021 as an “Implementation Sponsor”.

Universities: CSUCI

California State University Channel Islands

  • Professor Eric Kaltman

LFG (Lexical Functional Grammar) group

  • Set up to allow tax-deductable donations for student travel to conferences
  • LFG is a current Medley application maintained by Ron Kaplan

Computer History Museum

  • PARC gave CHM a “donation” of files from PARC backups, including lisp sources. This looks like an important trove of Information.
  • hosts Smalltalk Zoo
  • offered to record history interview

Internet Archive

We have no formal relationship with IA, but we would be happy to have one.

  • MAME

Software Heritage

  • UNESCO sponsored activity to collect and archive software
  • Longer term focus claims are on reproducibility of software artifacts

3.1 - Educopia

Educopia is a non-profit organization hosting the Software Preservation Network and other software preservation groups.

The also offer additional resources on organizational principles.

  • Community Cultivation Framework: a framework for thinking through a community’s development.
  • Vision in Formation: “Articulating Your Community’s Purpose”: A community facilitator’s guide around starting those mission, vision, and values statements, with templates, including sample agendas, forms, and boilerplate email text.
  • “It Takes a Village”: Tools for planning sustainability for open source software initiatives serving cultural and scientific heritage organizations.
  • The Community Tool Box: templates and advice around community assessment, developing strategic plans and organizational structure, and building community.

3.2 - Software Preservation Network

The Medley Interlisp Project has joined (as an “implementation sponsor”) the Software Preservation Network. SPN is a coordinated, distributed effort to ensure long term access to software through community engagement, infrastructure support and knowledge generation. See Interlisp and SPN for more information.

SPN is hosted by the Educopia Institute.

They recommended the following resources:

  • Community Cultivation Framework: a framework for thinking through a community’s development.
  • Vision in Formation: “Articulating Your Community’s Purpose”: A community facilitator’s guide around starting those mission, vision, and values statements, with templates, including sample agendas, forms, and boilerplate email text.
  • “It Takes a Village”: Tools for planning sustainability for open source software initiatives serving cultural and scientific heritage organizations.
  • The Community Tool Box: templates and advice around community assessment, developing strategic plans and organizational structure, and building community.

3.3 - InterlispOrg

InterlispOrg Inc has beem formed as a non-profit corporation in California.

We have been approved by the IRS for 501(c)3 status, and the California FTB for tax-free status. We have an EIN number assigned. We have a bank account. We can accept donations that may be tax-deductable for the donor. The simplest way to do so is using the GitHub Sponsor mechanism.

The name of the organization is “InterlispOrg Inc” (no punctuation). The board of directors met and, among other things, approved bylaws. It is not a membership organization.

There are three directors on the Board of Directors:

  • Larry Masinter (President)
  • Ron Kaplan (Treasurer)
  • Herb Jellinek (Secretary)

The charitable purpose of the organization is Scientific and, in particular, Computer Science research. The principal activity is to “develop demonstrations of software ideas based on Interlisp”.

The reason for going through this rigamarole is to allow charitable donations, to sustain our Interlisp Online service, to hold copyright and licenses. There are also unanticipated benefits of discounts and service credits available to non-profits.

4 - FAQs

Is copy and paste available?

In Medley, there are three main editors used commonly:

  • TEdit (full WYSIWYG styled text editor)
  • SEdit (structure editor for Lisp code, package aware)
  • TTYIN (Type-in using keyboard)

The original method for copy/paste is different from most modern systems:

  • click with ouse the destination
  • hold down the shift key, and, while holding, select the source (using left mouwse button to select a point, right button or repeated left button to extend the selection)
  • let up the shift key. The system will copy from the selected content and paste it in the destination.

To do a cut/paste operation, hold down the control key as well as the shift key.

Modern Medley (in the CLUPBOARD software) adds an interface with the host OS’s Clipboard. Typing meta-C does copy to clipboard, and meta-V will paste from the clipboard into the destination. The ‘meta’ key is the one labeled ‘cmd’ on a Macintosh and ‘alt’ on most windows keyboards.

How to ask for help about a specific function?

There is a graphical browser of the Interlisp Reference Manual – right click any area of the screen not in a window (i.e., the background) and select DInfo.

The MAN command can be used:

MAN HELP

In addition, typein of a list structure a question mark followed by a ’enter’ will look up in the symbol entered in the enclosing list:

(list ?

Modern Medley extends this to look up Commonn Lisp functioins in the Common Lisp HyperSpec.

Interlisp EXEC commands are case and package insensitive, although the rest of the input line depends on the context.

When to pop up a debugger or just report an error and unwind?

The command retry will redo a typein but invoke the debugger.

For example typing (+ 1 A) will only show the error message: A is an unbound variable.

 RETRY

and a debugger window will pop up. let’s give A a value while in the debugger:

(SETQ A 9)

now middle click in the debugger then choose Ok and it will continue the execution as if the fault never happened. It will return the value 10.

5 - What people are saying

Comments on Interlisp and this project

Do you know of a new blog, tweet or other communication talking about Interlisp? If so, we would like to hear about it.

Submit the link using our What People Are Saying form.

Musings on Medley and Interlisp

Various individuals have written thoughts on Interlisp and the Medley project; their stories can be found here.

Blogs and Online Discussions

  • What Were the Differences Between Symbolics Genera and Xerox Interlisp-D asked by Simon Brooke in Hacker News
    … I’m curious about the similarities and differences between Symbolics Genera and Xerox Interlisp-D. Why is Genera more hyped than Interlisp-D? Unlike Genera, which is proprietary and is extremely difficult to obtain legally, Interlisp-D is now free, open-source software, and there’s a community that has ported Interlisp-D to run on top of modern operating systems.

  • Reviving Interlisp With The Medley Interlisp Project posted to Hackaday by Maya Posch
    Within the Artificial Intelligence and natural language research communities, Lisp has played a major role since 1960. Over the years since its introduction, various development environments have been created that sought to make using Lisp as easy and powerful as possible. One of these environments is Interlisp, which saw its first release in 1968, and its last official release in 1992. That release was Medley 2.0, which targeted various UNIX machines, DOS 4.0, and the Xerox 1186. Courtesy of the Interlisp open source project (GitHub), Medley Interlisp is available for all to use, even on modern systems.

  • InterLisp Fifteen Puzzle by Pixel_Outlaw in his blog
    In some ways, this project was the fulfillment of me wanting to see what Xerox PARC brought to the table during the peak of Lisp AI research. It was from a time when what “Lisp” was was still being explored. You see heavy traces of the era in InterLisp.

  • Stringscope, a string listing tool in Interlisp by Paolo Amoroso in his blog
    I wanted to create something small that carries out a limited but useful task. My goal was to familiarize with the Medley Interlisp development environment, tools, and process through developing, optimizing, documenting, and sharing an Interlisp program.

  • My encounter with Medley Interlisp by Paolo Amoroso in his blog also cross-posted to Hacker News
    Imagine someone let you into an alien spaceship they landed in your backyard, sat you at the controls, and encouraged you to fly the ship. This is the opportunity Medley Interlisp offers….

  • FreeBSD on Dell T3600 by trhawes on Reddit FreeBSD
    … I’m a retro enthusiast who loves Lisp, so natually, I’d want to show off my Medley Interlisp virtual machine (emulating a Xerox Lisp Machine).

  • Computers Doing the Right Thing by Amjad Masad in his blog
    Interlisp is one of the most fascinating could-have-been computer systems in history. It shipped with one of the first from-the-ground-up interactive programming environments, structured editor, and many other innovations. Most impressive was the concept of Do What I Mean (DWIM).

  • The Interlisp Programming Environment asked by gruseom in Hacker News
    Interlisp was the so-called “west coast” Lisp that emphasized an interactive programming environment and in retrospect looks more like a hybrid between Smalltalk and Lisp than modern Lisp implementations. It was developed at PARC for a while. I don’t know if there was cross-pollination between Interlisp and Smalltalk or if the similarity was a zeitgeist thing.

Twitter and Mastodon

Link to message

Link to tweet

Link to tweet

Link to tweet

Link to tweet

Link to tweet

Link to tweet

6 - Our Stories

Blake McBride

Imagine finding an old car from the 1960s. It’s been sitting in storage for decades, doesn’t run, and looks like hell. You remember driving the car when you were young and how much fun you had with it. It had a number of features you enjoyed back then that don’t exist anymore. You want to re-live the experience and be able to share it with future generations so that they can experience the same thing and learn from the lessons it taught.

You decide to fix the car up. Make it run well again. Make it look good again. It’ll be close to what it once was - a thing of beauty of that time.

The thing you don’t want to do to it is make it modern. You don’t want to add air conditioning to it, and you don’t want to add anti-lock brakes to it. You don’t want to do that for several reasons as follows:

a. You lose the whole value of bringing the old experience into the present.

b. You are trying to make the old car modern. Ultimately, you can’t compete with modern cars and all of your “enhancements” are just tack-on garbage.

I like InterLisp for what it was. It was a thing of beauty in its own right. I’m not looking to create another “modern” development environment out of it. Additionally, there are several top-notch Common Lisp systems available. Making yet another Common Lisp implementation is as utterly a waste of time as I can imagine. To this end, I think emphasizing and enhancing Common Lisp is doing more harm than good. Same for things like new fonts.

What we should be doing is:

1. Make sure it runs really well and is as portable as possible.

2. Emphasize InterLisp rather than Common Lisp.

3. Fix bugs and make it run as close to some spec that we chose.

4. Do not make enhancements that lie outside the spec.

5. Focus on making it look and run as it originally did.

John Cowan

When I went to summer camp in the 1970s, the director owned a 1932 Packard that we sometimes got to take rides in. But we could only do that on the camp property because the car was completely unsafe under any other conditions (for one thing, the starter didn’t work: you had to push the car). By now, riding in it at all would probably be either illegal or contrary to the camp’s insurance policies.

This isn’t directly on point for Interlisp, but it illustrates why you might need anti-lock brakes even if not air conditioning.

The Society for Creative Anachronism provides a medieval experience for its members and guests, but without the original filth and consequent disease. The simulation of Interlisp-D isn’t going to be perfect.

I’m not saying that it makes sense for the Medley development environment to support, say, Java programming. But Common Lisp is another matter.

Common Lisp is *part* of Medley (and its predecessors Lyric and Koto). The Interlisp specs have always been a posteriori: they tell you what the existing implementations have in common. That’s a good and valuable thing, but Medley is now the leading implementation (in the sense that OpenJVM is the leading Java implementation), and the spec is what Medley does (modulo OS interface bugs, of course. The Common Lisp standard is another matter. It is a priori: if you are writing or maintaining a Common Lisp implementation (at least one new implementation is currently underway) and it doesn’t agree with the current (1994) spec, it is buggy and you should fix it. If it were a question of adding Common Lisp support to Medley, I’d say “Forget about it!” But it isn’t. It’s just bad luck that most of the work was done between the 1984 and the 1994 standards. (No further standards are contemplated, so when it’s done, it’s done.)

At the very least, someone should run the ANSI test suite and see at which points it fails to be conformant. It’s known that some Common Lisp bugs and limitations were fixed since the Medley release, but nobody remembers which ones.

Note that I am not an Interlisp insider and have no axe to grind, except that Larry has said the purpose of this effort is to create a new group of Medley users/maintainers), and I think what will matter to them most is the programming tools. If they can develop on Medley and either deploy on Medley or on SBCL, that will be a big incentive.

Michele Denber

Well, I guess I might as well toss in my $0.02. I am not an Interlisp insider, just a user. I came to Lisp at Xerox back in the early 80’s. Coming from a Fortran/PL/I/APL/BCPL background, Interlisp-D was a revelation to me. The power of this environment was so amazing I couldn’t imagine ever going back to anything else.

IMNSHO, Interlisp-D needs just three things to be as good a development environment as anything around today: network connectivity, local device access (USB, printers, etc.), and color (just because everything is in color these days). All of these features were available back in the 80’s on the D-machines but were lost with the move to X.

The closest thing I’ve found to Interlisp-D in terms of quickly coding up some algorithm and getting it running is Matlab. But Interlisp-D as an IDE is far superior to Matlab.

Ron Kaplan

I was the one who was most interested in the resurrection, because of my desire to use it as a platform to explore new aspects of linguistic theory (LFG). Many years ago we (namely, John Maxwell in my group at Parc) translated the core algorithms from Interlisp to C, and that provided a high-speed commercial-grade implementation that became the basis for the Powerset spin-out company. But we took a 40-to-1 hit in coding productivity (with maybe a 1-to-40 efficiency gain), and it is virtually impossible for someone other than John to use the C implementation for experimental investigations.

It was a real break when Nick had the time, about 3 years ago, to figure out what was causing it to crash on the Mac. I have probably been the only “user” for the last 3 years before this community effort got started. During that time I encountered a few bugs in the emulator that Nick was able to track down (I remember a fat/thin string bug, a bigending bug) and at least one that is still lurking (stack corruption with multiple-value returns). But it has been remarkably stable—I have run for weeks if not months in the same sysout without crashing.

Along the way, I fixed a few other compatibility bugs to make it work better in the Mac environment, and I also did some modernization extensions (interface to the clipboard, moving and reshaping windows by dragging the title bar and corners instead of the silly pop-up menus).

Another important modernization that I have worked on and has been discussed is to replace the XCCS character encodings and fonts with Unicode, so that text files at least can move back and forth between Medley and the OS. Especially because the XCCS fonts that we have are so incomplete. And a few other things that make it easy to interoperate with modern interface conventions as they evolved away from our intuitions in the 80s and 90s.

But none of this would change the core behavior of Interlisp, it would just reduce some of the barriers to entry and make it less confusing to move in and out.

I am not particularly interested in Common Lisp per se, except insofar as Common Lisp has added a collection of often useful and sometimes elegant new functions that I call from time to time. In terms of capabilities, Common Lisp and Interlisp tend to generalize on different dimensions and so a mix can sometimes be helpful.

However: the integration of Common Lisp into the Medley development environment is incomplete, and in some ways broken. Key attractive features of the environment simply don’t work on Common Lisp FUNCTIONS and MACROS that are contained in files. I would never actually do a DEFUN or DEFMACRO in my own code, although I certainly do call out to Common Lisp functions. Common Lisp feels basically like a reversion towards a non-residential system. (There are also some inconveniences in the way that BREAK works.)

My primary goal then would be to complete the Common Lisp/Medley integration so that the development experience is consistent for FNS and FUNCTIONS etc. Upgrading Common Lisp to this or that standard might also be an attractor (or less of a disincentive) for others to come into this particular implementation, but I would first want to ensure a consistent Medley development environment.

Larry Masinter

For me, the importance of Medley is as a development environment. People who used it (including myself) were much more productive. It spoiled me so much I’ve never been proficient in anything else.

I didn’t think people could get the sense of the development without a lengthy session, to use it “in anger” – trying to get something else to work while using medley as a tool.

I think showcasing “things people built in Interlisp” shows the power of the development style, especially for research prototypes.

I think with a volunteer effort like this, it is to be expected that people have different things they want to get out of it, and the project goals are necessarily a synthesis of the individual goals. We have common subgoals. I don’t think there are any serious conflicts except perhaps priorities.

Getting the system stable is very important.

Getting the envos tests to run is a subgoal

There is too much to do with available manpower, so getting people to join is necessary. The first hurdle of contributing is understanding how to get started

Paul McJones

I’ve had the feeling that I don’t understand “the big picture”, and how the discussions fit in. For example, support for the Unicode character set and for modern scalable fonts would make it nicer to do work like Ron’s computational linguistics in Interlisp, but don’t seem too necessary to support people using Interlisp to understand its programming environment. Similarly, getting Interlisp to interoperate with git repositories seems like a distraction for someone who is trying to understand how Interlisp’s programming environment worked back in the 1970s and 1980s.

Here is my attempt to think about a “stripped down” path to preserving Interlisp history in a fashion allowing it to be used and studied:

1. Create one or more snapshot releases of Interlisp (a suitable virtual machine, a file system with sysouts, sources, and compiled files, and a matching set of documents (reference manual plus getting started guide) that will run on one or more modern platforms and that are complete enough to use the standard Interlisp tools to edit, compile, debug, and run an application. The snapshots would be distributed as compressed tar files and could be downloaded and run without any use of git or GitHub. If one of these could be adapted to run in a web browser, it might become the dominant way for “outsiders” to sample Interlisp.

2. Create a series of source snapshots corresponding to various interesting points in the Interlisp timeline for which complete or partial sources are available, for example:

Parc/BBN PDP-10

Parc D machines

Envos (D machines?)

Venue (Solaris)

Each snapshot would be a compressed tar file, and, where available, would include multiple versions of various source files, as maintained in the traditional Interlisp development environment. These snapshots would be archived (for example at CHM, and possibly software heritage.org). They would also be the starting point for creating the executable snapshot releases of #1.

3. The one component of Interlisp that seems compatible with git file-based development is the maiko virtual machine, although pragmatically I think the main activity would just be fixing show-stopper bugs and adapting it to new platforms.

But for the Lisp source files, it seems that informal mechanisms used in the 1980s to coordinate within a small group of developers are still the best way.

Nick Briggs

I’m mostly interested in getting the underlying emulator code working reliably. Unfortunately, there is little-to-no documentation available for the (C language) code itself, or description of the technical design and implementation details behind it. This makes it critically important to me to have the code history preserved, in its entirety, so that when I find something that appears to be a problem I can look at all the revisions that have been made to determine if there was an error introduced recently, or exposed by, for example, operating system or compiler changes, or is an endian dependency that was never resolved (for which we need to have both the original big-endian and newer little-endian versions). Since there is very tight integration with the lowest levels of the Lisp sources, I’m also interested in ensuring that we keep the history of the Lisp code available too – preferably in a way that permits easy comparisons of previous versions, and such that we can track the source in a running sysout back to the Lisp source files that we are keeping.

Arun Welch

I started working part-time for XAIS when I complained to John that the TCP/IP code was broken and he responded with “yeah, but all the AR’s reporting problems are coming from you and all the patches to fix those AR’s come from you so why don’t I pay you to support it since I don’t have any resources available to do that anyway”…

From there I supported the networking code, maintained the PCL port, and assorted other applications layered on top of the basic system as the ownership transitioned from XAIS to Venue to Envos.

I’m interested in getting some of the applications that were built on Interlisp/Medley working in the current environment, including:

  1. ROOMS
  2. NoteCards
  3. PCL/CLOS

Bob Bane

I would like to resurrect and extend the Common Lisp development part of Medley Making Common Lisp a fully supported part of Medley was an amazing achievement back in the day; I did a bunch of work in that environment and really liked the combination of Common Lisp and managed source files.

William Maddox

I saw the recording of your demo at the NYC Lisp group…. I figured I’d download it and give it a whirl over the weekend. I’m interested in seeing what a residential Smalltalk-80-like Lisp system feels like. I’ve used Allegro CL and various file-oriented Lisp and Scheme implementations over the years, but Interlisp-D was a bit different. I also have a “thing” for self-contained systems that can run on bare metal. I think Wirth’s FPGA Oberon is really, really cool, but it’s really a bit of an educational toy, and the language is a dead-end. A real Lisp system would be so much neater. My interest, if I got involved with any development, would be getting a bare-metal port of maiko running. Recently, a fellow combined a bare-metal support library with an ST80 virtual machine in C (both pre-existing open-source) and got an ST80 image running on bare-metal Raspberry Pi – no Linux in sight. In reality, though, a stripped-down embedded Linux would do the same thing, more or less. I really think to experience a Lisp machine, however, it needs to boot directly into Lisp. Running any sort of emulator “in a box” on a modern desktop, with a web browser, Facebook, and all those other distractions is just cheating. ;)

Stephen Kaisler

Back in the 1980s, I had written a book on Interlisp: The Language and Its Usage, which was published by John Wiley & Sons. The book has been out of print for years.

One of Xerox Electrical Optical Systems salespersons had told me they had purchased some copies to give to customers of their early D machines.

I had used Interlisp in several variations: Interlisp/360 (an implementation from Israel), Interlisp-D on a Xerox 1100 that I had at CIA, Interlisp-D on a Xerox 1186 that I had as a DARPA Program Manager, and Interlisp-VAX.

I began a subsequent volume entitled Interlisp-D: The Interactive Programming Environment, which had the same structure, format, and approach as the first book. It was submitted to John Wiley & Sons, who had initially agreed to publish, but then demurred after Xerox apparently stopped selling D-machines and Common Lisp came to the fore. The volume currently has 13 chapters and about 500 pages with numerous examples that I had tested on both my Xerox 1186 and on Interlisp VAX (the ISI version). It was written using Microsoft Word.

So, it languished for many years as I had hoped to see Interlisp-D be revived. Now, it appears that is the case with the Medley Interlisp project.

I am interested in participating in the project, re-editing the book with its examples, adding to it as appropriate, and adding it as another source of documentation to the Interlisp-D revival.

I wonder if you are also going to include LOOPS as part of this revision. I took the LOOPS course at PARC in 1983 with Peter Fisher of XEOS as my partner.

I am looking at the possibility of converting the first volume from PDF to Word so it can be further edited. Not sure if this is possible depending on how the PDF was created. If I can do this, I may split that volume into IA and IB to make it more manageable.

As I got more into editing the second volume, I realized it was going to be very big. So, I have split it into Volumes II and III:

  • Volume II: The Interactive Programming environment
  • Volume III: Tools and utilities like TEdit, DEdi, etc.

Once I start working on LOOPS, it may become a fourth volume. Others may arise as we get further into the project, but that is a ways off.

Guenther Goerz

I got familiar with Interlisp when I was working on an implementation of a parser for my PhD thesis work in the late 1970 and 1980s. It started with a little cooperation with Martin Kay (and also Ron Kaplan) from PARC at a computational linguistics summer school in Pisa. Although I had a tenured researcher position at my university, I did not have any means to acquire one of Xerox’ LISP workstations, which were sold in Germany by Siemens for something like 90000 Euros (today’s equivalent) - so I used Interlisp on a Siemens mainframe to which I had access. The Interlisp version was a descendant from the IBM implementation - both machines had basically the same hardware architecture but different operating systems (which was not a problem for the rather self-contained Interlisp environment). After spending some time with IBM’s LILIOG project at IBM in Stuttgart and getting my first professorship at the University of Hamburg, I came back to Erlangen in 1991. So, in the 1990s I used the Fuji Xerox emulation of Medley on Sun workstations and later on Linux machines. Additionally, we also acquired a license for the DOS version of Medley 2.0 from envos/Venue. What I used for some time was the LFG implementation in Medley - which I got from Ron Kaplan in Linux - in Suse Linux, running on my Mac(s) with the Parallels Virtual machine, mainly for teaching purposes. But I was also interested in various features of the programming environment… Recently, just for fun, I tried to get Medley up and running under DOSbox on Mac OS X. I was also wondering whether there is a DOS emulator for the ipad - and there is one, iDOS, which works pretty well! So, despite the small screen, Medley 2.0 runs amazingly well on the ipad too.

I must add that we (our chair at FAU Computer Science) first acquired a Medley 2.0 license for the Sun workstations through Xerox France first and the DOS license later. We used it for our first steps in the Behaim Globe project (also trying out NoteCards and implementing our first ontology with CLOS) and the actual portal https://wisski.cs.fau.de/behaim has still some of the code deep inside and furthermore for NLP, in particular, the LFG grammar development environment. Since I was a simple user, my expertise is pretty small; I was never involved in anything close to system development. Later on, I switched to Scheme for teaching and research for reasons of clarity and simplicity and also for theoretical reasons - I never liked Common LISP very much. But of course, there was never such a comfortable programming environment for Scheme.

After my retirement in 2012, I focused on the development of our VRE Wisski in cooperation with two museums (https://wiss-ki.eu), which turned out to be quite successful - in the meantime, there are several hundred applications. Furthermore, I helped to get Digital Humanities at our university up and running - they are starting a new department quite now - and I was involved in some DH projects at the Max Planck Institute for the History of Science in Berlin and more recently at the Bibliotheca Hertziana (Max Planck Institute for Art History) in Rome in the field of “cosmography” (which was the correct term in the Renaissance), i.e. modelling and annotating historical texts and maps (https://wisski.biblhertz.it).

A while ago I tried - just for curiosity - whether the old DOS version of Medley 2.0 would also run in the DOSBox under Mac OS X. It worked really well, and so I became even more curious whether there would be something like DOSbox for iOS - and yes, there is iDOS, basically designed to run old computer games. Now Medley 2 runs on my ipad… Actually, I don’t have any further plans, and I didn’t realize what happened after Medley 2.0. So, from your presentation at lispNYC I learned that there seems to be something like a new version 3.0. Sounds tempting… So, I would be glad if we could keep our contact active.

J Moore

I checked out interlisp.org. That’s an interesting project. I am glad you’re doing it. Too often the first implementations of good ideas are overshadowed by evolutionary improvements. (In that spirit, a few years ago I reimplemented the first Boyer-Moore theorem prover – the one we built in Edinburgh in POP-2. But I implemented it in ACL2, i.e., applicative Common Lisp. But it proves the same theorems the same way as we did in 1972-3.)

As for the VM, I don’t have much context to add beyond what I wrote in the Acknowledgements of CSL-76-5, which I’m sure you’ve read if you’re interested in that question. I got my PhD from Edinburgh in November, 1973, and arrived at PARC in January, 1974. Danny Bobrow had taken a sabbatical from PARC (BBN?) in ‘73 and spent it in Edinburgh, where he convinced me to join PARC. The Acknowledgements says Warren Teitelman asked me to write the VM document in January, 1975. But I actually suspect it was earlier than that, perhaps as early as January, 1974 (i.e., I got the year wrong!). The reason is that the Acknowledgement says we spent 2 years writing it, but CSL-76-5 came out in September, 1976, so I suspect Warren approached me in the a few months after I joined PARC. For the record, I don’t remember doing anything at PARC besides (a) re-coding the Edinburgh theorem prover in Interlisp as a warm up exercise and to continue my research on theorem proving, (b) helping Simonyi with the representation of text in Bravo by implementing the underlying data structures in Interlisp and responding to Charles’ requests for new features, (c) writing the VM, (d) inventing the fast string searching algorithm with Boyer and fighting the lawyers at Xerox to publish it (ultimately by threatening to remove my name from the publication and let Boyer author it), and (e) fighting with Ben Wegbreit and Jerry Elkind over the ``right’’ way to approach verification and ultimately leaving. So I suspect that my VM work was my first and main official task at PARC.

Other than that, I think the Acknowledgements say it all, accurately. The line there that says I think my friends in the formal verification community will be displeased was not speculation. Tony Hoare wrote me a letter upon seeing the document in which he complimented me on the precision and urged me to get back to formal methods. Oh well.

7 - Status Reports

Annual Reports

The Medley team has produced annual reports documenting their major achievements.

March 2023 Bay Area Lisp Meeting

An overview of the Medley Interlisp project was presented at the March Bay Area Lisp Meeting. The following recording provides an introduction to the work being undertaken by the Medley project.

Closed Issues

The issues closed by the team can be found in our GitHub repository.

7.1 - 2022 Medley Interlisp Annual Report

Introduction

We have made considerable progress on the Interlisp software preservation project, and we want to offer tours and collaboration for those engaged in similar or related software preservation efforts.

Interlisp was an early and unique software development environment (IDE) developed in the 1970’s and 1980’s at Xerox PARC, and a testbed for novel software development tools. The Medley version of Interlisp-D was built as a portable Virtual Machine, which has allowed us to bring the system forward to run on a wide variety of modern hardware and operating systems.

Interlisp was also an environment that supported many novel applications, especially in Artificial Intelligence of the 1980s.

We are approaching the project as a general software-preservation-through-emulation project, starting with source code. While a “strict emulation” mode is possible, we’ve been focusing on an updated version that fixes some of the compatibility problems with modern hardware (keyboards, mice, etc.) and implements more modern modes of user interaction.

Accomplishments

Advances over the last year include:

  • New versions of online.interlisp.org give users a virtual “Lisp machine” accessed through the browser without any software to install.
  • New versions of (open source, in GitHub) emulator and VM images with numerous improvements.
  • Support for virtual networking of the Xerox Network Systems (XNS) protocol stack (pre-dating TCP/IP, as well as the “PUP” (PARC Universal Packets).
  • Further work reviving classic Interlisp applications, including Rooms (desktop management), Notecards (Hypertext from the 80s, well before the Web), LOOPS (Lisp Object Oriented Programming System), melding Smalltalk style object inheritance with class-based knowledge engineering tools.
  • Continued integration of Common Lisp standard features with Interlisp development tools.
  • A large (but still unsorted) Zotero library of referenced texts, papers, documents, and presentations.
  • A new expanded Interlisp.Org website that documents the project, software history, goals, contributors, and other components.
  • Additional development of GitHub Interlisp organization and repositories that provide a record of issues, changes, bugs, and fixes.

Getting Involved

We meet weekly to discuss open issues and other agenda items. Meetings are recorded. We’d like to talk to others who might be interested in collaboration or using our components for other emulation projects.

Contact us at: info@interlisp.org

7.2 - 2021 Medley Interlisp Annual Report

November 15, 2021

Join Interlisp group or follow @interlisp on GitHub

Introduction

To “revive” something is to make it live again. Making Medley Interlisp live again means putting the system in order so that others without a previous deep background in Interlisp can use and appreciate it (if only as a virtual antique).

The Medley Interlisp project started in earnest in March of 2020 (at the beginning of the pandemic). This report focuses on activities and accomplishments since the December 2020 virtual meeting of LispNYC (recording at: https://www.youtube.com/watch?v=x6-b_hazcyk).

In this document, work in the project is broken down into three main categories:

  • Work on the software itself – debugging, adapting, etc.
  • Documentation for the software
  • Building an organization and developing a community

Software Archeology

“Software Archeology” is a process like putting together a functional bowl from pottery shards. We have not completed the task, but we have a stable base.

The software is old: it had been developed between the ’70s and the 90s, with many revisions, by many different people, working with little internal documentation. There were many “excursions” to support systems or options that are no longer available. Over the last 25 years, software standards evolved for C, Common Lisp, character codes, and operating systems.

Maiko

Maiko is the implementation, in C, of the Medley Interlisp virtual machine. It can be found at https://github.com/interlisp/maiko.

  • Conformance: We have been making Maiko conform to modern C compiler expectations. Removing support for outdated systems simplified the task.
  • SDL: Support is underway for SDL, a multi-platform (Windows, Mac OS X, Linux, iOS, and Android) graphics toolkit as an X11 replacement. SDL can be used instead of X11 as the shim to the native window system, which (we hope) will allow the system to run on Windows without separately installing X11, Docker Desktop, or WSL2.

Because of the cleanup work, the code is much more portable than ever before. Systems we’ve tested on or regularly build for include

  • Operating systems: macOS, Linux, FreeBSD, Solaris 11.4
  • CPU architectures: i386, x86_64, arm7, aarch64, SPARC-32 and -64

This covers Raspberry Pi (linux.arm7) and Windows 10 (with WSL2 or Docker). and Windows 11 (includes WSL2). Performance is outstanding. A $40 Raspberry Pi completes Lisp tasks 250-1000 times faster than the Dorado (the $90k high-end Xerox 1132 Lisp machine).

Medley

The rest of the system is implemented in Lisp: Interlisp and Common Lisp interpreters, compilers, debugging tools, editors, window system, graphics, device drivers. In the last year:

  • Organization: We have been cleaning out and organizing, comparing dates on files, and deciding which to keep; building maintenance scripts and Lisp utilities.
  • EOL and character conversion: the code for handling end-of-line and character codes was generalized, on the way to full Unicode support. (See Medley Issue #2)
  • Git integration: Interlisp’s file manager was designed for versioned files with version numbers. GitHub has a different graph model of history. We built “restore-versions” to restore numbered versions from git logs, but the problems are deeper. If the Interlisp style of programming is going to be supported, we have to solve these problems. (see Medley issues #265, #226)
  • Loadups: We recreated the method of building a system from scratch, which used to be an hours-long manual process.
  • Debugging: We found and fixed a variety of bugs: a few Y2K problems, some instances of “bit rot” and smashed files, incomplete implementations, and code patched at “wrong level”.
  • Modernization: Window manipulation by title bar dragging and corner selection, mouse wheel scrolling, clipboard–these seem to be necessary enhancements for modern users.
  • Release process & automation: GitHub Actions are now used to automate the build process for Medley releases and also a Docker container, deployed to Docker Hub as Interlisp/Medley. This gives a way to run Medley in the cloud (on Amazon Web Services, Azure, Google Cloud) or on the Windows Desktop with remote access in a browser.

Interlisp Applications

One of the reasons for restoring Medley Interlisp is to support the revival of applications written for it.

  • Notecards: Notecards is a hypertext system developed well before the web or Apple’s Hypercard. http://notecards.online was built with the Medley/Docker release, running Medley “in the cloud,” with web browser access. We are adopting this to work for other Medley Interlisp systems, and for others to build.
  • Rooms: Rooms is a Lisp desktop manager for less cluttered window access with interesting innovations. In the Medley repository. Loads but untested.
  • CLOS: The Common Lisp Object System adds a style of Common Lisp class structures added after Medley’s Common Lisp implementation to the ANSI standard. Also loads but untested.
  • LOOPS: An object-oriented Lisp addition (to Interlisp) prior to CLOS. Of interest because of AI applications built using it, including “Truckin’” – a demonstration of “knowledge programming [see paper]. The source code for the Truckin’ application exists and will be used to test LOOPS once it fully loads and is compilable.
  • LFG: the Grammar Writer’s Workbench,
  • LispUsers: User-contributed software (before “open source” was a thing). We’ve checked out over half of the LispUsers files.

Documentation

Books

  • Interlisp: The Language and Its Usage, by Steve Kaisler, originally published by John Wiley & Sons, scanned and converted to a compact PDF. This book describes the core features of the Interlisp language.
  • Medley Interlisp: The Interactive Programming Environment, by Steve Kaisler, describes the Interlisp-D Interactive Programming Environment as implemented on Xerox D-machines and now running on several modern platforms.
  • Medley Interlisp: Tools and Utilities, by Steve Kaisler (undergoing editing) describes the editors and tools to be used for program development. It is expected to be completed and uploaded to Interlisp.org in early December 2021.

Software Documentation

We’ve converted TEdit source documents to PDF (see medley-pdfs). We have the IRM (Interlisp Reference Manual) with links to online help (DInfo), User Guides, Release Notes, Primer. We still need to convert and publish documentation for some Interlisp applications and to organize and update to make it easier for newcomers.

Bibliography

Zotero is an Internet bibliographic service. We have set up an Interlisp Zotero of Lisp-related material, many items with the source material as PDFs. Our goal is to have a comprehensive source of information about Interlisp-related technical papers, technical reports, and manuals for various versions and implementations of Interlisp (and, for comparison) contemporaneous “Lisp Machine” competitors.

Working older versions

In addition to modern Medley, we have begun to organize other emulations of older versions, and a “history” repository, including files from Interlisp-10, the “DarkStar” emulator of the Xerox 1108 / 8010 hardware, and sysouts for many different releases of Interlisp-D. We’re working on making an earlier version of Medley (running on an emulated DosBox); currently available with instructions in the Interlisp/DOS repository.

Outreach

To attract users and supporters, we need to make the project known.

Who are we?

In this document, we use “we” to mean our contributors:

We depend on volunteers to help. If you’d like to help but aren’t sure how to, ask.

Future activities

There were some tasks/projects listed here; they have been moved to GitHub issues.

Acknowledgments

We’ve gotten a lot done, but there’s quite a bit more to do. Thank you to Abe, Alexander, Arun, Bill, Blake, Frank, Herb, John C, Larry, Michele, Nick, Paul, Peter, Ron, Wayne, Zoe.

A moment in memoriam to past contributors, including John Sybalsky, Warren Teitelman, Danny Bobrow.

8 - Credits

Interlisp was a joint effort of many people – likely more than one hundred – from its initial beginnings through its heyday until its virtual disappearance. There are more than we can name. There were contributions by employees of BBN, Xerox, and Fuji Xerox and later, employees of Envos and Venue. There are initials in the source code with date of last edit, but who wrote what is sometimes a mystery.

The Medley Interlisp Project had its origin in an effort by Nick Briggs and Ron Kaplan to get the virtual machine emulator (Maiko) to run on a newer MacOS; the goal was to let Ron continue to use it for linguistics research. Joined by Larry Masinter in 2020, the project evolved. Starting with a mailing list, private GitLab repository, DropBox folder, occasional emails. The project has grown and evolved, and continues to gain momentum. It can be difficult to name modern contributors, but the following people have helped the revival project:

Abe Jellinek, Alex Shendi, Andrew Sengul, Arun Welch, Bill Stumbo, Blake McBride, Bruce Mitchener, devhawala, ecraven, Eric Kaltman, Hayley Patton, Herb Jellinek, Frank Halasz, Kathryn Leventhal-Arnold, John Cowan ,Joseph Moreno, Matt Heffron, Larry Masinter, Nick Briggs, Paolo Amoroso, Paul McJones, Ron Vincent Aspuria, Ryan Burnside, Steve Kaisler, Wayne Marci, as well as our GitHub sponsors: @to-lose-letrec, @jason-chandler, @sethm, among others.

GitHub can display graphs of contributors to repositories, including medley, Maiko, online, and this website.

9 - Organization

Medley Interlisp

The Medley Interlisp Project was created to revive Medley Interlisp.

InterlispOrg Inc.

InterlispOrg Inc is a non-profit corporation in California, approved by the IRS for 501(c)3 status, and the California FTB for tax-free status.

The charitable purpose of InterlispOrg Inc. is scientific and, in particular, computer science research. The principal activity is to develop demonstrations of software ideas based on Interlisp.

For information about current projects, go to Interlisp on GitHub, and click the “projects” link.

Donations

We can accept donations that may be tax-deductable for the donor.

Board of Directors

The members of the Board of Directors are:

  • Larry Masinter (President)
  • Ron Kaplan (Treasurer)
  • Herb Jellinek (Secretary)

You can email the members of the Board of Directors.

Credits

The effort to create Interlisp and Medley originally took the talents of many poeple. The restoration of Medley today celebrates their efforts. The Credits page is our attempt to recognize them for their contributions.