Re: [RFC] 3.1 branching

From: Amos Jeffries <squid3_at_treenet.co.nz>
Date: Fri, 26 Sep 2008 05:28:58 +1200

Alex Rousskov wrote:
> On Thu, 2008-09-25 at 17:49 +1200, Amos Jeffries wrote:
>>> So how do we tell users to try something between 3.1.0 and 3.1.1? Refer
>>> to some specific daily snapshot? Kinkie+ scheme would use numbered beta
>>> releases: 3.1.0.1, 3.1.0.2, etc.
>>>
>>> I think numbered releases are better than daily snapshots for asking
>>> users to try something: "Argh! Somebody committed a bug 5 minutes before
>>> the snapshot we thought we would recommend to the user. Let's wait
>>> another day and hope that it does not happen again. People! Please do
>>> not commit anything because we need a clean daily snapshot!".
>> Thats all in trunk. We are talking numbering systems for the branches.
>
> I am talking about the freshly branched branch, not the trunk. Snapshots
> are fine for the trunk.
>
>> To which the only commiter should be the branch maintainer.
>
> This is a different issue, but I do not think that limiting access is a
> good idea until the branch becomes stable. When 3.1 is branched (which
> you want to happen soon), there will be a lot of cleanup work still
> going on. I see no reason to make that work go through a maintainer. If
> that is indeed a requirement, we should not branch 3.1 for now.

The merge queues need to be maintained manually. With this branch there
are going to be three to process and the more committers, the harder it
gets to sync them. Thats ignoring Henriks 2.x queues as well for the
cross-port features.

When I started it took myself and Henrik a good week combined to sync
just the HEAD and 3.0 queues after everybody committed fixes. It still
takes me a few hours to check every time Guido commits his Windows bits
to 3.0. There were a non-zero number of regressions on both HEAD and
branch encountered during the sync.

If other committers are needed I think some simple limits are needed to
make things easier:

  * branch commits MUST have a corresponding trunk commit. Branch gets
cherry-pick merge from trunk whenever possible. Back-ports if not.

  * anything comitted that you didn't write. remember the Author: tags.

  * bug fixes for 3.0 stable still go down through maintainer.

  * its hands off everybody except nominated maintainer once the stable
release is made. Further tweaking can be done in private sub-branches
and go in through trunk as normal when needed.

Agreed?

I'm minded to add 'only the developers who are responsible for a new
feature can commit'. But I know there will be others who can fix some
bugs too.
But please, work down through trunk as a first choice.

>
>> We can make a
>> new clean snapshot at any point if its really warranted, even to the point
>> of calling it a 3.1.0.1 'release' 3 times in one day.
>
> Yes, in Kinkie+ scheme, we can. You scheme does not mention 4-digit
> releases, even for the branch in a development stage.
>
>>> The extra "development release" layer in Kinkie+ scheme is only used for
>>> 3.1.0, never for 3.1.6 or other non-zero releases.
>> This is a contradiction of your earlier how do we tell users to try
>> something between 3.1.0 and 3.1.1?"
>
> I do not see a contradiction. 3.1.0.x releases are expected. 3.1.1.x
> releases are not.
>
>> The 'please try X' request is done as often after 3.1.1 as before.
>
> If 3.1.1 is stable, than the number of such requests would be low enough
> to be satisfied with patches and such. The next "official" trial point
> would be 3.1.2.
>
>> We come back to the problem of until squid is 100% major bug free for all
>> users (now and in future) it never actually qualifies for that 3.1.1
>> rating.
>
> Correct. That is why we want 4-digit releases to test how stable the
> branched code is. The more stable it gets, the more users will try them,
> and the more confident we will become that it is indeed stable. At some
> point, we will release 3.1.1 and mark the branch as stable.
>
>> Under my scheme, we would not grant such development test points a full
>> version number, they can get a rc1, rc2, etc (or as at present a
>> '20080912') if needed.
>
> That was your original proposal, yes. So Kinkie suggests 4-digit
> development versions. You now re-suggest 3-digit plus rcW for the same
> purpose. IMO, Kinkie's scheme is better because not all those snapshots
> are actually "release candidates". Again, it is better to leave complex
> metadata outside of the release version or tag.
>
>>>> People seem happy with the release approach and timelines, just not the
>>>> current bad naming scheme which implies releases are guaranteed STABLE
>>>> when in fact only a bug fix improvement.
>>> Well, there are several problems with the current scheme, but I think we
>>> should preserve the notion of a "stable" state of the branch. It is not
>>> a guarantee, but it allows users to select the right branch/version to
>>> deploy. In Kinkie+ scheme and in your scheme, the branch is considered
>>> stable when 3.1.1 is released. Before that, there are big known bugs.
>>> After that, there should not be any and those that appear should get
>>> higher fixing priority.
>>>
>>> The only significant difference I see is that you want folks to use
>>> daily snapshots during "development" stage of the branch and Kinkie
>>> wants sub-numbered releases.
>> Yes, pretty much.
>> If you look at the changeset pages for each 3.0 release so far, there are
>> fixes for some very major bugs in there as far as 3.0.STABLE7.
>
> Yes, and that is OK. Stability does not guarantee lack of bugs.
>
>> If we had run a whole cycle of 3.0.0.N (aka 4 years of testing PRE1 ->
>> RC2), we would have still probably have released 3.0.1 (aka 3.0.STABLE1)
>> with those bugs in. Or maybe gone straight from 3.0.0.16 to 3.1.0.1 this
>> month
>
> Again, there will be no 3.1.0.1. Once the branch is marked as stable, we
> stop doing intermediate development releases. That is my understanding
> of what Kinkie and Henrik want, anyway.
>
>> I don't realistically expect 3.1 to be perfect either.
>>
>> I'd rather have fixed point releases (3.0.1) based on some known workable
>> code, and a pile of sequentially tagged bundles of 'maybe dodgy code' on
>> top for new un-tested bug fixes.
>
> Sure, the only need that we need to address for those bundles during
> non-stable branch development is that the bundle is not controlled by
> time, but by a human decision to tag/release it.
>

I'm slightly more than half-convinced. It's much of a sameness as you
pointed out. I'm willing to trial it and see how things go for 3.1.

Amos

-- 
Please use Squid 2.7.STABLE4 or 3.0.STABLE9
Received on Thu Sep 25 2008 - 17:29:22 MDT

This archive was generated by hypermail 2.2.0 : Fri Sep 26 2008 - 12:00:05 MDT