DeltaStreams and MC2

Göran Krampe goran at krampe.se
Tue Oct 2 11:58:55 UTC 2007


Hi!

> Hi,
>
> Giovanni asked me to contact the DeltaStreams team.

That would be Matthew Fulmer and me currently. :)

> I just wanted to
> inform you that I wrote some documentation about MC2:
> http://wiki.squeak.org/squeak/5624.
>
> MC2 is able to manage ChangeSets as well as PackageInfo. So, I'm
> unsure if DeltaStreams are really useful. I also published some notes
> on the Summer of Squeak blog.

I am not sure what you mean with "manage ChangeSets" but the gist of
Deltas (the streams of deltas aspect is actually the "next step" of it)
are IMHO:

- Class ChangeSet and friends implemented much more correctly.
- Are standalone objects (not just pointing at stuff like a ChangeSet
does) that can be loaded into the image and then "applied" and also
"reverted"!
- Works similarly to ChangeSet as a "recording tape" of system change
events. This means a Delta can also be used as a "true log" much like the
changes file is.


Now, there are more aspects to the above - for example, since they collect
enough information to be able to revert themselves they can also do "smart
things" when being applied/merged etc, that other systems may have a hard
time to do.

An example: if you change a class comment the Delta actually records both
the old comment and the new. Then later, when being applied in some
totally different image the delta can check that the comment being
replaced is actually the same as the old one, or alert the user if it is
not.

Yes, a trivial example - but the interesting part is to be able to help
with merging etc without extensive historical analysis - which should make
Deltas useful when moving code between radically different images - like
from Croquet into vanilla Squeak for example.

> Ask me questions if you want.

I know too little of MC2 to ask any good questions. :) IMHO Deltas are
intended to:

- Fully replace ChangeSet and friends fully covering all functionality but
simply much better and robust. Great for bug fixes, patches etc.
- Give us a useful "smarter" option for moving code between radically
different code bases.
- Give us new ways to deal with change logging in general.
- Give us the base for "Quilt"-like mechanisms. Also see Mercurial patch
queues, the same concept. This is very interesting and should be trivial
to do since Deltas can do full revert.
- Give us the basis for a new kind of "update stream", the idea of
tracking libraries and projects using Deltas instead of "MC snapshot
loading".

It is not meant to be an MC replacement and will not be an option for
"team based SCM" as MC and MC2 aims at since it doesn't do advanced
history and thus will never be able to do as sophisticated merging. BUT...
that is by design.

Also, it uses SystemEditor just like MC2 does (right?) and we have made
several fixes in SE while building DeltaStreams.

regards, Göran




More information about the Squeak-dev mailing list