Distributed Smalltalk

Smalltalk is an object-oriented programming language and highly interactive uniformly object-structured programming environment, originally developed for the Xerox family of personal workstations. The Smalltalk programming environment supports a single user on a single processor in a single object address space. Distributed Smalltalk extends the Smalltalk system to support the interaction of many users on many machines. It provides communication and interaction among geographically remote Smalltalk users, direct access to remote objects, the ability to construct distributed applications in the Smalltalk environment, and a degree of object sharing among users. Applications of Distributed Smalltalk include mail systems, remote computation servers, remote file servers, and collaborative software development. The distributed aspects of the system are largely user transparent and preserve the reactive quality of Smalltalk objects.

One of the interesting aspect of the work on Distributed Smalltalk was the interaction of reactiveness and inheritance, two system properties important to the manner in which users interact with the Smalltalk environment. A system is reactive to the degree that objects in the system can be easily presented for inspection or modification. Smalltalk is highly reactive in that all objects in the system can be so presented. Inheritance is a fundamental property of Smalltalk that allows objects to acquire behavior from other objects. In designing Distributed Smalltalk, we found that the interaction of inheritance and reactiveness was a major source of difficulty and that this interaction had significant impact on the design of a distributed system. Neither inheritance or reactiveness scaled well from a single-user, single-address-space environment to a multiple user environment. We observed that the manner in which these mechanisms were supported affected the user interface, object mobility, and system performance and reliability.

Distributed Smalltalk demonstrates several novel techniques that are generally relevant to the implementation of distributed systems. These contributions include:

bulleta remote naming mechanism that does not impact local performance (transparent forwarding),
bulleta garbage collector that cooperates with, rather than replaces local collectors (collection by prevention),
bulletthe concept of surrogate objects as a flexible and transparent protection mechanism, and
bulleta remote message handling protocol that supports heterogeneous hosts.

Distributed Smalltalk Publications

bulletJ.K. Bennett. Experience with Distributed Smalltalk. Software Practice and Experience, 20(2), 157-180, Feb. 1990.
bulletJ.K. Bennett. The design and implementation of Distributed Smalltalk. In Proceedings of the Second Annual Conference on Object-Oriented Programming Systems, Languages, and Applications, pp. 318--330, Orlando, Florida, Oct. 1987.
bulletJ.K. Bennett. Distributed Smalltalk: Inheritance and Reactiveness in Distributed Systems. PhD Dissertation. Department of Computer Science, University of Washington, 1988.