Roads Less Taken

06 Sep 09

DeltaStreams boost in Brest

Here at ESUG in Brest DeltaStreams has gotten a real "boost". Igor Stasenko has joined the effort and is busy whipping up a user interface using the Toolbuilder API so that it will work in most Squeak flavours (and perhaps other Smalltalks too) and I have been busy getting the rest of the code in a better shape.

The presentation I gave was very well received (I think), although it collided with the Seaside tutorial which meant that a lot of people I would have liked to see it was busy on the other track. But interest is high, and not only from Squeakers but also from developers using Smalltalk/X and VisualWorks!

The immediate results from Brest are:

  • Tirade has been fully hooked into Deltas which means that Deltas now have a file format and can be serialized/deserialized using that.
  • DeltaStreams now load very easily into latest Squeak "trunk" using an Installer based script, instructions below.
  • Igor is building a Toolbuilder based user interface similar to the changesorter tools. After just a few hours he has something "up and running" and I suspect it will gain features over the next weeks rather quickly. NOTE: Matthew Fulmer made the first UI for Deltas but Igor and I wanted to build something different.
  • We have been talking to Pharo people about what kind of APIs will be available in Pharo that we can depend on for Deltastreams and AFAICT Toolbuilder and SystemEditor are meant to be available in Pharo.
  • Lots of tests cleaned up, we are almost in the full green with over 300 tests.
  • Handling of DoIts has been added. A tricky problem.

Below follows an instruction for getting started HACKING on the DeltaStreams package for Squeak. If you are into meta programming, advanced source code management and Squeak, it might be interesting. Thus it is not an instruction for users (it is not really usable yet anyway) nor for Squeak beginners.

Step 1

Grab an image, 3.10.2-7179 should be fine but we are now working in trunk. It might be nice if you picked some other important target for DeltaStreams, like say Croquet, Cuis or Pharo. :)

Step 2

Add the repo for DeltaStreams on SqueakSource:

        MCHttpRepository
        location: 'http://www.squeaksource.com/DeltaStreams'
        user: ''
        password: ''

Step 3

Open the repository and load the latest version of the package called DeltaStreams-Installer. Then execute the class side script by executing DSInstaller install. If all was loaded you will get a nice greeting!

NOTE: Several packages in the repository are not loaded by this installer script. Some lines of development has not been pursued further by me (Primarily ICS, the first browser UI and some more things) but that does not mean that Matthew or someone else can port that code forward and make it work again :)

Step 4

Run some tests. Currently there are some tests failing. We do not like this "state" so I am in the process of cleaning up, fixing what I can fix and throwing out red tests I can’t understand. We should always be green, otherwise we don’t know if we broke something. These are the results in my image today:

Prerequisites:

        SystemEditor-Tests: 11 failures (have not looked at it, was the same in 3.10.2-7179)
        Tirade-Tests: green
        SystemChangeNotifications-Tests: green

DeltaStreams:

        DSDeltaApplyTest: green
        DSDeltaCreationTest: green
        DSDeltaAntiTest: green
        DSDeltaCopyTest: green
        DSDeltaTiradeFileOutTest: green
        DSDeltaLoggingTest: green
        DSDeltaRevertTest: 6 failures (related to dangling method categories, these we should fix!)
        DSDeltaTiradeTest: green
        DSDeltaTiradeTest: green
        DSDeltaValidationTest: red, red, red!!! (I need to read up on validation, Matthew made it)
        DSDeltaValidationTestSystemEditor: red, red, red!!! (same here)

Step 5

Read some class comments and code. Start with DSDelta and the DSChange hierarchy.

Step 7

Grab a big cup of coffee, save your image from time to time (although the code generally does not make it crash…). Ask us whatever you like.

regards, Goran & Igor

Powered by RubLog