Re: [RFC] 3.1 branching

2008-11-04 Thread Kinkie
Hi all,
   while the new convention is agreed-upon and fixed, I'm refreshing
this discussion to point to a quite insightful article by Linus
Torvalds on the releases issue:
http://torvalds-family.blogspot.com/2008/10/on-making-releases.html

Ciao!

-- 
/kinkie


Re: [RFC] 3.1 branching

2008-09-26 Thread Henrik Nordstrom
On fre, 2008-09-26 at 13:25 +1200, Amos Jeffries wrote:
 logdaemon, internal redirectors, and netdb are big component changes. But
 not squid-wide.

Yes. Isolated feature changes. Number of lines added/deleted does not
matter much, the complexity is in the amount of changes to existing
code.

 The cleanup merger is much closer to squid-wide surgery as all file
 includes get touched in some way. That HAS to wait for reformat, layout,
 and trunk to settle post-branch.

You may want to wait with that until 3.1 is stable. But it depends on
how much code is moved around. If it's mainly include file changes then
probably it won't matter. Haven't followed that project closely so I
really can't comment on the nature of the changes.

A reasonable complexity estimate is the number of change chunks /
(number of files changed + 3) I think.

 We seem to have an agreement. Now lets get back to code and bug eh?

+1

Regards
Henrik


signature.asc
Description: This is a digitally signed message part


Re: [RFC] 3.1 branching

2008-09-25 Thread Kinkie
Hi guys,
   I'll be off the Net for the next 3 days, and thus I won't
participate in the follow-up to this discussion.

See you on Sunday!

  Kinkie


Re: [RFC] 3.1 branching

2008-09-25 Thread Henrik Nordstrom
On tor, 2008-09-25 at 15:15 +1200, Amos Jeffries wrote:

  So we have
 
  1. Branch when trunk is considered a suitable startingpoint for getting
  to stable, and tag a x.y.0 release at the branchpoint (or at least set
  this version in configure.in).
 
  2a. Release X.Y.0.1 when ready for testing
  2b. Release X.Y.0.w as code gets better, w  1
 
 
 Don't forget the next step after (w1  w12) is:
Branch X.Z.0 

Ofcourse. trunk continues it's live and 1 restarts when suitable.

The .0 releases is not a requirement, but may be useful depending on how
the release matures after the branch, which heavily depends on the state
of trunk at time of branching.

But as soon as you branch the version needs to be labelled X.Y.0,
with .1 being the STABLE release. But there does not NEED to be
any .0.x release made at all if you as release maintainer do not want
to, 

 So why do we really need an extra .0 sitting on the end wasting space?
 
 I have no intentions of maintaining anything other than:
   trunk + latest X.Z.n + most stable X.Y (if X.Z.n  X.Z.1)

Nobody has said anything else.

 The back-port workload becomes just too much for the few of us doing it.
 Things won't get tested well, and stability goes backwards.

Well, as soon as you have branched there will be backporting, and
occationally forwardporting. Mainly bugfixes, and occationally a feature
deemed important enough but which did not make it in time to the branch
point but which made it in good time before the .1 STABLE release.

 Lets just make STABLE release the highest of X.Y.W, .0 of that sequence
 the pre-release beta code.

That's exactly what we are saying.

T
 And flag anything we *really* need sub-releases
 of with a temporary text or even just the snapshot datestamp. Preferrably
 leaving those type of changes for a later X.Z release with testing time in
 trunk.

We have not said anything about any sub-releases after the .1 STABLE
release, except for the possibility of a Release Candidate indication
in the web site and/or informal announcement.

 Keep in mind the whole W-level release cycle is going to be in the order
 of months, with people who need long-term stability staying with
 high-numbered older versions.

Yes. Which is an improvement from the current 1.5 year. (which btw
started when Squid-3 branched)

Regards
Henrik



Re: [RFC] 3.1 branching

2008-09-25 Thread Amos Jeffries

Henrik Nordstrom wrote:

On tor, 2008-09-25 at 15:15 +1200, Amos Jeffries wrote:


 So we have

1. Branch when trunk is considered a suitable startingpoint for getting
to stable, and tag a x.y.0 release at the branchpoint (or at least set
this version in configure.in).

2a. Release X.Y.0.1 when ready for testing
2b. Release X.Y.0.w as code gets better, w  1


Don't forget the next step after (w1  w12) is:
   Branch X.Z.0 


Ofcourse. trunk continues it's live and 1 restarts when suitable.

The .0 releases is not a requirement, but may be useful depending on how
the release matures after the branch, which heavily depends on the state
of trunk at time of branching.

But as soon as you branch the version needs to be labelled X.Y.0,
with .1 being the STABLE release. But there does not NEED to be
any .0.x release made at all if you as release maintainer do not want
to, 


So I should simply say 'X is how we are doing it'? I think not.
Kinkie has somehow convinced Alex of a different way of numbering then 
simply omitting the word 'STABLE', I'm pondering it but need a good 
reason to agree.





So why do we really need an extra .0 sitting on the end wasting space?

I have no intentions of maintaining anything other than:
  trunk + latest X.Z.n + most stable X.Y (if X.Z.n  X.Z.1)


Nobody has said anything else.


? the alternative to this I'm arguing against has another layer of 
formal .N releases.





The back-port workload becomes just too much for the few of us doing it.
Things won't get tested well, and stability goes backwards.


Well, as soon as you have branched there will be backporting, and
occationally forwardporting. Mainly bugfixes, and occationally a feature
deemed important enough but which did not make it in time to the branch
point but which made it in good time before the .1 STABLE release.


Lets just make STABLE release the highest of X.Y.W, .0 of that sequence
the pre-release beta code.


That's exactly what we are saying.


By my reading, Alex and Kinkie are going on about a whole lot of *.0.N 
releases required if we don't consider any particular code STABLE.

Like they are confusing trunk stabilization with branch stabilization.



T

And flag anything we *really* need sub-releases
of with a temporary text or even just the snapshot datestamp. Preferrably
leaving those type of changes for a later X.Z release with testing time in
trunk.


We have not said anything about any sub-releases after the .1 STABLE
release, except for the possibility of a Release Candidate indication
in the web site and/or informal announcement.


Alex has indicated his understanding of NO sub-numbering after X.Y.1, 
which equates to no -RC.





Keep in mind the whole W-level release cycle is going to be in the order
of months, with people who need long-term stability staying with
high-numbered older versions.


Yes. Which is an improvement from the current 1.5 year. (which btw
started when Squid-3 branched)


Yes, yes. I agree that 3.0 went badly before people got the momentum 
going in PRE6.


Amos
--
Please use Squid 2.7.STABLE4 or 3.0.STABLE9


Re: [RFC] 3.1 branching

2008-09-25 Thread Henrik Nordstrom
On tor, 2008-09-25 at 22:41 +1200, Amos Jeffries wrote:

 So I should simply say 'X is how we are doing it'? I think not.
 Kinkie has somehow convinced Alex of a different way of numbering then 
 simply omitting the word 'STABLE', I'm pondering it but need a good 
 reason to agree.

No, it's simply that, but keeping the PRE state and reflecting this in
the numbering by using .0.X. The other states are dropped from the
numbering.

3.1.PRE1  - 3.1.0.1
3.1.PRE2  - 3.1.0.2
3.1.STABLE1 - 3.1.1

And that we keep an indication on the web site on which releases is
currently considered stable for production use. (I would guess usually
the latest release + maybe one or two patch releases back, depending on
what bugs have been fixed)

  I have no intentions of maintaining anything other than:
trunk + latest X.Z.n + most stable X.Y (if X.Z.n  X.Z.1)
  
  Nobody has said anything else.
 
 ? the alternative to this I'm arguing against has another layer of 
 formal .N releases.

How?

  That's exactly what we are saying.
 
 By my reading, Alex and Kinkie are going on about a whole lot of *.0.N 
 releases required if we don't consider any particular code STABLE.
 Like they are confusing trunk stabilization with branch stabilization.

There will likely be a couple of iterations from the branchpoint until
we are happy to label the release stable. My estimate is 2 such
releases.

  We have not said anything about any sub-releases after the .1 STABLE
  release, except for the possibility of a Release Candidate indication
  in the web site and/or informal announcement.
 
 Alex has indicated his understanding of NO sub-numbering after X.Y.1, 
 which equates to no -RC.

The RC indication is NOT part of the numbering. It's a process. If a
release candidate fails for some reason then that release never gets
promoted to stable and we move on to the next number.

Regards
Henrik


signature.asc
Description: This is a digitally signed message part


Re: [RFC] 3.1 branching

2008-09-25 Thread Amos Jeffries

Henrik Nordstrom wrote:

On tor, 2008-09-25 at 22:41 +1200, Amos Jeffries wrote:


So I should simply say 'X is how we are doing it'? I think not.
Kinkie has somehow convinced Alex of a different way of numbering then 
simply omitting the word 'STABLE', I'm pondering it but need a good 
reason to agree.


No, it's simply that, but keeping the PRE state and reflecting this in
the numbering by using .0.X. The other states are dropped from the
numbering.

3.1.PRE1  - 3.1.0.1
3.1.PRE2  - 3.1.0.2
3.1.STABLE1 - 3.1.1

And that we keep an indication on the web site on which releases is
currently considered stable for production use. (I would guess usually
the latest release + maybe one or two patch releases back, depending on
what bugs have been fixed)



Hmm, so rolling DEVEL + PRE + RC into one version called a.b.0.N
Well, I'm a little doubtful but can't argue against that yet.


I have no intentions of maintaining anything other than:
  trunk + latest X.Z.n + most stable X.Y (if X.Z.n  X.Z.1)

Nobody has said anything else.
? the alternative to this I'm arguing against has another layer of 
formal .N releases.


How?


That's exactly what we are saying.
By my reading, Alex and Kinkie are going on about a whole lot of *.0.N 
releases required if we don't consider any particular code STABLE.

Like they are confusing trunk stabilization with branch stabilization.


There will likely be a couple of iterations from the branchpoint until
we are happy to label the release stable. My estimate is 2 such
releases.


We have not said anything about any sub-releases after the .1 STABLE
release, except for the possibility of a Release Candidate indication
in the web site and/or informal announcement.
Alex has indicated his understanding of NO sub-numbering after X.Y.1, 
which equates to no -RC.


The RC indication is NOT part of the numbering. It's a process. If a
release candidate fails for some reason then that release never gets
promoted to stable and we move on to the next number.


Yes. Still worried that people are mixing the trunk/before 
stable1/post-stable1 timespans and what can/can't be done.

But will leave it and see what happens when we trial this.

Amos
--
Please use Squid 2.7.STABLE4 or 3.0.STABLE9


Re: [RFC] 3.1 branching

