OOPSLA'96Business Object Workshop III


"Squeak" and Meta-Object Protocols

Why enhanced meta-object protocols are essential support for reusable distributed components on the Internet ...


At the Squeak Birds of a Feather session I discussed the need for a component model in Smalltalk that would support the use of Squeaklets based on different class hierarchies and perhaps even different virtual machines. "But that would destroy the beauty of Smalltalk" was the response.

Alan Kay said in the OOPSLA'97 keynote speak that Java would self destruct without a meta-object protocol like CLOS. Smalltalk has a sort of meta-object protocol. This note explains why this is true, but also why the meta-object protocol in both CLOS and Smalltalk 80 is insufficient for reusable distributed components on the Internet.

Yourdon reported in 1995 that Smalltalkers got, on the average, 20% reuse.  Capers Jones reported that leading COBOL teams are now getting 35% reuse on the average. Clearly Smalltalkers have a way to go. The preoccupation with the beauty of the tradition Smalltalk sandbox is turning Smalltalk 80 into a legacy system because the basic requirements for reuse are some of the basic requirements for distributing and interacting with multiple components with heterogeneous base classes. The Internet amplifies the urgency of these requirements. Any system of the future that does not deal with them is a non-starter for serious work.

A component model and the meta-object protocol are both related to reuse as explained in the first paper in the OOPSLA'97 Proceedings:
Menzini, Mira [1997] Maintaining the Consistency and Behavior of Class Libraries During Their Evolution. OOPSLA'97 12th Annual Conference Proceedings. ACM Sigplan 32:10:1-21.

Mesinin quotes Minsky at the start of his paper on general purpose properties to be propagated from superclasses to inheritors:

a) The declaration that certain methods, a whole class, or a set of classes, should not be overridden, henceforth called the "non-override property."

b) The declaration that certain methods are abstract in the base module and should be implemented by any inheritor class that gets instatiated, henceforth called the "required property."

c) The declaration that certain classes build a "cluster", which means that while classes belonging to the cluster are allowed to invoke any of each other's methods, they provide a common interface to the rest of the system, i.e. classes outside the cluster invoke only methods present in this interface.

d) The declaration that a cluster of classes build a "kernel", in the sense that their implementations should be independent of the rest of the system and have exclusive access to some lower-level functionality, etc.

To run over the Internet with heterogeneous Squeaklets, at least "clusters" are required. If the VMs are different, "kernels" are required. These features are the major advantage to the evolutionary design of Squeak. If they are not present, evolution will be crippled, particularly emergent evolution of distributed heterogeneous systems on the Web.

Mesinin argues that meta-programming is essential to establish contracts in an object system that constrain class behaviors to support reuse and interoperability. Some languages hardwire features, such as "finalize" in Java or "frozen" in Eiffel. These are very limited and lead to systems that are difficult to understand (both crippled and deaf).

Minsky's recent work shows that meta-object protocols of CLOS and Open C++ are inadequate because the code in the MOP is distributed among individual classes and cannot formulate rules on the interaction between arbitrary sets of classes.

Mesinin extends the metalevel of Smalltalk 80 to provide the support for smart composition of classes in "SmartTalk." Future versions of Squeak need to support this level of functionality if Squeak is to be "truly better than Smalltalk," a principle espoused by Alan Kay's team at Walt Disney.


OOPSLA'96Business Object Workshop III