News (December 2020)
- LispNYC Meetup recording 8Dec20
- slide deck
- meetup announcement and 75 RSVPs
- Medley Project Goals
- Ways to get Medley (medley-intro) and improved READMEs
About the Medley Interlisp Project
Our goal: restore Medley Interlisp to usability on modern systems. You could think of this as a kind of "vintage software" project, to try to capture the sense of fluidity in the development cycle. The development cycle was quite different than in most modern IDEs. Interlisp was developed to support researchers in AI for whom the act of programming wasn't the point.
What is Medley Interlisp?
Medley Interlisp is the environment developed for the Xerox Lisp machines. The project was spun out to a company called Envos, which then turned into Venue.
It was once a commercial software development environment aimed at the 1980s AI market, and it contained many influential ideas. For example, D-EDIT and S-EDIT are the canonical ancestral structure editors. Masterscope and the "file package" included system-management tools that combined features of version control and build systems, with comprehensive cross referencing support.
Medley was the latest release of the Xerox Lisp environment, before the whole environment was renamed Medley. It was originally written in Interlisp (a dialect separate from the MACLISP/Common Lisp tradition, with its own ancestry), but later, Common Lisp also became part of the environment. Medley includes WYSIWYG text editor (TEdit), email organizer (Lafite), performance tools (Spy) and many other libraries and user contributed code (from the 1980s).
The 1992 ACM Software System Award, to Daniel G. Bobrow, Richard R. Burton, L. Peter Deutsch, Ronald M. Kaplan, Larry Masinter, Warren Teitelman
See History section below.
At this point the base system is usable enough on 64-bit OSes and quite fast (A $40 pi runs Lisp > 150 times faster than a $30,000 Xerox 1108 in 1982).
Who is involved?
The core group of contributors includes Larry Masinter, Ron Kaplan, Nick Briggs, Wayne Marci, Paul McJones, John Cowan, Arun Welch, Michele Denber, Bob Bane. If you want to help out, please join in. See GitHub issues for some ideas.
We’re meeting weekly (Monday 10:30am PT) via zoom.
We're hoping to make some demos of various features but could use some help. We're coordinating with the Computer History Museum and would like to with the Internet Archive, Fuji Xerox and PARC.
An implementation of the virtual machine (like a port of the microcode that turned the xerox hardware into a lisp machine.) The emulator, called maiko, was initially developed at Fuji Xerox for the SunOS/SPARC. It was subsequently ported to many different OS and hardware combinations. The sources are used to build an emulator binary called lde.
The Lisp system itself was split into layered parts:
- The core of the system written in Lisp to implement system components including thread scheduler, drivers for disk, floppy, display, keyboard; windows, menus, fonts, networking (originally PUP, then XNS, then TCP/IP). For maiko, some additions and changes were made to allow integration into a host operating system (so that programs could use the host file system, run in a window of the OS) like with VMs
- The Library contains additional utilities and the development environment, text editor (TEdit), debugger, source file manager, email client,etc.
- LispUsers packages were contributed by users but curated by the Interlisp developer group
- Raster image Fonts in display and print resolution
- Documentation and release notes
- Memory images (sysouts) that could be started and run without loading or compiling anything. Some applications were released as sysouts, and sysouts could move from machine to machine. Of particular interest are init.sysout lisp.sysout. Msking a sysout is called doing a loadup.
- Applications done by Xerox groups: LFG, Loops, Trillium, Rooms, Notecards, Colab, as well as those by customers. Some of these may be only available by sysout; others we have sources that need to be sorted.
GitHub integrationThere is a GitHub Organization Interlisp with repositories for Maiko, Medley, this web site (Interlisp.github.io) and others. The Lisp Sources, Library and LispUsers files are in source and compiled form. We hope to link the releases with Git history.
The focus of this project is to make Medley usable enough that people can use it in a modern environment. For example, we're adding Unicode support for IO (Interlisp-D was built before Unicode, and supports an older Xerox encoding). We're relying on code obtained from Venue. The first order of business is testing and debugging what we have and raising issues, and, as volunteers, opportunity and time permits, dealing with them. Issues should be raised in github under Interlisp/medley. See Medley Project Goals
- Ability to run old Interlisp-D code
- from source and/or compiled code
- from old sysouts
- A distribution including lde for various OS systems, fonts, documentation, lisp.sysout, full.sysout, lisp library and lispusers
- Lde for Mac, Linux 64, Raspberry Pi, native windows, in a browser, in a docker 'container.
- Web assembly would let us run in a browser. Getting the code to compile under clang with webassembly output and libraries is the easy part; dealing with window system and file system integration are still to figure out.
- UI modernization (small patches)
- Clean up sources and build procceses and documentation to make it easy for others to use, port, and to contribute.
(We're working on a merged Interlisp History timeline from all of the narratives and pointers below.)
40 years ago, it was said Lisp was the second oldest programming language in common use (FORTRAN being the oldest). Is Lisp still commonly used?
Interlisp had its roots in an interactive Lisp system for the Digital Equipment Corporatation's PDP-10, originally developed at Bolt-Beranek and Neuman in Boston. With the move of Danny Bobrow and Warren Teitelman to Xerox PARC in 1970, BBN LISP was renamed Interlisp. Development was funded in part by DARPA to support researchers in Artificial Intelligence, who chose LISP over Fortran for symbolic computing. When PARC built the Alto and subsequently the D-machines, the development of Interlisp for D machines was originally focused on supporting those internal Dorado users. The machines were meant for office document processing and used (with different microcode, product names ) for Mesa, Cedar, and Smalltalk development and release. Many early AI companies built applications on the platform.
The hope is by preserving a “working emulator” that people could use some of these older applications.
Links to Papers and Publication
- An extensive history: History of Lisp including Interlisp-D
- Wikipedia article for Interlisp
- Papers on Interlisp-D
- Warren Teitelman’s “History of Interlisp”.
- L Peter Deutsch, "A LISP Machine with Very Compact Programs"
- An even older version of Interlisp for PDP-10 TENEX
- Beau Sheil “Power Tools for Programmers” 1983
- Photos from IJCAI 1982 Announcing sale of Dorado and Dandelion
- Interlisp-D and Interlisp PDF files at CHM
- Maiko files now on GitHub; Lisp and other files soon to be (available on DropBox and iCloud temporarily.)
- DarkStar Dandelion hardware emulator-- can be used to run older sysouts. Article at Introducing Darkstar: A Xerox Star Emulator #VintageComputing #Xerox #Emulation
At PARC, researchers were developing the idea of using the Xerox Alto with a machine architecture that supported more compact programs by microcoded processor that would interpret byte-coded instruction sequences; this approach was used by Mesa, Cedar, Smalltalk and Interlisp as separate languages/virtual machines. However, the Alto was too memory-constrained for Lisp. The D machines were Dandelion, Dolphin, Dorado, Daybreak, aka Xerox 1108, Xerox 1100, Xerox 1132, Xerox 1186 when running Lisp. Each machine had different microcode and engines (1108, 1186 were the same). Each microcode implementation was done mainly by different people -- Alto by Willie-Sue Haugeland, Dorado by Willie-Sue and Larry Masinter, Dolphin by Alan Bell, Dandelion by Steve Purcell and later Don Charnley.
The software was called Interlisp-D. Interlisp-D releases were named alphabetically, starting with Allegro, Bravo, Carol, D[?] E[?] Fugue,G[?] Harmony, Intermezzo, Jazz, Koto, Lyric, Medley. The language that it implemented was Interlisp. Later, with the addition of Common Lisp, the programmer could freely mix Interlisp and Common Lisp using a common Virtual Machine. When the ownership changed the name “Medley” was adopted as a name for the whole system.
Copyright NarrativeThe following history is different from that above in that it mainly focuses on copyright / license issues.
Interlisp was developed at BBN and Xerox in the early 70s, with the understanding at the time that the results were public domain because of ARPA funding.
The LispUsers collection was started as a set of “Hacks” in the sense that they weren’t supported by Xerox.
At some point a feature was added to insert a copyright notice of the developer’s choice automatically in Lisp source files when they were edited.
The development of Interlisp continued through commercialization and release by “Xerox Artificial Intelligence Systems.” Sometime in the mid-80s, [cite] a spin-out from Xerox called Envos was started, and several employees left Xerox to join Envos.
In 1990 [cite], Envos shut down and John Sybalsky started Venue as a smaller venture based on porting Maiko to other machines and OS’s. Wayne Marci inherited the assets of Venue in 2019.
Paul McJones has completed gathering files from Xerox PARC for release to the Computer History Museum. The "CHM collection" represents snapshots of the code from a time when the intellectual property rights were clear (Xerox owned everything at the time of the snapshot(s), and gave permission to CHM to display and distribute it); the opportunity is in curating the code, and perhaps creating a new execution environment for it (e.g. Josh Dersh’s Darkstar emulator).
Wayne Marci (John Sybalsky’s stepson) has given permission to use Venue code and license to release the software as open source, consistent with Venue's license.
- (1986) CommonLoops: merging Lisp and object-oriented programming, OOPLSA '86. Conference proceedings on Object-oriented programming systems, languages and applications
- (1983) 1983 Interlisp Reference Manual (one of many editions)
- (1982) Richard P. Gabriel, Larry Masinter. Performance of Lisp Systems. ACM Symposium on LISP and Functional Programming.
- (1981) Warren Teitelman, Larry Masinter. The Interlisp Programming Environment. IEEE Computer, April 1981.
- Selling Lisp machines ~1980.
- (1980) Global Program Analysis in an Interactive Environment (Larry's PhD thesis).
- (1980) Overview and Status of DoradoLisp, 1980 Lisp conference.
- (1980) Larry Masinter, L. Peter Deutsch. Local Optimization in a Compiler for Stack-Based Lisp Machines. Lisp Conference. Stanford University.
- (1988) Common LISP Cleanup. A description of the process of "cleaning up" the Common Lisp standard. See Wikipedia article and cleanup proposal template.
- (1985) AI Systems and Technologies, (initial part of) a 2-day tutorial. Page 4 is still true: "AI is a goal, not a fact".