On 12/20/06, Greg Reddin <[EMAIL PROTECTED]> wrote:


On Dec 20, 2006, at 2:01 PM, Rahul Akolkar wrote:

> On 12/19/06, Craig McClanahan <[EMAIL PROTECTED]> wrote:
>> I would have a mild preference for naming the branch SHALE_1_0 but
>> I'm not
>> going to choke if we go with what you proposed either.  I'm also
>> presuming
>> we'll create a tag (SHALE_1_0_4) at the appropriate time.

[...]

> As regards to the name of the branch, I prefer 1_0_x over 1_0 since
> the former looks like a line of development to me (the latter more
> like a branch for a single release). However, this isn't anything I
> want to spend time over. You pick.

I think whoever makes the branch gets to pick :-)


That's as close to "the zen of Apache" as you can get in one statement :-).
+1.

Do we really need to create both a tag and a branch for every release
we roll?  (If so, I'm ok, btw, but I'd like to hear the explanation.)

For example, if we cut 1.0.4 does that mean we are going to create a
tag called SHALE_1_0_4 and a branch called SHALE_1_0?  Or do we wait
till we want to start development on a feature that warrants a 1.1
release to create the SHALE_1_0 branch?  Also, is it common practice
to *never* touch a tag once it's created or is it considered "ok" to
apply a patch to a tag if needed?  If we should never touch it then I
don't see the justification for svn doing tags the way it does.  If
we can touch it then I don't see why we need a branch for a "micro"-
level release.  (Branches for "minor" and "major" releases are
understandable.)


This is coming from a couple of different directions:

* Since the trunk is being continuously built by Continuum,
 trying to do our release cutting there (including removing
 SNAPSHOT from the version numbers) would cause Continuum
 to publish a release, with the real version number, before
 we had a chance to vote on it.  Hence, we need to branch
 for the actual release cutting process, and do it there.

* I have a desire to push our further development process to a
 model where we're doing "new feature" development only on the
 trunk, but we maintain active branches for backporting bugfixes
 and security patches as needed.  Let's assume a future scenario
 where we just released a 1.3.x GA release ... we might have the
 following branches available:

 - 1.3.x -- Trunk becomes used for 1.4 development, but be ready
   to backport significant bugfixes (not features) so we can support
   the current users with maintenance, without disrupting them
   with potentially incompatible new features.

 - 1.2.x -- Still possible to backport bugfixes, but more likely to only
   do security related fixes.

 - 1.1.x -- Likely to be security fixes only.

 - 1.0.x -- Probably formally retired by this point at time.

 I've been seeing lots of projects get dinged because they mix
 bugfixes and feature updates all the time, so you can't get one
 without the other -- to say nothing about how it stretches out
 your release cycles (just as we're seeing with 1.0.4 :-).  Today's
 thread on the MyFaces dev list is just one sample of this.

* No matter what release management process we do, we'll always
 want to tag the sources that went into an actual release.

Of course, with Subversion the semantic difference between a branch and a
tag is almost nothing ... it's more a state of mind.  A tag is a snapshot,
and a branch is a place where some future development might happen (in a
pattern like that described above).

A related question touched on in the previous paragraph is this:  How
do we decide when to start 1.1 development?  It would seem to be
based on a significant feature change not just that we cut a release.


I'd like to get us into the habit of upping the minor (or major, if upcoming
changes are going to be big) number every time we get to GA quality. This
will require some discipline about new feature development, such as starting
such work on "developer" branches, and then merging into the trunk when the
roadmap says it's time to add this feature.  Oh yeah, that means we better
have a roadmap too :-).

From a developer perspective, I think setting up a branch whenever you want
to work on a new feature when it's not the right time to build it into the
next release will help us remove that instinctive pressure to add "one more
feature", but also satisfy the itch that I want to get my initial work out
there shared someplace it can be collaborated on.  And yes, I'm *really*
talking to myself on this issue, as well as anyone else :-).

I'm sorry if I'm rehashing things that are already commonplace
everywhere else.  I just want to make sure I understand why we are
doing what we are doing.  Plus, if the Tiles project comes to
fruition I suspect I'm going to be seeing these issues come up again :-)


These aren't hashed out yet ... it's an evolving process, so it is very
timely for us to get them as correct as we can the first time we might
actually have a GA quality release.  So, thanks for raising the questions.
It'll help us all come to consensus on the process part.

And yes, I was hoping you'd be taking notes so we can do a Tiles TLP right
as well :-).

Greg


Craig

Reply via email to