Squeak Roadmap ...

Keith Hodges keith_hodges at yahoo.co.uk
Fri Sep 21 14:51:14 UTC 2007


For the way ahead I still think we are limited by our tools, which is 
what I thought when 3.10 started.

The improved testing philosophy that has been part of the 3.10 release 
has been a start, but squeak is a multi-platform, multi-configuration 
testing problem, and so I feel that more tool support for this is needed.

To work towards solving this:

1. Launcher - provides the ability to launch, configure, install 
packages and test different images from the command line.
2. Installer - provides the ability to install packages/fixes from 
whatever sources
3. SUnit-improved - provides
    a. the ability to mark tests as specific to vm or image release, or 
platform (e.g. mark a test for 3.10 or greater) so that test suites can 
be more generic.
    b. filtering based upon the above (e.g. exclude tests that are not 
expected to work in this vm/image version or platform etc)
    c. the ability to time tests and categorize them so that all of the 
fastest tests can be run first to get greater coverage sooner.
    d. Non-GUI test runner, which generates output to files, for testing 
older/smaller/gui-less squeak configurations.

I think that the missing part in all of this is the bit that defines 
what exactly is to be built and tested. I have called this part Bob (the 
Builder). I wrote a version of Bob in 'ruby' which uses a public wiki so 
that the community can define the "What". I think that the next version 
of Bob will use a/some Monticello packages to define the "what", in this 
way the "what's" are subject to source control etc.

The above represents just the tools for building and testing. As for 
actually working on the next version, the bottleneck for working on the 
image has been the package loading/ management tools. i.e. Monticello 
and changesets etc.

I still believe in managing the kernel image in packages. Although 
changesets have their place for incremental changes, I still think that 
at the end of the day a subsystem should be 'deliverable' as a package.

The problem with this approach so far is that the tools just have not 
been up to it and have caused major headaches for recent release teams. 
I think that future releases will struggle to be more than minor 
incremental bug fixes until this is actually solved. The new 
DeltaStreams initiative is a second vote for better tools to address 
this area.

Monticello 1.5 is much better at managing Packages with overrides and 
extensions than 1.0.This provides the basis for actually teasing things 
apart into clearer packages. But we have a couple of bugs to find, and 
when we have SystemEditor working for true atomic loading we should 
finally have the basis for managing the image in packages.

Once the tools are in place we will be able to spec out a road map (or 
two) using "Bob" containing

a. bug fix collation
b. modularization and removal of bits
c. new features etc

Then volunteers can work on their bits and Bob can perform the 
integration test cycles.

This approach differs from the DeltaStreams idea where anyone can 
publish or subscribe to many delta streams. The idea here is to be able 
to plan a new release up front, to divide up the work required to 
acheive it and to formally integrate the parts back into a coherent 
tested whole (+ packages).

my 2p

Keith












More information about the Squeak-dev mailing list