2008-09-25 Thread Alex Rousskov
On Thu, 2008-09-25 at 22:41 +1200, Amos Jeffries wrote:
 Henrik Nordstrom wrote:
  On tor, 2008-09-25 at 15:15 +1200, Amos Jeffries wrote:
  
   So we have
  1. Branch when trunk is considered a suitable startingpoint for getting
  to stable, and tag a x.y.0 release at the branchpoint (or at least set
  this version in configure.in).
 
  2a. Release X.Y.0.1 when ready for testing
  2b. Release X.Y.0.w as code gets better, w  1
 
  Don't forget the next step after (w1  w12) is:
 Branch X.Z.0 
  
  Ofcourse. trunk continues it's live and 1 restarts when suitable.
  
  The .0 releases is not a requirement, but may be useful depending on how
  the release matures after the branch, which heavily depends on the state
  of trunk at time of branching.
  
  But as soon as you branch the version needs to be labelled X.Y.0,
  with .1 being the STABLE release. But there does not NEED to be
  any .0.x release made at all if you as release maintainer do not want
  to, 
 
 So I should simply say 'X is how we are doing it'? I think not.
 Kinkie has somehow convinced Alex of a different way of numbering then 
 simply omitting the word 'STABLE', I'm pondering it but need a good 
 reason to agree.

I was just going for consensus. Personally, I am fine both with Kinkie+
(0 has a special meaning then come the stable releases) and with mine
(just keep releasing until stable) proposals.

I do not want the meaningful words like RC or STABLE to be in the
version string. And I want a way to release many times with a specific
version (not an automated snapshot) before the branch is marked as
stable.

  
  So why do we really need an extra .0 sitting on the end wasting space?
 
  I have no intentions of maintaining anything other than:
trunk + latest X.Z.n + most stable X.Y (if X.Z.n  X.Z.1)
  
  Nobody has said anything else.
 
 ? the alternative to this I'm arguing against has another layer of 
 formal .N releases.

I do not think the number of releases will go up or down significantly.
From I do not intend to maintain more point of view, all proposals are
the same.

  The back-port workload becomes just too much for the few of us doing it.
  Things won't get tested well, and stability goes backwards.
  
  Well, as soon as you have branched there will be backporting, and
  occationally forwardporting. Mainly bugfixes, and occationally a feature
  deemed important enough but which did not make it in time to the branch
  point but which made it in good time before the .1 STABLE release.
  
  Lets just make STABLE release the highest of X.Y.W, .0 of that sequence
  the pre-release beta code.
  
  That's exactly what we are saying.
 
 By my reading, Alex and Kinkie are going on about a whole lot of *.0.N 
 releases required if we don't consider any particular code STABLE.
 Like they are confusing trunk stabilization with branch stabilization.

Not any particular code. Just the freshly branched code. We can
minimize the number of those 4-digit releases if the code stays longer
in trunk, but I think you wanted to branch sooner rather than later.

  And flag anything we *really* need sub-releases
  of with a temporary text or even just the snapshot datestamp. Preferrably
  leaving those type of changes for a later X.Z release with testing time in
  trunk.
  
  We have not said anything about any sub-releases after the .1 STABLE
  release, except for the possibility of a Release Candidate indication
  in the web site and/or informal announcement.
 
 Alex has indicated his understanding of NO sub-numbering after X.Y.1, 
 which equates to no -RC.

You are both right. What Henrik is talking about is announcing a given
version as release candidate. What you are talking about is not using
RC in the version string. There is no contradiction here. To reduce
confusion, release candidate should be renamed to something like
stable candidate. It is just a phrase used on the web site or mailing
list announcement.


My primary request is that before we mark a branch as stable, we have
numbered development releases (not automated daily snapshots). Earlier
development releases will _not_ be stable candidates. The specifics of
naming those development releases are less important.

HTH,
 
Alex.




Re: [RFC] 3.1 branching

2008-09-25 Thread Alex Rousskov
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.

 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.

Alex.




Re: [RFC] 3.1 branching

2008-09-25 Thread Amos Jeffries

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 

Re: [RFC] 3.1 branching

2008-09-25 Thread Alex Rousskov
On Fri, 2008-09-26 at 05:28 +1200, Amos Jeffries wrote:

 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.

Understood. What do you think is better:

A) Branch and commit waiting stuff to trunk now. Deal with a large
volume of complicated commit traffic between the 3.1 branch and trunk.

B) Branch and commit waiting stuff later. Focus on 3.1 leftovers and
stability without being distracted by cross-porting commit traffic.

I would pick B, but since you are handling most of the commit traffic, I
think it is your choice.

 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.

Agreed. The more new stuff enters trunk, the more time-consuming
double-commits will become though.

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

Can somebody (or do we) use Author for copyright-related statements? If
yes, then who wrote the code may be irrelevant in some cases.

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

Sure.

   * 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.

Right. There are many bugs/fixes that have no feature behind them.

 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.

Sounds good.
(See, Kinkie, it worked this time! :-).

I think the only big decision left is whether to branch first or
stabilize first.

Thank you,

Alex.




Re: [RFC] 3.1 branching

2008-09-25 Thread Henrik Nordstrom
On tor, 2008-09-25 at 23:36 +1200, Amos Jeffries wrote:
 Hmm, so rolling DEVEL + PRE + RC into one version called a.b.0.N
 Well, I'm a little doubtful but can't argue against that yet.

No, not quite.

There is no point of DEVEL releases in the current form of the
development cycle. So we skip those. The nightly snapshots is good
enough for that purpose.

PRE relesaes is the main needed release while trying to get the branch
in shape. These is the 3.1.0.N releases where N = 1.

RC using the actual release version. The forst RC for 3.1 would be
3.1.1. And if fine (which it should be) this is the same tarball which
then gets promoted to stable for production use.

If there is a problem with the RC then there is two choices. Either skip
the release number and number the stable release 3.1.2, or reroll
3.1.1. Which one depends on if the RC has been distributed. Quite often
RC level errors is detected immediately even before announcing it to
squid-dev..


 Yes. Still worried that people are mixing the trunk/before 
 stable1/post-stable1 timespans and what can/can't be done.
 But will leave it and see what happens when we trial this.

This thread is only about numbering within a single stable branch.
It's separate from trunk policy.

Regards
Henrik


signature.asc
Description: This is a digitally signed message part


Re: [RFC] 3.1 branching

2008-09-25 Thread Alex Rousskov
On Thu, 2008-09-25 at 21:12 +0200, Henrik Nordstrom wrote:
 On tor, 2008-09-25 at 23:36 +1200, Amos Jeffries wrote:
  Hmm, so rolling DEVEL + PRE + RC into one version called a.b.0.N
  Well, I'm a little doubtful but can't argue against that yet.
 
 No, not quite.
 
 There is no point of DEVEL releases in the current form of the
 development cycle. So we skip those. The nightly snapshots is good
 enough for that purpose.
 
 PRE relesaes is the main needed release while trying to get the branch
 in shape. These is the 3.1.0.N releases where N = 1.
 
 RC using the actual release version. The forst RC for 3.1 would be
 3.1.1. And if fine (which it should be) this is the same tarball which
 then gets promoted to stable for production use.

I thought we would use RC label for selected/last 4-digit releases.

 If there is a problem with the RC then there is two choices. Either skip
 the release number and number the stable release 3.1.2, or reroll
 3.1.1. Which one depends on if the RC has been distributed. Quite often
 RC level errors is detected immediately even before announcing it to
 squid-dev..

If we use RC label for selected/last 4-digit releases, then we will not
have the above problems. If a 4-digit release proves stable, we post
3.1.1 (an exact copy of the last successful 4-digit release, except for
the version number) and mark the branch as stable.

Is there a reason we cannot have stable candidates using 4-digit
versions?

Cheers,

Alex.




Re: [RFC] 3.1 branching

2008-09-25 Thread Henrik Nordstrom
On tor, 2008-09-25 at 08:11 -0600, Alex Rousskov wrote:
 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.

In the somewhat raw branch maintenance process we have it's important
that everyone who commit on a stable branch follow the procedure in
tracking the merges, or you'll actually increase the workload of the
branch manager. It's better stuff gets committed to HEAD and then asked
to have them backported to stable.

I have some ideas on some simple tools to fix that, but time is a
limiting factor..

The exception is issues which are unique to the stable branch, or which
requires effort to backport.

Issues unique to the stable branch is generally fine to commit directly
there, as that's the startingpoint for tracking that change.

For issues requiring effort to backport there is no simple answer.

 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.

Which is the time where 3.1.2 is labelled a RC. Tarball rolled, but not
yet on the FTP server or announced on squid-announce, and labelled as an
release candidate on the web server.

Before that there is also the nightly snapshots which works well for
testing of the upcoming release, so the number of times a RC fails
should be nearly zero. But it's still a timeframe which is needed to
ensure we do not label obviously broken releases as stable.

 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.

Yes. It's pointless during a stable cycle as the number of fixes between
the patch releases is quite small, has been tested  verified in HEAD
and as individual patches or nightly snapshots.

The number of times RC releases has been used between STABLE releases in
Squid-2 can probably be counted on a single hand, and nearly all times
it's been things which really belongs in the next release number and not
a patch release. I can only remember one time where it was due to a
major bugfix (the 2GB barrier) and even then that's probably more
suitable for the next release.. So the main reason why RC releases has
been seen between STABLE patch releases is due to the somewhat twisted
release process we had for Squid-2 with no further releases forcing
these rather major changes to take place during a stable cycle.

Regards
Henrik


signature.asc
Description: This is a digitally signed message part


Re: [RFC] 3.1 branching

2008-09-25 Thread Henrik Nordstrom
On tor, 2008-09-25 at 08:40 -0600, Alex Rousskov wrote:

 I do not want the meaningful words like RC or STABLE to be in the
 version string. And I want a way to release many times with a specific
 version (not an automated snapshot) before the branch is marked as
 stable.

Same here, but I am not happy with the first stable release of
Squid-3.1 being Squid-3.1.47 which is why I advocate for the .0.x
releases to isolate those releases as a artefact not really visible to
the end-users once we reach stable.

 I do not think the number of releases will go up or down significantly.
 From I do not intend to maintain more point of view, all proposals are
 the same.

Correct.

Regards
Henrik


signature.asc
Description: This is a digitally signed message part


Re: [RFC] 3.1 branching

2008-09-25 Thread Alex Rousskov
On Thu, 2008-09-25 at 21:34 +0200, Henrik Nordstrom wrote:

 Which is the time where 3.1.2 is labelled a RC. Tarball rolled, but not
 yet on the FTP server or announced on squid-announce, and labelled as an
 release candidate on the web server.
 
 Before that there is also the nightly snapshots which works well for
 testing of the upcoming release, so the number of times a RC fails
 should be nearly zero. But it's still a timeframe which is needed to
 ensure we do not label obviously broken releases as stable.

IMO, we do not have enough resources to label releases as stable. We can
only label whole branches.

