ThingLab was an application originally written in Smalltalk-76 by Alan Borning as part of his PhD dissertation work. It was a constraint-based simulation laboratory, which allowed users to construct such things as demonstrations of geometric theorems, physics simulations of e.g. electrical circuits or bridges under load, graphical constraint-based calculators, and graphical layouts. It is in many ways a further development of Ivan Sutherland's Sketchpad, and shares with Sketchpad the goals of using constraints for interactive graphics, and graphical construction of constrained objects. It extends Sketchpad by adding additional application domains, providing support for a "kit-building kit" metaphor, and integration of constraints with part-whole hierarchies and Smalltalk's class hierarchy.
The Smalltalk-78 interpreter itself is fully functional, and fine for demos, although with the occasional bug (save often). Smalltalk-78 itself was also a demo, but it was derived from Smalltalk-76, which was a real production system, in daily use by all the members of the research group. As a result, the underlying code (perhaps with additional features restored from ST76) is more amenable to being the basis for a solid, working system. However, to be truly ready for release in a way that would showcase this historic system, it would need some additional work, both on fixing remaining bugs and on restoring functionality, and more importantly by embedding it in an active essay.
A few fixes to click delays and event timestamps have been made since the previous summer.
- http://www.cdglabs.org/thinglab/ (standalone version of ThingLab)
- http://lively-web.org/users/bert/Smalltalk-78.html (the Smalltalk-78 interpreter; click the "load image" button at the bottom and select "ThingLab" if you want ThingLab rather than ST78 alone)
- http://constraints.cs.washington.edu/ui/thinglab-tr.pdf (the original Xerox PARC tech report on ThingLab)
- http://videosrv14.cs.washington.edu/info/videos/mp4/general/ThingLab_Alan_Borning.mp4 (video of a 1978 Xerox PARC presentation)
- http://vpri.org/html/writings.php (for documents on Smalltalk-78 itself—set the search criterion to "papers for Historical Context")
Alan Borning and Bert Freudenberg, with work on resurrecting the underlying Smalltalk-78 system by Bert Freudenberg, Dan Ingalls, Ted Kaehler, Yoshiki Oshima, and Alan Kay
The Smalltalk78 VM is included here using
git subtree. This means you can freely modify stuff in the St78 directory and commit as usual.
Only if you want to update to the latest VM code, use:
git subtree pull --prefix=St78 https://github.com/bertfreudenberg/Smalltalk78 master --squash
And to push local modifications back upstream, use:
git subtree push --prefix=St78 https://github.com/bertfreudenberg/Smalltalk78 master