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

Trygve Reenskaug trygver at ifi.uio.no
Sun Jan 30 14:52:53 UTC 2005


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


-- 

Trygve Reenskaug      mailto: trygver <at> ifi.uio.no
Morgedalsvn. 5A       http://heim.ifi.uio.no/~trygver
N-0378 Oslo           Tel: (+47) 22 49 57 27
Norway





More information about the Squeak-dev mailing list