That is, I do not think we should do RCs for X.Y.2 and beyond. Once the
branch is declared stable, we do our best to keep each release that way.
There will be bugs, but we do not have enough resources to RC every
supposed-to-be-stable release after the first one (3.1.1).

There is nothing wrong with the idea of doing RC for every release on a
stable branch. I just do not think we should spend time on that for now.

Cheers,

Alex.




Re: [RFC] 3.1 branching

2008-09-25 Thread Alex Rousskov
On Thu, 2008-09-25 at 13:50 -0600, Alex Rousskov wrote:
 On Thu, 2008-09-25 at 21:34 +0200, Henrik Nordstrom wrote:
 
  Which is the time where 3.1.2 is labelled a RC. Tarball rolled, but not
  yet on the FTP server or announced on squid-announce, and labelled as an
  release candidate on the web server.
  
  Before that there is also the nightly snapshots which works well for
  testing of the upcoming release, so the number of times a RC fails
  should be nearly zero. But it's still a timeframe which is needed to
  ensure we do not label obviously broken releases as stable.
 
 IMO, we do not have enough resources to label releases as stable. We can
 only label whole branches.
 
 That is, I do not think we should do RCs for X.Y.2 and beyond. Once the
 branch is declared stable, we do our best to keep each release that way.
 There will be bugs, but we do not have enough resources to RC every
 supposed-to-be-stable release after the first one (3.1.1).

Actually, RC should be issued for 3.1.0.47, not for 3.1.1.

3.1.1 is just a copy of 3.1.0.47 if the latter was proven to be stable.
If not, we post 3.1.0.48.

$0.02,

Alex.





Re: [RFC] 3.1 branching

2008-09-25 Thread Henrik Nordstrom
On tor, 2008-09-25 at 12:57 -0600, Alex Rousskov wrote:

 Understood. What do you think is better:
 
 A) Branch and commit waiting stuff to trunk now. Deal with a large
 volume of complicated commit traffic between the 3.1 branch and trunk.
 
 B) Branch and commit waiting stuff later. Focus on 3.1 leftovers and
 stability without being distracted by cross-porting commit traffic.
 
 I would pick B, but since you are handling most of the commit traffic, I
 think it is your choice.

How much of that waiting stuff is major changes touching large parts of
the code base?

Without any such change the two is close to equal from a stable branch
maintenance perspective.

What can be seein in Squid-2 is that bugfixes which enters 2.HEAD still
migrates pretty much effordless down to 2.6 via 2.7, even when the
distance between 2.6 and 2.HEAD is by now quite large. Probably they
would merge pretty much effordless very many releases back.

* anything comitted that you didn't write. remember the Author: tags.
 
 Can somebody (or do we) use Author for copyright-related statements? If
 yes, then who wrote the code may be irrelevant in some cases.

It's for tracking the author mainly. Copyrights is kept within the
content, not the merge messages.

 I think the only big decision left is whether to branch first or
 stabilize first.

My vote:

1. Finish any pending major restucturing/reorganisations/reformmatting
first. For example if the code is to be restyled before 3.1 is old and
mature then it must be done before 3.1 is branched. Such changes is a
major blocker for branching.

2. Branch so 3.1 can start it's road to stabilization in a sensible
manner. It does not really matter if it's 100% feature complete, or if
there is some already committed features which isn't quite finished.
Small features is no different from bugfixes in terms of maintenance,
and if it's found there is committed unfinished stuff already in the
tree then it can quite easily be bounced to the next release after
branching (but not before). Also if now missing features gets further
delayed they simply won't make it in time for the release and will get a
new chance in the next release (3.2).

3. flame anyone who commits bugfixes embedded within feature commits.
Bugfixes need to be separate for the maintenance process to work. Any
bugfixes committed as part of feature commits gets hidden and lost from
the maintenane process.

Regards
Henrik


signature.asc
Description: This is a digitally signed message part


Re: [RFC] 3.1 branching

2008-09-25 Thread Henrik Nordstrom
On tor, 2008-09-25 at 13:32 -0600, Alex Rousskov wrote:

 If we use RC label for selected/last 4-digit releases, then we will not
 have the above problems. If a 4-digit release proves stable, we post
 3.1.1 (an exact copy of the last successful 4-digit release, except for
 the version number) and mark the branch as stable.
 
 Is there a reason we cannot have stable candidates using 4-digit
 versions?

My view on stable after loosing the version tag:

stable is something a release earns by proving stable. It's someting a
release gets after being released and tested, not by a new release.

Applies equal to later patch releases who also start their lives as
stable candidates and then gets promoted to stable.

Also as major bugs gets discovered now known broken releases may loose
their stable stamp.

The release candidate process for getting to 3.1.1 is dealt with by
the 3.1.0.X releases. The diff between the last 3.1.0.X and 3.1.1 should
preferably just be the version number, with that 3.1.0.X being a release
candidate for 3.1.

Regards
Henrik


signature.asc
Description: This is a digitally signed message part


Re: [RFC] 3.1 branching

2008-09-25 Thread Alex Rousskov
On Thu, 2008-09-25 at 22:53 +0200, Henrik Nordstrom wrote:
 On tor, 2008-09-25 at 13:32 -0600, Alex Rousskov wrote:
 
  If we use RC label for selected/last 4-digit releases, then we will not
  have the above problems. If a 4-digit release proves stable, we post
  3.1.1 (an exact copy of the last successful 4-digit release, except for
  the version number) and mark the branch as stable.
  
  Is there a reason we cannot have stable candidates using 4-digit
  versions?
 
 My view on stable after loosing the version tag:
 
 stable is something a release earns by proving stable. It's someting a
 release gets after being released and tested, not by a new release.
 
 Applies equal to later patch releases who also start their lives as
 stable candidates and then gets promoted to stable.
 
 Also as major bugs gets discovered now known broken releases may loose
 their stable stamp.

The above is too extreme, IMO. We will often have no stable releases if
we remain honest and follow the above scheme to the letter:

  ...
  3.1.4 is released; no stable mark by default
  a bug is found; all previous 3.1 releases lose their stable mark
  3.1.5 is released, fixing the bug; no stable mark by default
  no bugs
  3.1.5 is marked as stable (*)
  a bug is found
  3.1.5 loses its stable mark; no 3.1 stable release available again
  3.1.6 is released; no stable mark by default
  ...

This means that except for (*) period, users will have to use Squid 3.0
or Squid 2.x (which use less draconian scheme) instead of Squid 3.1. Not
a good side-effect.

Even worse, consider a user that has a company policy to only run stable
versions. That user installs 3.1.5 and then discovers he has to
downgrade to 3.0, which lacks the feature he needs. And the serious bug
found in 3.1.5 may not even affect that user. That's just plain wrong.

I think we should mark _branches_ not individual versions. A stable
branch has certain project backing behind it. A stable version does not
mean much because bugs can always remove that flag.

Said that, if others are convinced that we should try testing and
marking each release, I am happy to try it.

 The release candidate process for getting to 3.1.1 is dealt with by
 the 3.1.0.X releases. The diff between the last 3.1.0.X and 3.1.1 should
 preferably just be the version number, with that 3.1.0.X being a release
 candidate for 3.1.

+1 on that.

Thank you,

Alex.




Re: [RFC] 3.1 branching

2008-09-25 Thread Alex Rousskov
On Thu, 2008-09-25 at 22:40 +0200, Henrik Nordstrom wrote:

 My vote:
 
 1. Finish any pending major restucturing/reorganisations/reformmatting
 first. For example if the code is to be restyled before 3.1 is old and
 mature then it must be done before 3.1 is branched. Such changes is a
 major blocker for branching.
 
 2. Branch so 3.1 can start it's road to stabilization in a sensible
 manner. It does not really matter if it's 100% feature complete, or if
 there is some already committed features which isn't quite finished.
 Small features is no different from bugfixes in terms of maintenance,
 and if it's found there is committed unfinished stuff already in the
 tree then it can quite easily be bounced to the next release after
 branching (but not before). Also if now missing features gets further
 delayed they simply won't make it in time for the release and will get a
 new chance in the next release (3.2).
 
 3. flame anyone who commits bugfixes embedded within feature commits.
 Bugfixes need to be separate for the maintenance process to work. Any
 bugfixes committed as part of feature commits gets hidden and lost from
 the maintenane process.

I am OK with the above, especially if Amos prefers this path.

Thank you,

Alex.




Re: [RFC] 3.1 branching

2008-09-25 Thread Amos Jeffries
 On tor, 2008-09-25 at 12:57 -0600, Alex Rousskov wrote:

 Understood. What do you think is better:

 A) Branch and commit waiting stuff to trunk now. Deal with a large
 volume of complicated commit traffic between the 3.1 branch and trunk.

 B) Branch and commit waiting stuff later. Focus on 3.1 leftovers and
 stability without being distracted by cross-porting commit traffic.

 I would pick B, but since you are handling most of the commit traffic, I
 think it is your choice.

 How much of that waiting stuff is major changes touching large parts of
 the code base?

logdaemon, internal redirectors, and netdb are big component changes. But
not squid-wide.
The cleanup merger is much closer to squid-wide surgery as all file
includes get touched in some way. That HAS to wait for reformat, layout,
and trunk to settle post-branch.


 Without any such change the two is close to equal from a stable branch
 maintenance perspective.

 What can be seein in Squid-2 is that bugfixes which enters 2.HEAD still
 migrates pretty much effordless down to 2.6 via 2.7, even when the
 distance between 2.6 and 2.HEAD is by now quite large. Probably they
 would merge pretty much effordless very many releases back.

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

 Can somebody (or do we) use Author for copyright-related statements? If
 yes, then who wrote the code may be irrelevant in some cases.

 It's for tracking the author mainly. Copyrights is kept within the
 content, not the merge messages.

 I think the only big decision left is whether to branch first or
 stabilize first.

 My vote:

 1. Finish any pending major restucturing/reorganisations/reformmatting
 first. For example if the code is to be restyled before 3.1 is old and
 mature then it must be done before 3.1 is branched. Such changes is a
 major blocker for branching.

Ditto. Those are down as 'features' blocking branch. Only the src/ folder
re-org may cause delays.


 2. Branch so 3.1 can start it's road to stabilization in a sensible
 manner. It does not really matter if it's 100% feature complete, or if
 there is some already committed features which isn't quite finished.
 Small features is no different from bugfixes in terms of maintenance,
 and if it's found there is committed unfinished stuff already in the
 tree then it can quite easily be bounced to the next release after
 branching (but not before). Also if now missing features gets further
 delayed they simply won't make it in time for the release and will get a
 new chance in the next release (3.2).

That last is already on the books. Only eCAP is blocking right now because
it was cemented and guaranteed before the flexible feature track was
taken.


 3. flame anyone who commits bugfixes embedded within feature commits.
 Bugfixes need to be separate for the maintenance process to work. Any
 bugfixes committed as part of feature commits gets hidden and lost from
 the maintenane process.



