Delta streams status (was Re: monticello question)

Matthew Fulmer tapplek at gmail.com
Wed Jan 23 00:08:30 UTC 2008


On Tue, Jan 22, 2008 at 06:29:15PM +0100, Jason Johnson wrote:
> Is there a blog some where that shows the status of Delta streams?  I
> haven't heard anything in a while about those and I'm very interested
> in how it turns out.

I wrote a post about it a while ago on my blog:
http://mtfulmer.wordpress.com (I'm a horrible blogger). I had
about a 2 month period of zero activity last year after I
released 0.1 (which is why I made a release then).

I am actively working on DeltaStreams in my spare time again
(about an hour a day on  the bus). and plan to release this code
as 0.2 when I anticipate another lack of spare time.  The
biggest feature I added since I wrote that blog post is change
validation. I added three types of validation to changes:

1. Orphan - The class this change refers to should be there, but
   isn't
2. Conflict: this change assumes a prior version that is not as
   expected.
3. Valid: Does this change even make sense (does the superclass
   or shared pool exist, etc)

I added 136 unit tests to make sure these checks work as
expected and they all pass.  Now I am working on making the UI
be  able to display deltas in a reasonable manner, like show all
removed classes in lower-contrast gray, highlight conflicts, ask
for confirmation when applying unclean changes. Currently I am
having  bugs related to my buggy SystemOrganizerEditor, which
makes some classes that the delta includes changes for not show
up in the UI. Next I am going to implement more filtering of
changes (only the "select changes for this class" actually
works. I would like to do that on a package, category, protocol,
and method level too). Next will be manipulation of deltas
(add/remove changes manually), and Monticello integration (try
updating this package to a new Monticello version). The last one
will probably require a rewrite of SystemChangeNotifier to be
extensible. I will use  Announcements in this rewrite. 

All these changes will  bring  deltas up to the usability level
of change-sets. At this point, I will probably make a release
and try to get it into LPF as an alpha-level addition. It should
be usable and stable enough to replace change sets at this
point, even though delta streams are not even implemented yet.

After that point, I will need to start implementing
DeltaStreams.  First, I will need a much better file-out format
for deltas (something forward-compatible like chunk format, XML,
Atom, or Spoon).  the current file-out format is a
version-specific binary DataStream format that is not compatible
across releases. After that, I will start implementing Delta
stream, which will allow the remote subscription to various
update streams to work. 

Releases are unscheduled. I will probably make them when I
either anticipate a lack of spare time or when I anticipate that
a lot of work will be needed getting the next step ready before
steady bug-fixing can resume. So, 0.2 will likely be made just
before Monticello integration in the above schedule.

-- 
Matthew Fulmer -- http://mtfulmer.wordpress.com/
Help improve Squeak Documentation: http://wiki.squeak.org/squeak/808



More information about the Squeak-dev mailing list