Squeak is an unsuccessful open source project (was RE: Let us face reality)

Milan Zimmermann milan.zimmermann at sympatico.ca
Sun Jan 30 22:22:34 UTC 2005


Trygve,

yes! one note/question - do you think using Stef's (at all) Traits would 
replace the need for interfaces and/or delegation or do you see something 
inheritent in having interfaces that Traits would not cover (because I assume 
Trait's provide what delegation can give us). [Well in any case it's time for 
me to start playing with Traits, loaded the new version this wekk but not 
time ...]

Milan



On January 30, 2005 09:52 am, Trygve Reenskaug wrote:
> Hear, hear!
>
> Subclassing is generally evil with two exceptions:
> 1) When subclassing a stable core.
>     The only way for core classes to evolve is by creating
>     new classes with new names.
> 2) When a developer creates super- and subclass simultaneously.
>
> The Squeak programming environment needs to be extended with support
> for  Interfaces. A great deal of what we today do with subclassing should
> be done with delegation.
>
> Finally, the notion of a Component as an object that encapsulates other
> objects looks promising for program sharing; more robust than the code
> based Package.
>
> Cheers
> --Trygve
>
> At 11:20 30.01.2005, Peter wrote:
> >[...]
> >-- another way --
> >
> >1. Throw away the notion that you can depend on that big, juicy class
> >library.  You can't, and it's a mistake to try, because it will evolve
> >faster than you can keep up and your code will rot.
> >
> >2. Decide on a very small, stable core.  Collection and number classes may
> >be a good start.
> >
> >3. Introduce a proper notion of interfaces for these.  Freeze the
> >interfaces, either formally or by people avoiding modifying them.
> >
> >4. Build up from this core.  In each package - for example, the MVC UI -
> >define and freeze interfaces.  Document all the dependencies.  Ensure each
> >package can be loaded into an image that only has its dependencies loaded;
> >and ensure that a package *cannot* alter any other package.  Yes, this
> >means that nobody except the maintainer of the core can touch Object, for
> >any reason, no matter how apparently noble.
> >
> >We will then have a basis for a system that might begin to satisfy (2)
> >above.  (1) will only happen when another (non-SqC) group of people get
> >together and decide to use Squeak for a project.  The larger community
> >cannot force it.
> >
> >Note that by making a system that is suitable for parallel development by
> >many developers, we have thrown away most of the things that make Squeak
> >such a productive system for developers.  We have moved away from the
> >concept of an exquisite personal computing environment to something much
> >more rigid and prescriptive.  This may put people off adopting such an
> >approach, but I think stability and flexibility are mutually exclusive
> > goals.
> >
> >-- conclusion --
> >
> >Due to Squeak's origin as a personal computing environment, it has never
> >had a way of allowing a large group of developers to work on it and re-use
> >each others' artifacts.  Current efforts are attempting to change that,
> >but there is no appetite for throwing the image away and starting again
> >with a small core - a very hard task, made harder by the fact that all the
> >development tools are in-image and need a larger core.  So the
> >architecture of Smalltalk itself is against us.  Newcomers come in,
> >realise that they can change the world in Squeak, do so, and then get
> >discouraged when their code no longer works in the next minor version.  So
> >they put Squeak away - nice toy, unsuitable for me - and go back to perl,
> >or Java, or .Net, or something that has a stable core and where their code
> >won't break in the next minor revision.  And it takes them more effort to
> >develop in that environment, but *much* less effort to maintain.
> >
> >I admire Craig Latta's work on small images that do not contain a
> >development system.  If we are ever to build a Squeak that allows many
> >developers to work in parallel, Craig's work - or something very similar -
> >is going to be pivotal, as the *only* way to build and test the core parts
> >of such a system.
> >
> >I'll leave you with one last puzzle: why does majorShrink exist?  Why
> >isn't it majorGrow?
> >
> >                 - Peter




More information about the Squeak-dev mailing list