We seem to have an agreement. Now lets get back to code and bug eh?

Amos



Re: [RFC] 3.1 branching

2008-09-25 Thread Amos Jeffries
 On Thu, 2008-09-25 at 22:40 +0200, Henrik Nordstrom wrote:

 My vote:

 1. Finish any pending major restucturing/reorganisations/reformmatting
 first. For example if the code is to be restyled before 3.1 is old and
 mature then it must be done before 3.1 is branched. Such changes is a
 major blocker for branching.

 2. Branch so 3.1 can start it's road to stabilization in a sensible
 manner. It does not really matter if it's 100% feature complete, or if
 there is some already committed features which isn't quite finished.
 Small features is no different from bugfixes in terms of maintenance,
 and if it's found there is committed unfinished stuff already in the
 tree then it can quite easily be bounced to the next release after
 branching (but not before). Also if now missing features gets further
 delayed they simply won't make it in time for the release and will get a
 new chance in the next release (3.2).

 3. flame anyone who commits bugfixes embedded within feature commits.
 Bugfixes need to be separate for the maintenance process to work. Any
 bugfixes committed as part of feature commits gets hidden and lost from
 the maintenane process.

 I am OK with the above, especially if Amos prefers this path.


+1.

Amos



Re: [RFC] 3.1 branching

2008-09-24 Thread Amos Jeffries

Henrik Nordstrom wrote:

On tis, 2008-09-23 at 23:30 -0600, Alex Rousskov wrote:


PRE, to me, means we think it is stable, what do you think?.
A development release, to me, means we are done adding features, please
help us with testing and polishing. And yes, I know that the
definitions at http://www.squid-cache.org/Versions/ are somewhat
different. IIRC, I failed to convince others that mine are better :-)


You are off-by-one from what we normally use

DEVEL - We are still adding features, but this release is beleived to be
reasonably stable suitable for evaluating what has been done so far.

PRE - We are done adding features. Please help us hunting down the last
bugs.

RC - No more known bugs to fix. We think it's stable. Please verify.

STABLE - We think it's stable production release.


DEVEL releases is rarely needed as the nightly snapshot releases serves
this purpose well. Came to light during the very extended Squid-3.0
development cycle with lots of major restructuring and destabilization
taking place..

The non-major but important bugs can be fixed during DEVEL and PRE 
cycles. Branching is about features not bugs.

Agreed, except I do not think we should have any known important bugs
when doing the first PRE (if we do PRE at all).


Yes. It's not much use in releaseing a PRE with known major blockers.



Well, we all seem to agree on no bugs above a certain level, but differ 
as to what the maximum rating should be :-)


I've been basing my standards on the bugzilla importance labels.
 PRE requiring:
   0 'blocker', 'critical', 'major'
   judgement call on those labeled 'normal' or lower (few as possible)

My PRE list is the one linked from RoadMap under bugzapping.
(all bugs minor, either existing in or targeted at a fix 3.1)

My RC list extends that to include the 3.0 bugs, so 3.1.RC1 won't go out 
until there are no big bugs inherited from 3.0.


Maybe we should call a bug sprint with PRE1 release.


Amos
--
Please use Squid 2.7.STABLE4 or 3.0.STABLE9


Re: [RFC] 3.1 branching

2008-09-24 Thread Alex Rousskov
On Wed, 2008-09-24 at 12:21 +0200, Henrik Nordstrom wrote:
 On tis, 2008-09-23 at 23:30 -0600, Alex Rousskov wrote:
 
  PRE, to me, means we think it is stable, what do you think?.
  A development release, to me, means we are done adding features, please
  help us with testing and polishing. And yes, I know that the
  definitions at http://www.squid-cache.org/Versions/ are somewhat
  different. IIRC, I failed to convince others that mine are better :-)
 
 You are off-by-one from what we normally use
 
 DEVEL - We are still adding features, but this release is beleived to be
 reasonably stable suitable for evaluating what has been done so far.
 
 PRE - We are done adding features. Please help us hunting down the last
 bugs.
 
 RC - No more known bugs to fix. We think it's stable. Please verify.
 
 STABLE - We think it's stable production release.

Oh boy, I forgot about yet another undocumented stage -- RC! I wonder
what PRE stands for then. Pre-RC?! This is just plain wrong.

 DEVEL releases is rarely needed as the nightly snapshot releases serves
 this purpose well. Came to light during the very extended Squid-3.0
 development cycle with lots of major restructuring and destabilization
 taking place..

The DEVEL label is not needed indeed, but I was talking about code
states. I understand now that you use the PRE state for a different
purpose. Please note that your definitions of DEVEL and PRE differ from
the ones on the web site.

The most annoying thing, IMO, is that the official and your definitions
above have two fuzzy lines for DEVEL and PRE states: stability and
features. One fuzzy line is tolerable, but two make things really
confusing.

   The non-major but important bugs can be fixed during DEVEL and PRE 
   cycles. Branching is about features not bugs.
  
  Agreed, except I do not think we should have any known important bugs
  when doing the first PRE (if we do PRE at all).
 
 Yes. It's not much use in releaseing a PRE with known major blockers.

But your definition above says we are still hunting down some bugs. It
does not say there are no major bugs left.

How about this:

Trunk: Experimental code and new major features are being added. Use
daily snapshots (e.g., HEAD-MMDD). No label.

... time passes, more features are added ...

Branching point (e.g., 3.1): All major features are in. Use daily
snapshots (e.g., 3.1-MMDD). No label.

... time passes, all known major bugs get fixed ...

First numbered release (e.g., 3.1.0): All known major bugs fixed. Could
be labeled a beta or development release if needed.

... time passes, more beta releases are made, with fewer bugs ...

Branch first marked as stable (e.g., 3.1.5): The last numbered release
turned out to be stable!

... time passes, the stable branch is maintained ...

Branch marked as end of life or no longer supported.


Cheers,

Alex.




Re: [RFC] 3.1 branching

2008-09-24 Thread Kinkie
On Wed, Sep 24, 2008 at 4:45 PM, Alex Rousskov
[EMAIL PROTECTED] wrote:
 On Wed, 2008-09-24 at 12:21 +0200, Henrik Nordstrom wrote:
 On tis, 2008-09-23 at 23:30 -0600, Alex Rousskov wrote:

 The DEVEL label is not needed indeed, but I was talking about code
 states. I understand now that you use the PRE state for a different
 purpose. Please note that your definitions of DEVEL and PRE differ from
 the ones on the web site.

 The most annoying thing, IMO, is that the official and your definitions
 above have two fuzzy lines for DEVEL and PRE states: stability and
 features. One fuzzy line is tolerable, but two make things really
 confusing.

   The non-major but important bugs can be fixed during DEVEL and PRE
   cycles. Branching is about features not bugs.
 
  Agreed, except I do not think we should have any known important bugs
  when doing the first PRE (if we do PRE at all).

 Yes. It's not much use in releaseing a PRE with known major blockers.

 But your definition above says we are still hunting down some bugs. It
 does not say there are no major bugs left.

 How about this:

 Trunk: Experimental code and new major features are being added. Use
 daily snapshots (e.g., HEAD-MMDD). No label.

 ... time passes, more features are added ...

 Branching point (e.g., 3.1): All major features are in. Use daily
 snapshots (e.g., 3.1-MMDD). No label.

 ... time passes, all known major bugs get fixed ...

 First numbered release (e.g., 3.1.0): All known major bugs fixed. Could
 be labeled a beta or development release if needed.

 ... time passes, more beta releases are made, with fewer bugs ...

 Branch first marked as stable (e.g., 3.1.5): The last numbered release
 turned out to be stable!

 ... time passes, the stable branch is maintained ...

 Branch marked as end of life or no longer supported.

This is a bit like rehashing an old discussion, I'll however give it a
shot but not discuss it further.
I'm not a particular fan of DEVEL/PRE/RC/STABLE labels.

I like your idea about labelling the branching point and keeping
timestamps around for the head and post-branching stabilization phase.

I don't like much not having a fixed stable marker much tho, what I'd do is:
- when major bugs are fixed, a .0 release point is taken. After that
during the stabilization phase, milestones are marked with an
additional numeral (e.g. 3.2.0.5)
- when STABLE level is reached, then a .1 release is taken (3.2.1).
After that, it's maintainance mode and new releases are marked by
incrementing the third numeral (e.g. 3.2.5).

Advantages:
- it's fully-numeral
- it has a fixed stable marker (the .1 release).
- it doesn't change much the current numbering approach

My 2c; I won't waste more of anyone's time
(re-re-re-re-re-re)resurrecting this discussion.


-- 
 /kinkie


Re: [RFC] 3.1 branching

2008-09-24 Thread Kinkie
 I only have one question: how well does that release numbering model match
 the other OSS projects using the same numbering system? We don't want to set
 our own method and meaning when there is already a common way to get
 confused with.

No standard that I know of - timestamps are quite common for
prerelease, and some projects also use them for post-release.
The closest thing, having been adopted by some other projets, has been
Linux's (now abandoned) odd minor releases are devel, even minor
releases are stable.

-- 
 /kinkie


Re: [RFC] 3.1 branching

2008-09-24 Thread Alex Rousskov
On Thu, 2008-09-25 at 03:32 +1200, Amos Jeffries wrote:
 Alex Rousskov wrote:
  On Wed, 2008-09-24 at 12:21 +0200, Henrik Nordstrom wrote:
  On tis, 2008-09-23 at 23:30 -0600, Alex Rousskov wrote:
 
  PRE, to me, means we think it is stable, what do you think?.
  A development release, to me, means we are done adding features, please
  help us with testing and polishing. And yes, I know that the
  definitions at http://www.squid-cache.org/Versions/ are somewhat
  different. IIRC, I failed to convince others that mine are better :-)
  You are off-by-one from what we normally use
 
  DEVEL - We are still adding features, but this release is beleived to be
  reasonably stable suitable for evaluating what has been done so far.
 
  PRE - We are done adding features. Please help us hunting down the last
  bugs.
 
  RC - No more known bugs to fix. We think it's stable. Please verify.
 
  STABLE - We think it's stable production release.
  
  Oh boy, I forgot about yet another undocumented stage -- RC! I wonder
  what PRE stands for then. Pre-RC?! This is just plain wrong.
 
 'tis documented:
 http://www.squid-cache.org/Devel/release-process.html

Sorry, I should have looked there too. I was talking about
http://www.squid-cache.org/Versions/

 Although..
 from 3.1 - step 1 and 4 are joined, so step 2+ happens parallel to HEAD 
 without locking other new features.
 and I have not exactly been closely following step7 for 3.0. To pump 
 through the biggest bug fixes faster.

