In commemoration of the 40th anniversary of the release of Smalltalk-80, the Computer History Museum is proud to announce a collaboration with Dan Ingalls to preserve and host the “Smalltalk Zoo.”
The Smalltalk Zoo, created by Dan Ingalls, is a collection of historical versions of the revolutionary graphical programming and user environment Smalltalk, originally developed at Xerox PARC, ranging from the 1972 version all the way to the modern “Squeak” version whose development began in 1995. These emulated Smalltalk environments run in your web browser and are hosted by CHM at smalltalkzoo.thechm.org.
Smalltalk was a revolutionary system developed by the Learning Research Group (LRG) at Xerox PARC in the 1970s, led by Alan Kay. Smalltalk was comprised of a programming language, a development environment, and a graphical user interface (GUI), running on PARC’s groundbreaking Alto computer. In fact, it is most famous for being the GUI that inspired Steve Jobs when he and a group of Apple engineers visited PARC in 1979. Smalltalk pioneered overlapping windows, popup menus, and paned browsers, all controlled by a mouse. All of these UI elements have come down to us today through systems like the Macintosh and Microsoft Windows. Smalltalk was also one of the earliest, and most influential, object-oriented programming languages, which make up the most dominant type of programming languages today. Object-oriented languages are designed to make it easy to reuse existing pieces of code, but in a flexible way. Python, Java, Ruby, and Objective-C, among others, all owe debts to ideas originally developed in Smalltalk.
Alan Kay’s vision for Smalltalk was that it would be easy to use by children. It would provide the user environment for his vision of personal computing, the “Dynabook,” a tablet-like computer that he mocked up. Kay understood that computers were a form of media, but unlike traditional print or broadcast media, they could be easily tailored to the particular interests and needs of the user. A computer running Smalltalk, in other words, would be a “personal dynamic medium.” For Kay, this meant that users, and especially children, needed to be able to program their system.
These ideas were further illustrated in the famous demos of Smalltalk to Steve Jobs and Apple, which inspired Jobs to make the Lisa and Macintosh computers based on a similar graphical interface. Dan Ingalls was one of the demonstrators. In the most famous of the demos, he showed how a user could change the text selection behavior from being a solid black box with inverted text to an outline around the text, all by tweaking just a few lines of code while the system was running. Most systems of the day required recompilation and reloading for any change to take effect.
Later in the demo, Jobs observed that the scrolling behavior of the text views was jerky, rather than smooth and asked if that could be changed as well. Line-by-line scrolling had seemed most natural for editing code, but during a lunch break, Ingalls reorganized some code to make this possible. When Jobs returned, Ingalls demonstrated that with a simple change, he was able to make the window scroll smoothly, a pixel at a time, instead of a line at a time, again while the system was still running. He has repeated this demonstration for CHM on our restored Xerox Alto, both in a live event and in the following recorded video demo. The selection behavior demo begins at 39:04, and the scrolling behavior demo begins at 44:48. These specific demos take place in Smalltalk-76 running on a Xerox Alto.
While Alan Kay is famous for articulating the vision behind Smalltalk (and coining the term “object-oriented programming”), Dan Ingalls was the lead programmer and responsible for many features and design changes that took place as the LRG developed Smalltalk further. The first version of Smalltalk, the version that the children played with, was Smalltalk-72. (Each version of Smalltalk is named for roughly the year it was developed, with Smalltalk-72 coming out in 1972.) A running version of Smalltalk-72 is hosted at the Smalltalk Zoo here.
Smalltalk-72 had a number of limitations, and some minor improvements were made in the next version, Smalltalk-74. Two of the most important improvements were a virtual memory system called OOZE, developed by Ted Kaehler, and a new graphics routine called BitBLT, developed by Ingalls. BitBLT (pronounced “bit-blit”) was a new graphics primitive that copied pixels from one memory location to another in a fast and efficient manner. This operation would come to be known as “blitting.” This was used anywhere that bitmapped graphics needed to be quickly moved around, such as scrolling text or animation. In earlier versions of Smalltalk, both text and graphics had their own versions of this routine, duplicating functionality. Ingalls united them and reimplemented the routine in the Alto’s microcode to make it fast. Today, blitting operations are used everywhere, including in 2D video games, where it is the basis for animating sprites.
The next major version, Smalltalk-76, was an even bigger upgrade. Smalltalk-76 changed the design of the Smalltalk language, incorporating a feature that is often seen as synonymous with object-oriented programming, “inheritance.” It also introduced a syntax that could be compiled, adding keyword-labelled parameters, something that is familiar to today’s Objective-C and Swift programmers. For interested technical readers, Dan Ingalls’s paper “The Evolution of Smalltalk: From Smalltalk-72 through Squeak” has many more details.[1] Smalltalk-76 established the design that most modern versions of Smalltalk follow today.
Like 74 and 76 before them, the next two versions of Smalltalk at PARC were a minor update (78) followed by a major one (80). Smalltalk-78 was a port of Smalltalk-76 to the NoteTaker, a portable computer designed largely by Doug Fairbairn and powered by Intel 8086 microprocessors. This version of Smalltalk stripped out the OOZE virtual memory, and made key changes that facilitated portability in the next phase, Smalltalk-80.
An emulation of Smalltalk-78, which runs very similarly to Smalltalk-76, is hosted in the Smalltalk Zoo here.
Adele Goldberg, who by 1980 was the manager of LRG, led the effort to publicize and make Smalltalk available outside of Xerox PARC. The development of this public version, Smalltalk-80, was led by Dan Ingalls. Licenses were granted to four corporate partners who would develop Smalltalk to run on their own systems: Tektronix, DEC, Apple, and HP. A key change in this effort was to translate the use of special keyboard characters specific to Xerox hardware into ASCII standard equivalents. A special issue of Byte Magazine was devoted to Smalltalk in August 1981, with contributions by LRG members including Ingalls, Goldberg, Kaehler, Larry Tesler, and others. This publication had a big impact on the computer industry in spreading object-oriented programming ideas. For one example, this Byte issue motivated Brad Cox to combine Smalltalk concepts with the C programming language to create Objective-C. (See “A Short History of Objective-C” also “The Origins of Objective-C at PPI/Stepstone and Its Evolution at NeXT.”[2] Several books on Smalltalk, also by LRG researchers, were also published. (Smalltalk-80: The Language, Smalltalk-80: The Language and its Implementation, Smalltalk-80: The Interactive Programming Environment, and Smalltalk-80: Bits of History, Words of Advice.) Smalltalk-80 became the basis for all future commercial versions of Smalltalk. A version of Smalltalk-80 can be run here.
By the mid-1980s, Kay, like other ex-PARC colleagues Larry Tesler and Dan Ingalls, had joined Apple. In 1995, after a hiatus from the computer industry, Ingalls rejoined Kay’s group to produce a new, portable version of Smalltalk derived from the free Apple Macintosh version. Called “Squeak,” this version supported full color and contained many improvements, including an updated version of the BitBLT routine called “WarpBlt” that supported rotation and scaling effects. A cool example of WarpBlt can be found here. Squeak also supported a new effort to make a children’s educational computing environment, eToys. eToys can be run here. Squeak was released as open source in 1996, and remains in active development today. Thanks to Vanessa Freudenberg’s SqueakJS (an implementation of Squeak in JavaScript), you can now run most versions of Squeak in the Smalltalk Zoo here.
Over its almost 50-year history, there have been many versions of Smalltalk, many of which have had significant impacts on the wider computer industry. From today's perspective, in which mice and graphical user interfaces are ubiquitous, it can be difficult to imagine how radical the GUI was back in the 1970s. In addition, early PARC GUIs differed in key ways from the user interfaces we use today, be they Windows PCs or iPhones. For one, the dynamic, live nature of these systems, in which users were also programmers of their own systems and could change things immediately, at will, has been lost in favor of security and consistency. Text-based descriptions of these systems simply do not do them justice. They have to be seen. Recorded demos, such as those done by Ingalls and published by the Software History Center at CHM, do a much better job of capturing the experience.
It is this dynamic nature of Smalltalk, and a sense that the locked-down user interfaces of today have lost the flexibility and tinkerability of early Smalltalk that has motivated its creators to return to it and bring it back to life. Alan Kay’s complete vision of personal dynamic media remains unfulfilled in modern computing. In order to grasp that original vision and its revolutionary impact, one must experience first-hand Smalltalk’s dynamism, its “liveness.” To do so, one must be able to run a version of Smalltalk, play with it, make changes live and see how it works. Of course, most people don’t have access to a working Xerox Alto. Fortunately, for many years, Dan Ingalls has, in collaboration with others, created an emulation environment called LivelyWeb, implemented in JavaScript and running in any web browser, that can host various historical simulations of Smalltalk, from Smalltalk-72 all the way to Squeak. This is the Smalltalk Zoo: a menagerie of historical Smalltalk emulations running live in your web browser and accessible to all.
CHM, in partnership with Dan Ingalls, is proud to host the Smalltalk Zoo, which you can access at smalltalkzoo.thechm.org. The Smalltalk Zoo site is also the companion to Ingalls’ ACM History of Programming Languages 2020 paper “The Evolution of Smalltalk: From Smalltalk-72 through Squeak,” as the paper refers to the live Smalltalk emulations as examples. As the premier non-profit institution committed to the preservation of and access to computer history for years to come, CHM is the ideal place to archive and experience such historical software artifacts.
[1] Daniel Ingalls, “The Evolution of Smalltalk: From Smalltalk-72 through Squeak,” Proceedings of the ACM on Programming Languages 4, no. HOPL (June 12, 2020): 85:1–85:101, https://doi.org/10.1145/3386335.
[2] Brad J. Cox, Steve Naroff, and Hansen Hsu, “The Origins of Objective-C at PPI/Stepstone and Its Evolution at NeXT,” Proceedings of the ACM on Programming Languages 4, no. HOPL (June 12, 2020): 82:1–82:74, https://doi.org/10.1145/3386332.
Alto System Project: Dan Ingalls demonstrates Smalltalk
From Smalltalk to Squeak, lecture by Dan Ingalls
Yesterday’s Computer of Tomorrow: The Xerox Alto
Finding Aid to the Adele Goldberg papers
Goldberg, ParcPlace, and Xerox PARC videotapes and DVDs
Alto System Project: Larry Tesler demonstration of Gypsy
Larry Tesler Oral Histories:
Alan Kay: The Dynabook—Past, Present, and Future
Alan Kay’s University of Utah Doctoral Thesis. The Reactive Engine; and Flex
The Computer Revolution Hasn’t Happened Yet
Doing with Images Makes Symbols
Alan Kay Oral History (2008)
Back to the Future of Software, Lecture by Alan Kay:
40th Anniversary of the Dynabook, CHM Lecture by Alan Kay
Smalltalk-80 Virtual Image 2.2 / Virtual Machine 1.1 Atari ST
Smalltalk/V Windows Object-Oriented Programming System
Smalltalk-72 and 80 manuals:
Xerox Alto: