Update stream ideas for 3.8 (was Re: Squeak 3.8 status)
Doug Way
dway at mailcan.com
Wed Aug 11 05:10:11 UTC 2004
On Tuesday, August 10, 2004, at 03:10 AM, Andreas Raab wrote:
> Hi Doug,
>
> Some thoughts:
>
>> 1. Start up the separate "internal" update stream as Michael
>> suggested.
>
> Please be clear about what you're trying to achieve with this step.
> All I'm
> reading under point 1. is techno-babble about the mechanics but no
> reason
> *why* we want to have that update stream[*]. And making an extra update
> stream for the update stream's sake will only increase perceived
> "latency"
> of getting fixes out. If there isn't a reason for having an extra
> update
> stream then please don't do it for bureaucratic reasons only.
>
> [*] Understand that what I'm asking for here is some public
> acknowledgement
> that "we are introducing the extra update stream because ... and the
> extra
> update stream addresses this by ..." (for whatever values of ... you'd
> like)
Yeah, right before I sent out that message I realized I hadn't given
much explanation for why we should make these changes, but it was
getting late and I wanted to get the discussion started.
Daniel summarized the "why" pretty well in his message, but I'll add
some more.
With point 1, the main idea is that this would enable points 2 and 3.
Well, mostly point 3 actually. If a small group of people (perhaps
called "committers", since they're not necessarily "harvesting" other
people's changes)... if these committers have the ability to post their
own updates directly without any review from anyone else, this will
probably make the update stream more unstable, with major bugs
appearing occasionally.
The idea is that adding an additional "unstable" update stream will
allow these major bugs to be fixed before they appear in the more
widely used regular/"testing" update stream. It gives some insulation
for people updating their images from having an untested update wreak
havoc. This is why Squeak Central had a separate internal and external
update stream, I assume.
Now, having read the rest of this thread and thinking about it a bit
more, I'm not totally convinced that the separate update stream is
absolutely necessary, even if we do #2 and #3. If we enforce (via the
broadcast mechanism) that the ConflictChecker is run, and especially if
SUnit tests must pass, before an update can be broadcasted, we could
arguably avoid "major" bugs from occurring in a single update stream.
I think SUnit tests take a minute or two to run right now... that's
probably reasonable overhead when broadcasting an update. (And if
several updates are broadcasted at once, SUnit tests still only need to
be run once for all of them.)
Hm, then again, one problem with having a single update stream and
various committers broadcasting updates at various times, is that
updates will not appear in "bunches", with an [updates] message on
squeak-dev, with an obvious point for Bruce to create a new alpha image
to upload to the ftp site, etc. Instead, updates may trickle in
constantly. Maybe this isn't a big problem, though.
(Eh, "committers" is perhaps not the best term either, as it implies
committing code to a source code repository (e.g. CVS or Monticello).)
>> 2. (This one is my suggestion.) If we have this unstable update
>> stream, posting updates to this stream doesn't have to be as
>> coordinated as with the regular stream. So, we could allow harvesters
>> who [approve] an item in the BFAV to also immediately "broadcast" that
>> item as an update to the unstable stream. (The broadcasting mechanism
>> to do this is also already there from the SqC days, but needs some
>> fixing.)
>
> In which way do we expect this to address what issue(s)?
This reduces the time between an item being approved and its appearance
in the update stream. It's typically 1-2 weeks right now, and this
would be reduced to 0.
Also, it distributes my workload better, so that I don't act as a
bottleneck for updates to come through. (It's probably not sustainable
for one person to keep doing this for too long anyway...)
> [...some more technicalities deleted...]
>
>> 3. Let some harvesters/guides have direct "commit"/broadcast ability,
>> without going through the BFAV approval process, as some have
>> suggested. However, I think this should be limited to only certain
>> types of updates, probably just fixes and smallish
>> refactorings/cleanups.
>> New enhancements or major redesigns would still need to go through
>> the approval process.
>
> To what extend do the above restrictions model what is currently
> practice in
> any of the "external" packages? ("external" in quotes simply because
> they
> are "official" and as such I believe pretty much the same rules apply
> to
> them as to the updates) As far as I can tell, there have never been any
> discussion about decisions made by any of the "official" package
> maintainers. Is the goal here to restrict (and more conservatively
> manage)
> changes that are "in-image" compared to changes that are "ex-package"?
> (this
> is NOT a trick question btw)
Well, the above restrictions model is a very tentative idea, it
probably need more thought/discussion. Basically, I thought we'd want
something in between the current "extremely restrictive" model (can't
self-approve anything except really important/trivial fixes, and
comments), and "anything goes".
True, external/official packages are sort of "anything goes", in other
words, the package owner can make whatever changes he/she wants. But I
think the base image is different, mainly because it hasn't been
divided up into ownership areas (yet). So I think "anything goes"
would be a bit much. We wouldn't someone to arbitrarily decide "hey, I
don't like the way the window titlebars look, I'll redesign them", and
broadcast the change to the update stream. Unless they're "in charge"
of that area, perhaps, but for now, the base image is not divided up
yet.
But on the other hand, I think it would be good to be less restrictive
than we are now, e.g. allow someone like Ned to post fixes without
waiting for review, for a more rapid/xp-like development pace, with
faster feedback. This is the core idea of point #3.
Perhaps we do just need to move ahead with dividing up responsibility
inside the image as much as possible (i.e. Goran's TNFR project), but
still there will be some areas such as the kernel which will be
maintained by committee. And then sometimes fixes/enhancements will
span across several areas of the image. Whew! Not really a simple
problem.
>> So... how do these ideas sound?
>
> Somewhat half-baked, if you ask me ;-) It depends on where we want to
> steer.
> The above proposal(s) seem not directly to address any of the issues
> that
> have been raised (or if they do I couldn't find the relation).
Well, my idea of the degree of restrictions of what committers should
be able to commit directly is pretty half-baked, I'll admit. Also, my
original idea of "2-4 weeks" between moving updates from the unstable
to the testing stream (if we use two streams) was pulled out of thin
air.
But I think the main ideas of #2 and #3 are reasonably sound.
>> #2 and #3 would hopefully remove me as the bottleneck at the update
>> stream, which would be a bit of a relief at this point... ;)
>
> Well, if that's your reason to propose them why not put it forward that
> way - I think everyone will agree that it's useful to ease your (really
> good) work.
True. This was not originally the main reason, but it turns out to be
an important side benefit. The main reason is still speeding up the
development cycle/testing feedback loop.
(Leaving the BFAV/Mantis and Monticello discussions for the other
threads)
- Doug
More information about the Squeak-dev
mailing list
|