I will need a flow chart tool to grok this :-)

  Trunk: Experimental code and new major features are being added. Use
  daily snapshots (e.g., HEAD-MMDD). No label.
  
  ... time passes, more features are added ...
  
  Branching point (e.g., 3.1): All major features are in. Use daily
  snapshots (e.g., 3.1-MMDD). No label.
  
  ... time passes, all known major bugs get fixed ...
  
  First numbered release (e.g., 3.1.0): All known major bugs fixed. Could
  be labeled a beta or development release if needed.
  
  ... time passes, more beta releases are made, with fewer bugs ...
  
  Branch first marked as stable (e.g., 3.1.5): The last numbered release
  turned out to be stable!
  
  ... time passes, the stable branch is maintained ...
  
  Branch marked as end of life or no longer supported.
  
 
 Suites me either way. Some of the users at AusMeet commented on the 
 confusion of calling a release 3.0.STABLEx when a month later it 
 obviously wasn't.
 
 I only have one question: how well does that release numbering model 
 match the other OSS projects using the same numbering system? We don't 
 want to set our own method and meaning when there is already a common 
 way to get confused with.

I am not an expert on this, but AFAIK, there are several popular models
including odd/even, devel/stable, current/release. Some do release
candidates, but it is often just an informal announcement (e.g.,
snapshot such and such is a release candidate). Many offer VCS access
and, hence, can do snapshots (as a convenience for the user). But the
main theme seems to be a simple single threshold (if you do not count
VCS).

The above scheme is pretty much the same as devel/stable approach many
projects use. It should be familiar to users and developers alike.

The key here is to make it as simple and well defined as possible. I
think our scheme is too complex and confusing because we are trying to
piggyback too many things onto a version label and make it too
fine-grained. This hurts both users and developers.

Personally, I have never seen other projects stuffing version numbers
with STABLE. It is strange to look at, it is longer to type, and harder
to auto-process. IMHO, version should only contain version numbers.
Everything else is metadata that does not belong there. I am sure there
are projects out there that do similar silly stuff though.

Cheers,

Alex.





Re: [RFC] 3.1 branching

2008-09-24 Thread Alex Rousskov
On Wed, 2008-09-24 at 17:43 +0200, Kinkie wrote:
  I only have one question: how well does that release numbering model match
  the other OSS projects using the same numbering system? We don't want to set
  our own method and meaning when there is already a common way to get
  confused with.
 
 The closest thing, having been adopted by some other projets, has been
 Linux's (now abandoned) odd minor releases are devel, even minor
 releases are stable.

See, even Linux managed to abandon an odd naming scheme! We can do it
too. :-)

BTW, you may notice that we, ourselves, usually use devel/stable terms
when talking about releases (ours and others). We rarely tell somebody
Oh, just wait for a PRE release or perhaps RC...

Alex.




Re: [RFC] 3.1 branching

2008-09-24 Thread Alex Rousskov
On Wed, 2008-09-24 at 17:28 +0200, Kinkie wrote:

 I don't like much not having a fixed stable marker much tho, what I'd do is:
 - when major bugs are fixed, a .0 release point is taken. After that
 during the stabilization phase, milestones are marked with an
 additional numeral (e.g. 3.2.0.5)
 - when STABLE level is reached, then a .1 release is taken (3.2.1).
 After that, it's maintainance mode and new releases are marked by
 incrementing the third numeral (e.g. 3.2.5).
 
 Advantages:
 - it's fully-numeral
 - it has a fixed stable marker (the .1 release).
 - it doesn't change much the current numbering approach

I like your proposal a lot more than the current scheme, but what is the
value of a fixed stable marker? What a fixed marker like that would
allow us to do that we cannot do by saying stable or first stable?

The only use I can think of is that it would allow us to detect a stable
release in a version number that was assigned 5 years ago (e.g., we will
know that 3.1.3 was a stable release even 5 years from now). Since that
old branch will no longer be supported by then, we should not need that
information often. What other uses are there?

Thank you,

Alex.




Re: [RFC] 3.1 branching

2008-09-24 Thread Amos Jeffries

Alex Rousskov wrote:

On Thu, 2008-09-25 at 03:32 +1200, Amos Jeffries wrote:

Alex Rousskov wrote:

On Wed, 2008-09-24 at 12:21 +0200, Henrik Nordstrom wrote:

On tis, 2008-09-23 at 23:30 -0600, Alex Rousskov wrote:


PRE, to me, means we think it is stable, what do you think?.
A development release, to me, means we are done adding features, please
help us with testing and polishing. And yes, I know that the
definitions at http://www.squid-cache.org/Versions/ are somewhat
different. IIRC, I failed to convince others that mine are better :-)

You are off-by-one from what we normally use

DEVEL - We are still adding features, but this release is beleived to be
reasonably stable suitable for evaluating what has been done so far.

PRE - We are done adding features. Please help us hunting down the last
bugs.

RC - No more known bugs to fix. We think it's stable. Please verify.

STABLE - We think it's stable production release.

Oh boy, I forgot about yet another undocumented stage -- RC! I wonder
what PRE stands for then. Pre-RC?! This is just plain wrong.

'tis documented:
http://www.squid-cache.org/Devel/release-process.html


Sorry, I should have looked there too. I was talking about
http://www.squid-cache.org/Versions/


Although..
from 3.1 - step 1 and 4 are joined, so step 2+ happens parallel to HEAD 
without locking other new features.
and I have not exactly been closely following step7 for 3.0. To pump 
through the biggest bug fixes faster.


I will need a flow chart tool to grok this :-)


Trunk: Experimental code and new major features are being added. Use
daily snapshots (e.g., HEAD-MMDD). No label.

... time passes, more features are added ...

Branching point (e.g., 3.1): All major features are in. Use daily
snapshots (e.g., 3.1-MMDD). No label.

... time passes, all known major bugs get fixed ...

First numbered release (e.g., 3.1.0): All known major bugs fixed. Could
be labeled a beta or development release if needed.

... time passes, more beta releases are made, with fewer bugs ...

Branch first marked as stable (e.g., 3.1.5): The last numbered release
turned out to be stable!

... time passes, the stable branch is maintained ...

Branch marked as end of life or no longer supported.

Suites me either way. Some of the users at AusMeet commented on the 
confusion of calling a release 3.0.STABLEx when a month later it 
obviously wasn't.


I only have one question: how well does that release numbering model 
match the other OSS projects using the same numbering system? We don't 
want to set our own method and meaning when there is already a common 
way to get confused with.


I am not an expert on this, but AFAIK, there are several popular models
including odd/even, devel/stable, current/release. Some do release
candidates, but it is often just an informal announcement (e.g.,
snapshot such and such is a release candidate). Many offer VCS access
and, hence, can do snapshots (as a convenience for the user). But the
main theme seems to be a simple single threshold (if you do not count
VCS).

The above scheme is pretty much the same as devel/stable approach many
projects use. It should be familiar to users and developers alike.

The key here is to make it as simple and well defined as possible. I
think our scheme is too complex and confusing because we are trying to
piggyback too many things onto a version label and make it too
fine-grained. This hurts both users and developers.

Personally, I have never seen other projects stuffing version numbers
with STABLE. It is strange to look at, it is longer to type, and harder
to auto-process. IMHO, version should only contain version numbers.
Everything else is metadata that does not belong there. I am sure there
are projects out there that do similar silly stuff though.




Just brain dumping at 4am, but, how about this:

stuff goes into HEAD (3-)
... after a period we branch (3.1) with features from HEAD
... fix all known bugs and release 3.1.0-rc1
... if confirmed stable gets officially released as 3.1.1
... any critical bug found, or large accumulation of minor ones causes 
3.1.2 etc

... work continues on HEAD for next branching point of (3.2).

Amos
--
Please use Squid 2.7.STABLE4 or 3.0.STABLE9


Re: [RFC] 3.1 branching

2008-09-24 Thread Alex Rousskov
On Thu, 2008-09-25 at 05:00 +1200, Amos Jeffries wrote:

 Just brain dumping at 4am, but, how about this:
 
 stuff goes into HEAD (3-)
 ... after a period we branch (3.1) with features from HEAD
 ... fix all known bugs and release 3.1.0-rc1
 ... if confirmed stable gets officially released as 3.1.1
 ... any critical bug found, or large accumulation of minor ones causes 
 3.1.2 etc
 ... work continues on HEAD for next branching point of (3.2).

This is much better than the current scheme and is similar to what
Kinkie proposed. The three schemes differ in when pre-stable releases of
a branch are made and how they are numbered:

Alex (release development versions early and until no bugs left; keep
metadata elsewhere):
3.1.0, 3.1.1, 3.1.2, ... 3.1.27, 3.1.28, ...

Kinkie (release development versions early and until no bugs left;
x.y.0.z means devel or beta; x.y.1 and later are stable):
3.1.0.0, 3.1.0.1, 3.1.0.2, ... 3.1.1, 3.1.2, ...

Amos: (use BZR snapshots for development, release first numbered version
when all bugs are fixed;  x.y.0-rcZ means release candidate):
... 3.1.0-rc1, 3.1.0-rc2, 3.1.0-rc3, ... 3.1.1, 3.1.2, ...

Is this summary correct?

Alex.




Re: [RFC] 3.1 branching

2008-09-24 Thread Alex Rousskov
On Wed, 2008-09-24 at 21:26 +0200, Kinkie wrote:

 It's only a psychological thing. .0 sounds prerelease. Also the fact
 that devel will not bump the patchlevel release feels like slowing
 down and checking things out for the first number, 1.

Understood, thank you.

 None of this has (or should have) any effect on the actual development
 cycle, it's just conventions.

Right. If we were machines, only the rules for branching and releasing
would matter.

Cheers,

Alex.




Re: [RFC] 3.1 branching

2008-09-24 Thread Alex Rousskov
On Wed, 2008-09-24 at 20:56 +0200, Henrik Nordstrom wrote:
 On tor, 2008-09-25 at 03:32 +1200, Amos Jeffries wrote:
 
  I only have one question: how well does that release numbering model 
  match the other OSS projects using the same numbering system? We don't 
  want to set our own method and meaning when there is already a common 
  way to get confused with.
 
 Numeric numbering with 0 as beta is used by many packaging schemes,
 and would not confuse anyone.
 
 I am positive on getting rid of the labels and use the scheme proposed
 by Kinkie.

Cool. So, if there are no objections, we have:

0)  Trunk is usually open for new stuff. Make daily snapshots.
1)  Branch X.Y when major features are committed. Snapshots.
2a) Release X.Y.0.0 when all major bugs are fixed.
2b) Release X.Y.0.w as code gets better, w = 1.
3a) Release X.Y.1 when the last X.Y.0.w was stable. Mark branch as stable.
3b) Release X.Y.z as bugs get fixed, z  1.

If needed, flag any snapshot or numbered version as Release Candidate.
These flags do not affect the version number.

 To answer Alex regarding the RC (Release Candidate) this is not a
 release tag in itself. It's more of a temporary flag. It has also used
 between STABLE releases if there has been large or packaging changes,
 and those releases is not announced outside squid-dev or visible on the
 web site.

