Update stream ideas for 3.8 (was Re: Squeak 3.8 status)

Doug Way dway at mailcan.com
Wed Aug 18 06:36:39 UTC 2004


(should have responded to this one earlier...)

On Tuesday, August 10, 2004, at 06:48 AM, danielv at tx.technion.ac.il 
wrote:

> ...
>
> Having multiple publishers to the regular stream is a significant
> change, in that it would remove the role Doug is playing during the
> alpha stage. Doug, what responsibilities exactly would this devolve 
> unto
> the approvers?

Early on I was doing a bit more manual work, but it now more or less 
boils down to a few things:

- Run the ConflictChecker and if there are one or two simple conflicts, 
fix them.  If there are a lot of conflicts (which is rare), don't 
incorporate it and kick it back to the original author to fix the 
conflicts.
- Check for a few other things like missing method timestamps, 
existence of linefeeds. (this is actually done by the ConflictChecker)  
Awhile ago, I would also try to add a quick preamble to the changeset 
if one was missing, but I haven't done that lately.  (This should be 
automated so that a preamble must be present for approval.)
- Just a final sanity check test after the soon-to-be-updates are 
installed in the image.  Opening a browser, opening SM and installing 
one package.  Basically makes sure an update doesn't totally break the 
image.
- An extra person taking a look at each changeset (just the preamble 
really) for several seconds to make sure e.g. something doesn't go in 
to re-fix a problem which was just fixed a few updates ago.  Only I 
would usually notice this since I look at every update. (a somewhat 
rare problem)

The first two parts could be spread to multiple updaters pretty easily 
by building the ConflictChecker into the update-broadcasting mechanism. 
  And also adding some additional automated verifications would be good 
(changeset preamble must exist, any newly defined class must have a 
class comment, etc).

The final sanity check might not be done by everyone.  But having two 
update streams might compensate for that.  Or, running unit tests would 
more than compensate.

The "extra person looking at each changest" may or may not be all that 
important.

> alternately, if we go for two streams, what do you think
> should happen between the approver publishing a fix to the unstable
> stream, and you releasing the updates to the main stream?

Good question.  Perhaps this is where SUnit tests should be run, at a 
minimum, to make sure nothing new has broken since the last release of 
updates to the main stream.  Otherwise, just a vague feeling that 
things are "stable", would be a reason to move the updates to the main 
stream..  (I agree that deciding exactly when to do this could be a bit 
of a headache sometimes.  Perhaps this task could be done by more than 
just myself.)

> Another question is what happens during beta/gamma. Until now, 
> approvers
> would simply continue their work, and Doug could implicitly ignore
> "too-alpha" approved changes until the next cycle begins. Maybe the
> approvers should have both options "approve"/"approve and publish", and
> would simply refrain from publishing non-fixes during beta/gamma.

Yes, good question.  Some publishers would probably occasionally forget 
that we're in beta and publish a too-alpha change.  Er, maybe 
publishing rights would be disabled during beta?  Er, ah, or the 
internal stream could track the next alpha, or something.

- Doug




More information about the Squeak-dev mailing list