Musings about modularity and programming in the large

Andreas Raab andreas.raab at
Thu Jan 24 20:21:53 UTC 2008

itsme213 wrote:
>> I'll have to admit I never liked this model too much. One of the killer 
>> features of the Smalltalk-80 model is that it allows you to add features 
>> to the meta class easily (by just clicking on the meta-tab in the browser) 
>> be that class instance variables, instances creation, utility, example, or 
>> test methods.
> I agree that is extremely convenient. But could it be thought of as good 
> tool / browser design? Even on Cointe's model, could a tool that knows it is 
> editing a class make it just as painless to
>   1. select a metaclass
>   2. create a metaclass on the fly
>   3. do 1 & 2 with on-the-fly customizations to ((meta)class)instVars, 
> methods...

Not unless you really recreate the full ST-80 model. There is a ton of 
subtleties in the design which is hard to recreate properly. For 
example, a while back I wrote a self-contained metaclass kernel (if you 
search the archives you may find it) but as soon as you introduce new 
Metaclasses in the structure you are breaking the inheritance of the 
metaclass hierarchy. And while this may be acceptable in a few 
well-defined situations (like for bootstrapping a complete 
self-contained kernel) it's certainly nothing that one would like to 
deal with in daily work.

   - Andreas

> (Ruby's instance-level customizations do things similar to 1 & 2; our 
> instances would be classes).
> I can imagine (newbie alert :-), a similar "class" tab with similar 
> convenient behaviors. Plus the added benefit, specially for those interested 
> in meta-modeling and DSLs, of all full access to any levels of "metaclass" 
> definitions.
> Sophie

More information about the Squeak-dev mailing list