Sounds good.

Thank you,

Alex.




Re: [RFC] 3.1 branching

2008-09-24 Thread Henrik Nordstrom
On ons, 2008-09-24 at 13:56 -0600, Alex Rousskov wrote:
 Cool. So, if there are no objections, we have:
 
 0)  Trunk is usually open for new stuff. Make daily snapshots.
 1)  Branch X.Y when major features are committed. Snapshots.
 2a) Release X.Y.0.0 when all major bugs are fixed.
 2b) Release X.Y.0.w as code gets better, w = 1.
 3a) Release X.Y.1 when the last X.Y.0.w was stable. Mark branch as stable.
 3b) Release X.Y.z as bugs get fixed, z  1.

Sounds good to me, but see below for a minor adjustment and reasoning.

 If needed, flag any snapshot or numbered version as Release Candidate.
 These flags do not affect the version number.

Correct.

With this scheme labels is outside the revision numbers and only a
human concept in the text describing the releases (i.e. website and
announces). Also allows us to revoke the stable label from any version
known to have issues by simply updating the description,


Only comment is that 1 is a little fuzzier than described above

1 should take place when the tree is in a state the release manager and
others involved in the process considers a good startingpoint for
getting to 3. May still be major features missing, or there may even be
too many features at that time.

During 2 there is a significant flow of changes from trunk to the
branch, and also stuff getting revoked from the branch and deferred to
trunk waiting for the next release.

But if there is a major feature pending for trunk which is not targeted
for the branch then it's better to branch before that gets merged, even
if waiting on other major items which may get into trunk after. But both
ways are doable.

It's also important to keep good quality of the changes going into
trunk. The intention is that from a quality perspective trunk should
always be in shape for 1, with 2 being a fairly short process (a month
or so).

The .0.w releases should mainly take place at the near end of 2. Before
that the nightly snapshots serves the purpose well I think.

To get the snapshot numbering right and some other similar tasks
the .0.0 release should be the branch point, and will most often be
skipped as a release as such. For cosmetic reasons using just .0 may be
better.

So we have

1. Branch when trunk is considered a suitable startingpoint for getting
to stable, and tag a x.y.0 release at the branchpoint (or at least set
this version in configure.in).

2a. Release X.Y.0.1 when ready for testing
2b. Release X.Y.0.w as code gets better, w  1


Regards
Henrik


signature.asc
Description: This is a digitally signed message part


Re: [RFC] 3.1 branching

2008-09-24 Thread Alex Rousskov
On Thu, 2008-09-25 at 01:21 +0200, Henrik Nordstrom wrote:
 On ons, 2008-09-24 at 13:56 -0600, Alex Rousskov wrote:
  Cool. So, if there are no objections, we have:
  
  0)  Trunk is usually open for new stuff. Make daily snapshots.
  1)  Branch X.Y when major features are committed. Snapshots.
  2a) Release X.Y.0.0 when all major bugs are fixed.
  2b) Release X.Y.0.w as code gets better, w = 1.
  3a) Release X.Y.1 when the last X.Y.0.w was stable. Mark branch as stable.
  3b) Release X.Y.z as bugs get fixed, z  1.
 
 Sounds good to me, but see below for a minor adjustment and reasoning.

good stuff snipped

 So we have
 
 1. Branch when trunk is considered a suitable startingpoint for getting
 to stable, and tag a x.y.0 release at the branchpoint (or at least set
 this version in configure.in).
 
 2a. Release X.Y.0.1 when ready for testing
 2b. Release X.Y.0.w as code gets better, w  1

+1

Alex.




Re: [RFC] 3.1 branching

2008-09-24 Thread Henrik Nordstrom
On ons, 2008-09-24 at 21:26 +0200, Kinkie wrote:

 The version X.Y.Z for all Z  W approach means that it's not easy to
 tell what the state of a release is without knowing what W is for each
 X,Y.

Even then you don't know as the notion of something being stable is very
temporal in nature and often gets revoked as bugs is found.

 None of this has (or should have) any effect on the actual development
 cycle, it's just conventions.

Correct. Only the rules around when branching or merges to trunk may
take place has significant impact on development cycle. And I think we
are all leaning towards a more open approach there based on branch early
without blocking trunk.

Regards
Henrik


signature.asc
Description: This is a digitally signed message part


Re: [RFC] 3.1 branching

2008-09-24 Thread Amos Jeffries
 On Wed, 2008-09-24 at 20:56 +0200, Henrik Nordstrom wrote:
 On tor, 2008-09-25 at 03:32 +1200, Amos Jeffries wrote:

  I only have one question: how well does that release numbering model
  match the other OSS projects using the same numbering system? We don't
  want to set our own method and meaning when there is already a common
  way to get confused with.

 Numeric numbering with 0 as beta is used by many packaging schemes,
 and would not confuse anyone.

 I am positive on getting rid of the labels and use the scheme proposed
 by Kinkie.

 Cool. So, if there are no objections, we have:

 0)  Trunk is usually open for new stuff. Make daily snapshots.
 1)  Branch X.Y when major features are committed. Snapshots.
 2a) Release X.Y.0.0 when all major bugs are fixed.
 2b) Release X.Y.0.w as code gets better, w = 1.
 3a) Release X.Y.1 when the last X.Y.0.w was stable. Mark branch as
 stable.
 3b) Release X.Y.z as bugs get fixed, z  1.

Well, They way I'm thinking of the numbers your sequence is 1-off.

We are not stopping the daily snapshots, I think. So your 4-th place digit
is the same as the snapshot date.

We have NO new features added after X.Y.0, NO non-bug changes at all.
Stability seems to be taking the same length of time as a new Y release.
Which means we end up with 3.1.1, 3.2.1, 3.3.1 with possibly many smaller
4-place releases for each day or bugfix patch.

3-levels should be sufficient. It's also not a major change from current
practice, only dropping the name 'STABLE' from packages.

We don't really need the RC flag-days in my scheme either. I just thought
it would be slightly more descriptive for people to understand the .0 code
in those bundles is still not proven trustworthy for production. Also
leaves the option if a major bug fix went in (rare) we could -rc a few
test bundles before declaring it fixed).


 If needed, flag any snapshot or numbered version as Release Candidate.
 These flags do not affect the version number.

 To answer Alex regarding the RC (Release Candidate) this is not a
 release tag in itself. It's more of a temporary flag. It has also used
 between STABLE releases if there has been large or packaging changes,
 and those releases is not announced outside squid-dev or visible on the
 web site.

 Sounds good.

 Thank you,

 Alex.







Re: [RFC] 3.1 branching

2008-09-24 Thread Amos Jeffries
 On ons, 2008-09-24 at 13:56 -0600, Alex Rousskov wrote:
 Cool. So, if there are no objections, we have:

 0)  Trunk is usually open for new stuff. Make daily snapshots.
 1)  Branch X.Y when major features are committed. Snapshots.
 2a) Release X.Y.0.0 when all major bugs are fixed.
 2b) Release X.Y.0.w as code gets better, w = 1.
 3a) Release X.Y.1 when the last X.Y.0.w was stable. Mark branch as
 stable.
 3b) Release X.Y.z as bugs get fixed, z  1.

 Sounds good to me, but see below for a minor adjustment and reasoning.

 If needed, flag any snapshot or numbered version as Release Candidate.
 These flags do not affect the version number.

 Correct.

 With this scheme labels is outside the revision numbers and only a
 human concept in the text describing the releases (i.e. website and
 announces). Also allows us to revoke the stable label from any version
 known to have issues by simply updating the description,


 Only comment is that 1 is a little fuzzier than described above

 1 should take place when the tree is in a state the release manager and
 others involved in the process considers a good startingpoint for
 getting to 3. May still be major features missing, or there may even be
 too many features at that time.

 During 2 there is a significant flow of changes from trunk to the
 branch, and also stuff getting revoked from the branch and deferred to
 trunk waiting for the next release.

 But if there is a major feature pending for trunk which is not targeted
 for the branch then it's better to branch before that gets merged, even
 if waiting on other major items which may get into trunk after. But both
 ways are doable.

 It's also important to keep good quality of the changes going into
 trunk. The intention is that from a quality perspective trunk should
 always be in shape for 1, with 2 being a fairly short process (a month
 or so).

 The .0.w releases should mainly take place at the near end of 2. Before
 that the nightly snapshots serves the purpose well I think.

 To get the snapshot numbering right and some other similar tasks
 the .0.0 release should be the branch point, and will most often be
 skipped as a release as such. For cosmetic reasons using just .0 may be
 better.

 So we have

 1. Branch when trunk is considered a suitable startingpoint for getting
 to stable, and tag a x.y.0 release at the branchpoint (or at least set
 this version in configure.in).

 2a. Release X.Y.0.1 when ready for testing
 2b. Release X.Y.0.w as code gets better, w  1


Don't forget the next step after (w1  w12) is:
   Branch X.Z.0 

So why do we really need an extra .0 sitting on the end wasting space?

I have no intentions of maintaining anything other than:
  trunk + latest X.Z.n + most stable X.Y (if X.Z.n  X.Z.1)

The back-port workload becomes just too much for the few of us doing it.
Things won't get tested well, and stability goes backwards.

Lets just make STABLE release the highest of X.Y.W, .0 of that sequence
the pre-release beta code. And flag anything we *really* need sub-releases
of with a temporary text or even just the snapshot datestamp. Preferrably
leaving those type of changes for a later X.Z release with testing time in
trunk.

Keep in mind the whole W-level release cycle is going to be in the order
of months, with people who need long-term stability staying with
high-numbered older versions.

Amos




Re: [RFC] 3.1 branching

2008-09-24 Thread Alex Rousskov
On Thu, 2008-09-25 at 15:15 +1200, Amos Jeffries wrote:
  On ons, 2008-09-24 at 13:56 -0600, Alex Rousskov wrote:
  Cool. So, if there are no objections, we have:
 
  0)  Trunk is usually open for new stuff. Make daily snapshots.
  1)  Branch X.Y when major features are committed. Snapshots.
  2a) Release X.Y.0.0 when all major bugs are fixed.
  2b) Release X.Y.0.w as code gets better, w = 1.
  3a) Release X.Y.1 when the last X.Y.0.w was stable. Mark branch as
  stable.
  3b) Release X.Y.z as bugs get fixed, z  1.
 
  Sounds good to me, but see below for a minor adjustment and reasoning.
 
  If needed, flag any snapshot or numbered version as Release Candidate.
  These flags do not affect the version number.
 
  Correct.
 
  With this scheme labels is outside the revision numbers and only a
  human concept in the text describing the releases (i.e. website and
  announces). Also allows us to revoke the stable label from any version
  known to have issues by simply updating the description,
 
 
  Only comment is that 1 is a little fuzzier than described above
 
  1 should take place when the tree is in a state the release manager and
  others involved in the process considers a good startingpoint for
  getting to 3. May still be major features missing, or there may even be
  too many features at that time.
 
  During 2 there is a significant flow of changes from trunk to the
  branch, and also stuff getting revoked from the branch and deferred to
  trunk waiting for the next release.
 
  But if there is a major feature pending for trunk which is not targeted
  for the branch then it's better to branch before that gets merged, even
  if waiting on other major items which may get into trunk after. But both
  ways are doable.
 
  It's also important to keep good quality of the changes going into
  trunk. The intention is that from a quality perspective trunk should
  always be in shape for 1, with 2 being a fairly short process (a month
  or so).
 
  The .0.w releases should mainly take place at the near end of 2. Before
  that the nightly snapshots serves the purpose well I think.
 
  To get the snapshot numbering right and some other similar tasks
  the .0.0 release should be the branch point, and will most often be
  skipped as a release as such. For cosmetic reasons using just .0 may be
  better.
 
  So we have
 
  1. Branch when trunk is considered a suitable startingpoint for getting
  to stable, and tag a x.y.0 release at the branchpoint (or at least set
  this version in configure.in).
 
  2a. Release X.Y.0.1 when ready for testing
  2b. Release X.Y.0.w as code gets better, w  1
 
 
 Don't forget the next step after (w1  w12) is:
Branch X.Z.0 
 
 So why do we really need an extra .0 sitting on the end wasting space?
 
 I have no intentions of maintaining anything other than:
   trunk + latest X.Z.n + most stable X.Y (if X.Z.n  X.Z.1)
 
 The back-port workload becomes just too much for the few of us doing it.
 Things won't get tested well, and stability goes backwards.
 
 Lets just make STABLE release the highest of X.Y.W, .0 of that sequence
 the pre-release beta code. And flag anything we *really* need sub-releases
 of with a temporary text or even just the snapshot datestamp. Preferrably
 leaving those type of changes for a later X.Z release with testing time in
 trunk.
 
 Keep in mind the whole W-level release cycle is going to be in the order
 of months, with people who need long-term stability staying with
 high-numbered older versions.

Amos,

I am sorry, but I honestly do not understand this and the previous
your sequence is 1-off email. Perhaps the dancing Xs, Ys, and Zs with
some implied meaning confuse me. It feels like there is some basic
misunderstanding, especially since yours and Kinkie's earlier
suggestions were very similar (or so I thought!).

Could you please restate your proposal in a concise step-by-step form,
as opposed to explaining why the above plan would not work? This may put
us back on the same page again.

Thank you,

Alex.




Re: [RFC] 3.1 branching

2008-09-24 Thread Amos Jeffries
 On Thu, 2008-09-25 at 15:15 +1200, Amos Jeffries wrote:
  On ons, 2008-09-24 at 13:56 -0600, Alex Rousskov wrote:
  Cool. So, if there are no objections, we have:
 
  0)  Trunk is usually open for new stuff. Make daily snapshots.
  1)  Branch X.Y when major features are committed. Snapshots.
  2a) Release X.Y.0.0 when all major bugs are fixed.
  2b) Release X.Y.0.w as code gets better, w = 1.
  3a) Release X.Y.1 when the last X.Y.0.w was stable. Mark branch as
  stable.
  3b) Release X.Y.z as bugs get fixed, z  1.
 
  Sounds good to me, but see below for a minor adjustment and reasoning.
 
  If needed, flag any snapshot or numbered version as Release
 Candidate.
  These flags do not affect the version number.
 
  Correct.
 
  With this scheme labels is outside the revision numbers and only a
  human concept in the text describing the releases (i.e. website and
  announces). Also allows us to revoke the stable label from any
 version
  known to have issues by simply updating the description,
 
 
  Only comment is that 1 is a little fuzzier than described above
 
  1 should take place when the tree is in a state the release manager
 and
  others involved in the process considers a good startingpoint for
  getting to 3. May still be major features missing, or there may even
 be
  too many features at that time.
 
  During 2 there is a significant flow of changes from trunk to the
  branch, and also stuff getting revoked from the branch and deferred to
  trunk waiting for the next release.
 
  But if there is a major feature pending for trunk which is not
 targeted
  for the branch then it's better to branch before that gets merged,
 even
  if waiting on other major items which may get into trunk after. But
 both
  ways are doable.
 
  It's also important to keep good quality of the changes going into
  trunk. The intention is that from a quality perspective trunk should
  always be in shape for 1, with 2 being a fairly short process (a month
  or so).
 
  The .0.w releases should mainly take place at the near end of 2.
 Before
  that the nightly snapshots serves the purpose well I think.
 
  To get the snapshot numbering right and some other similar tasks
  the .0.0 release should be the branch point, and will most often be
  skipped as a release as such. For cosmetic reasons using just .0 may
 be
  better.
 
  So we have
 
  1. Branch when trunk is considered a suitable startingpoint for
 getting
  to stable, and tag a x.y.0 release at the branchpoint (or at least set
  this version in configure.in).
 
  2a. Release X.Y.0.1 when ready for testing
  2b. Release X.Y.0.w as code gets better, w  1
 

 Don't forget the next step after (w1  w12) is:
Branch X.Z.0 

 So why do we really need an extra .0 sitting on the end wasting space?

 I have no intentions of maintaining anything other than:
   trunk + latest X.Z.n + most stable X.Y (if X.Z.n  X.Z.1)

 The back-port workload becomes just too much for the few of us doing it.
 Things won't get tested well, and stability goes backwards.

 Lets just make STABLE release the highest of X.Y.W, .0 of that sequence
 the pre-release beta code. And flag anything we *really* need
 sub-releases
 of with a temporary text or even just the snapshot datestamp.
 Preferrably
 leaving those type of changes for a later X.Z release with testing time
 in
 trunk.

 Keep in mind the whole W-level release cycle is going to be in the order
 of months, with people who need long-term stability staying with
 high-numbered older versions.

 Amos,

 I am sorry, but I honestly do not understand this and the previous
 your sequence is 1-off email. Perhaps the dancing Xs, Ys, and Zs with
 some implied meaning confuse me. It feels like there is some basic
 misunderstanding, especially since yours and Kinkie's earlier
 suggestions were very similar (or so I thought!).

They are, very similar. I just don't see any need for 4-numbers in Kinkies
Scheme.


 Could you please restate your proposal in a concise step-by-step form,
 as opposed to explaining why the above plan would not work? This may put
 us back on the same page again.

Okay, using actual numbers and timelines of 3.1/3.2 to make it clearer
than the abstract. Dates are mostly fictional but based on reasonable
guesses.

trunk (3.1.0)
 - sept 30: branch with 10 new features
release 3.1.0
(makes trunk now 3.2.0)
 - oct 30: everything found 'stable'
release 3.1.1
 - nov 30: 10 new major+ bugs fixed :-(
release 3.1.2
(move 3.1.1 down to obsolete list)
 - dec 30: 2 new major+ bugs found
release 3.1.3
 - jan 1 : branch with 9 new features
release 3.2.0
(makes trunk now 3.3.0)
 - feb 1: everything found 'stable'
release 3.2.1
release 3.1.4 final bug fixes.
 - ...

trunk continues its merry way getting new features the whole time as 3.*.0
without any flag points.

grok?

Nothing implies a guaranteed STABLE. Merely the highest number (ie 3.1.4)
is most bug-free for all fixable problems of 3.1 

Re: [RFC] 3.1 branching

2008-09-24 Thread Alex Rousskov
On Thu, 2008-09-25 at 16:20 +1200, Amos Jeffries wrote:

 trunk (3.1.0)
  - sept 30: branch with 10 new features
 release 3.1.0
 (makes trunk now 3.2.0)
  - oct 30: everything found 'stable'
 release 3.1.1
  - nov 30: 10 new major+ bugs fixed :-(
 release 3.1.2
 (move 3.1.1 down to obsolete list)
  - dec 30: 2 new major+ bugs found
 release 3.1.3
  - jan 1 : branch with 9 new features
 release 3.2.0
 (makes trunk now 3.3.0)
  - feb 1: everything found 'stable'
 release 3.2.1
 release 3.1.4 final bug fixes.
  - ...
 
 trunk continues its merry way getting new features the whole time as 3.*.0
 without any flag points.

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!.

 (makes trunk now 3.2.0)
 (makes trunk now 3.3.0)

I am not sure what those mean. Trunk is a trunk. 3.2.0 is the first
release on a 3.2 branch, right? I am ignoring those for now.

 We may reach 3.1.6 if things go badly, or if new features get developed
 really slowly. But I don't think we will get enough checkpoints in the
 devel cycle to warrant two layers of .0.1 - .6.2

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.

 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.

Thank you,

Alex.




Re: [RFC] 3.1 branching

2008-09-24 Thread Amos Jeffries
 On Thu, 2008-09-25 at 16:20 +1200, Amos Jeffries wrote:

 trunk (3.1.0)
  - sept 30: branch with 10 new features
 release 3.1.0
 (makes trunk now 3.2.0)
  - oct 30: everything found 'stable'
 release 3.1.1
  - nov 30: 10 new major+ bugs fixed :-(
 release 3.1.2
 (move 3.1.1 down to obsolete list)
  - dec 30: 2 new major+ bugs found
 release 3.1.3
  - jan 1 : branch with 9 new features
 release 3.2.0
 (makes trunk now 3.3.0)
  - feb 1: everything found 'stable'
 release 3.2.1
 release 3.1.4 final bug fixes.
  - ...

 trunk continues its merry way getting new features the whole time as
 3.*.0
 without any flag points.

 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.
To which the only commiter should be the branch maintainer. 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.

That said, maintainers can do the same for trunk too if convinced its
worth the trouble.


 (makes trunk now 3.2.0)
 (makes trunk now 3.3.0)

 I am not sure what those mean. Trunk is a trunk. 3.2.0 is the first
 release on a 3.2 branch, right? I am ignoring those for now.

 We may reach 3.1.6 if things go badly, or if new features get developed
 really slowly. But I don't think we will get enough checkpoints in the
 devel cycle to warrant two layers of .0.1 - .6.2

 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?
The 'please try X' request is done as often after 3.1.1 as before.
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.

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.


 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.

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

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.

Amos



Re: [RFC] 3.1 branching

2008-09-23 Thread Amos Jeffries


 Lets set a date: 29 September?

 Well, I'll call for a partial hold right now. Please only commit bug
 fixes, minor cleanups, and features already on the roadmap for 3.1.
 The rest can be queued for commit post branch.



5 days to go and these bits left


* connection pinning
  I thinking it's been outstanding long enough we should get it into 3.1,
even if we have to hold PRE1 a week after the branch to stabilize it (or
test it in PRE1 ?).



Awaiting merge. (1-2 days).


* kerberos helper
  Markus has supplied another set of code, I assume its been tested
externally and just needs a drop-in.



Awaiting re-submission with some alterations. Non-blocker.


* eCAP



Awaiting merge submission.


* source layout



Started. Non-blocker.


* source formatting
  scripts committed for use already, I was planning on starting the
re-format and testbed run today here.


Now waiting on completion of other feature code.


Other misc stuff which qualifies but need some work if people have time:

Awaiting a verify:
  http://www.squid-cache.org/bugs/show_bug.cgi?id=2433

Awaiting a verify test and debug:
  http://www.squid-cache.org/bugs/show_bug.cgi?id=2393

Awaiting a developer:
 * testbed   level-02-maximus.opts
opposite of minimal. Everything enabled, leave configure to handle 
clashes properly etc.


Amos
--
Please use Squid 2.7.STABLE4 or 3.0.STABLE9


Re: [RFC] 3.1 branching

2008-09-23 Thread Alex Rousskov
On Wed, 2008-09-24 at 02:16 +1200, Amos Jeffries wrote:
 
   Lets set a date: 29 September?
  
   Well, I'll call for a partial hold right now. Please only commit bug
   fixes, minor cleanups, and features already on the roadmap for 3.1.
   The rest can be queued for commit post branch.
  
 
 
 5 days to go and these bits left
 
  * connection pinning
I thinking it's been outstanding long enough we should get it into 3.1,
  even if we have to hold PRE1 a week after the branch to stabilize it (or
  test it in PRE1 ?).
  
 
 Awaiting merge. (1-2 days).

Do we go from trunk to PRE or from trunk to DEVEL? I do not think trunk
code is stable enough to be called PRE at this point, so I was expecting
DEVEL. Personally, I would just call it 3.1.0 and categorize it as
development on the web site until we can move it into the stable
category (after a few 3.1.x releases).

  * kerberos helper
Markus has supplied another set of code, I assume its been tested
  externally and just needs a drop-in.
  
 
 Awaiting re-submission with some alterations. Non-blocker.
 
  * eCAP
  
 
 Awaiting merge submission.
 
  * source layout
  
 
 Started. Non-blocker.
 
  * source formatting
scripts committed for use already, I was planning on starting the
  re-format and testbed run today here.
 
 Now waiting on completion of other feature code.
 
 
 Other misc stuff which qualifies but need some work if people have time:
 
 Awaiting a verify:
http://www.squid-cache.org/bugs/show_bug.cgi?id=2433
 
 Awaiting a verify test and debug:
http://www.squid-cache.org/bugs/show_bug.cgi?id=2393
 
 Awaiting a developer:
   * testbed   level-02-maximus.opts
  opposite of minimal. Everything enabled, leave configure to handle 
 clashes properly etc.

Other important problems:
 http://www.squid-cache.org/bugs/show_bug.cgi?id=2459
 http://www.squid-cache.org/bugs/show_bug.cgi?id=2460

I have asked somebody to work on these for the next 10 days, but I do
not know if they will be able to fix them. I can work on them after
eCAP.

Also, it would be nice to review and commit TCP_RESET propagation patch:
http://www.squid-cache.org/bugs/show_bug.cgi?id=2042

Cheers,

Alex.




Re: [RFC] 3.1 branching

2008-09-23 Thread Amos Jeffries
 On Wed, 2008-09-24 at 02:16 +1200, Amos Jeffries wrote:
 
   Lets set a date: 29 September?
  
   Well, I'll call for a partial hold right now. Please only commit bug
   fixes, minor cleanups, and features already on the roadmap for 3.1.
   The rest can be queued for commit post branch.
  


 5 days to go and these bits left

  * connection pinning
I thinking it's been outstanding long enough we should get it into
 3.1,
  even if we have to hold PRE1 a week after the branch to stabilize it
 (or
  test it in PRE1 ?).
 

 Awaiting merge. (1-2 days).

 Do we go from trunk to PRE or from trunk to DEVEL? I do not think trunk
 code is stable enough to be called PRE at this point, so I was expecting
 DEVEL. Personally, I would just call it 3.1.0 and categorize it as
 development on the web site until we can move it into the stable
 category (after a few 3.1.x releases).

i ws

  * kerberos helper
Markus has supplied another set of code, I assume its been tested
  externally and just needs a drop-in.
 

 Awaiting re-submission with some alterations. Non-blocker.

  * eCAP
 

 Awaiting merge submission.

  * source layout
 

 Started. Non-blocker.

  * source formatting
scripts committed for use already, I was planning on starting the
  re-format and testbed run today here.

 Now waiting on completion of other feature code.


 Other misc stuff which qualifies but need some work if people have time:

 Awaiting a verify:
http://www.squid-cache.org/bugs/show_bug.cgi?id=2433

 Awaiting a verify test and debug:
http://www.squid-cache.org/bugs/show_bug.cgi?id=2393

 Awaiting a developer:
   * testbed   level-02-maximus.opts
  opposite of minimal. Everything enabled, leave configure to handle
 clashes properly etc.

 Other important problems:
  http://www.squid-cache.org/bugs/show_bug.cgi?id=2459
  http://www.squid-cache.org/bugs/show_bug.cgi?id=2460

 I have asked somebody to work on these for the next 10 days, but I do
 not know if they will be able to fix them. I can work on them after
 eCAP.

 Also, it would be nice to review and commit TCP_RESET propagation patch:
 http://www.squid-cache.org/bugs/show_bug.cgi?id=2042

 Cheers,

 Alex.







Re: [RFC] 3.1 branching

2008-09-23 Thread Amos Jeffries
 On Wed, 2008-09-24 at 02:16 +1200, Amos Jeffries wrote:
 
   Lets set a date: 29 September?
  
   Well, I'll call for a partial hold right now. Please only commit bug
   fixes, minor cleanups, and features already on the roadmap for 3.1.
   The rest can be queued for commit post branch.
  


 5 days to go and these bits left

  * connection pinning
I thinking it's been outstanding long enough we should get it into
 3.1,
  even if we have to hold PRE1 a week after the branch to stabilize it
 (or
  test it in PRE1 ?).
 

 Awaiting merge. (1-2 days).

 Do we go from trunk to PRE or from trunk to DEVEL? I do not think trunk
 code is stable enough to be called PRE at this point, so I was expecting
 DEVEL. Personally, I would just call it 3.1.0 and categorize it as
 development on the web site until we can move it into the stable
 category (after a few 3.1.x releases).

Before conn-pinning came up as an option I was thinking PRE. But it and
the other things destabilize enough to warrant a DEVEL period at least.
I'll decide after branching whether to release DEVEL, immediately or wait.

Concentration on the branch blockers then we can split and put the new
stuff and enhancements in trunk away from the hardening 3.1.x.


  * kerberos helper
Markus has supplied another set of code, I assume its been tested
  externally and just needs a drop-in.
 

 Awaiting re-submission with some alterations. Non-blocker.

  * eCAP
 

 Awaiting merge submission.

  * source layout
 

 Started. Non-blocker.

  * source formatting
scripts committed for use already, I was planning on starting the
  re-format and testbed run today here.

 Now waiting on completion of other feature code.


 Other misc stuff which qualifies but need some work if people have time:

 Awaiting a verify:
http://www.squid-cache.org/bugs/show_bug.cgi?id=2433

 Awaiting a verify test and debug:
http://www.squid-cache.org/bugs/show_bug.cgi?id=2393

 Awaiting a developer:
   * testbed   level-02-maximus.opts
  opposite of minimal. Everything enabled, leave configure to handle
 clashes properly etc.

Doing right now.


 Other important problems:
  http://www.squid-cache.org/bugs/show_bug.cgi?id=2459
  http://www.squid-cache.org/bugs/show_bug.cgi?id=2460

 I have asked somebody to work on these for the next 10 days, but I do
 not know if they will be able to fix them. I can work on them after
 eCAP.

If they need a mentor I can probably assist in auditing 2459.


 Also, it would be nice to review and commit TCP_RESET propagation patch:
 http://www.squid-cache.org/bugs/show_bug.cgi?id=2042


Well, this is what the branch is for, so we can commit these 'nice' things
to trunk for 3.2 from 30Sept on and start their testing as well without
affecting the stability of 3.1. The non-major but important bugs can be
fixed during DEVEL and PRE cycles. Branching is about features not bugs.


Amos



Re: [RFC] 3.1 branching

2008-09-23 Thread Alex Rousskov
On Wed, 2008-09-24 at 14:34 +1200, Amos Jeffries wrote:

  Do we go from trunk to PRE or from trunk to DEVEL? I do not think trunk
  code is stable enough to be called PRE at this point, so I was expecting
  DEVEL. Personally, I would just call it 3.1.0 and categorize it as
  development on the web site until we can move it into the stable
  category (after a few 3.1.x releases).
 
 Before conn-pinning came up as an option I was thinking PRE. But it and
 the other things destabilize enough to warrant a DEVEL period at least.
 I'll decide after branching whether to release DEVEL, immediately or wait.

Please email RFCs before making the final decision about the labels and
releases. Until we get to a stable stage, the labeling and timing of the
releases should be discussed as it can benefit from what others have
seen in their tests.

For example, IMO, the trunk was/is not PRE-ready even after the recent
fixes and before conn-pinning.

In general, I think we should virtually always do at least one
development release before a PRE. Jumping from trunk to PRE is much more
likely to discredit the branch than a development-to-PRE delay.

PRE, to me, means we think it is stable, what do you think?.
A development release, to me, means we are done adding features, please
help us with testing and polishing. And yes, I know that the
definitions at http://www.squid-cache.org/Versions/ are somewhat
different. IIRC, I failed to convince others that mine are better :-)

 Concentration on the branch blockers then we can split and put the new
 stuff and enhancements in trunk away from the hardening 3.1.x.

  Other important problems:
   http://www.squid-cache.org/bugs/show_bug.cgi?id=2459
   http://www.squid-cache.org/bugs/show_bug.cgi?id=2460
 
  I have asked somebody to work on these for the next 10 days, but I do
  not know if they will be able to fix them. I can work on them after
  eCAP.
 
 If they need a mentor I can probably assist in auditing 2459.

Thank you, I will keep that in mind!

  Also, it would be nice to review and commit TCP_RESET propagation patch:
  http://www.squid-cache.org/bugs/show_bug.cgi?id=2042
 
 
 Well, this is what the branch is for, so we can commit these 'nice' things
 to trunk for 3.2 from 30Sept on and start their testing as well without
 affecting the stability of 3.1.

I meant that it would be nice to include RESET propagation in v3.1 not
v3.2 :-). Not a big deal though.

 The non-major but important bugs can be fixed during DEVEL and PRE 
 cycles. Branching is about features not bugs.

Agreed, except I do not think we should have any known important bugs
when doing the first PRE (if we do PRE at all).

Thank you,

Alex.