You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@wookie.apache.org by Paul Sharples <p....@bolton.ac.uk> on 2011/11/01 11:19:02 UTC
[DISCUSS] A change to our release management
Hi all,
I thought I'd put together some thoughts on our current release
management, after a few conversations I have had off list. As I am sure
you are all aware, I originally created a branch for a release, I then
made the artifacts from this branch and started the vote thread. (I
subsequently made further 'release candidates' from this branch if the
original vote failed). However, this is not the ideal method of putting
builds out (for a number of reasons) For example - having to port fixes
back to the branch from the trunk. (This happened twice with version
0.9.1 and 0.9.0)
From now on and starting from the 0.9.2 build I suggest to do it
differently. I plan to tag the trunk when we want to make a release and
then create the build artifacts from that. This means that...
(1) Getting ready for a build I would update all the property files in
the trunk, removing any -SNAPSHOT references. For example I would update
the current trunk property files from '0.9.2-incubating-SNAPSHOT' to
read '0.9.2-incubating'
(2) The trunk would be tagged and after that, the trunk version moves on
by one. For example for next build I would create a '0.9.2-incubating'
tag. The trunk property files would subsequently be set to
'0.9.3-incubating-SNAPSHOT'.
(3) If a vote fails, we move onto the next version no matter what. For
example the next one being' 0.9.2-incubating', if that vote fails then
we move onto '0.9.3-incubating' as the next release. The trunk will now
probably be set to' 0.9.3-incubating-SNAPSHOT' anyway. (this means that
sometimes we may skip a version because the vote failed)
(4) Tagged versions of code are not modified and will only be used to
build artifacts from.
(5) We will no longer have Release Candidate versions. i.e. 0.9.1-RC1,
0.9.1-RC2.
(6) We need to re-jig our JIRA issue management. We originally had lots
& lots of issues per version. As we are a small project (in terms of
commiters) we need to spread out issues so that we can get the tasks
done and be able to make releases more often.
(7) I believe RAVE, for example releases about once a month - do we also
want to release that often, or is it better to do it every 6 weeks or
every two months for us?
(8) Releasing more builds, more often means we are (possibly) going to
get to version 1.0 a lot quicker.
thoughts?
Paul
Re: [DISCUSS] A change to our release management
Posted by Paul Sharples <p....@bolton.ac.uk>.
On 01/11/2011 11:31, Ate Douma wrote:
> On 11/01/2011 11:19 AM, Paul Sharples wrote:
>> Hi all,
>>
>> I thought I'd put together some thoughts on our current release
>> management,
>> after a few conversations I have had off list. As I am sure you are
>> all aware, I
>> originally created a branch for a release, I then made the artifacts
>> from this
>> branch and started the vote thread. (I subsequently made further
>> 'release
>> candidates' from this branch if the original vote failed). However,
>> this is not
>> the ideal method of putting builds out (for a number of reasons) For
>> example -
>> having to port fixes back to the branch from the trunk. (This
>> happened twice
>> with version 0.9.1 and 0.9.0)
>>
>> From now on and starting from the 0.9.2 build I suggest to do it
>> differently. I
>> plan to tag the trunk when we want to make a release and then create
>> the build
>> artifacts from that. This means that...
>>
>> (1) Getting ready for a build I would update all the property files
>> in the
>> trunk, removing any -SNAPSHOT references. For example I would update
>> the current
>> trunk property files from '0.9.2-incubating-SNAPSHOT' to read
>> '0.9.2-incubating'
>> (2) The trunk would be tagged and after that, the trunk version moves
>> on by one.
>> For example for next build I would create a '0.9.2-incubating' tag.
>> The trunk
>> property files would subsequently be set to '0.9.3-incubating-SNAPSHOT'.
>> (3) If a vote fails, we move onto the next version no matter what.
>> For example
>> the next one being' 0.9.2-incubating', if that vote fails then we
>> move onto
>> '0.9.3-incubating' as the next release. The trunk will now probably
>> be set to'
>> 0.9.3-incubating-SNAPSHOT' anyway. (this means that sometimes we may
>> skip a
>> version because the vote failed)
>> (4) Tagged versions of code are not modified and will only be used to
>> build
>> artifacts from.
>> (5) We will no longer have Release Candidate versions. i.e.
>> 0.9.1-RC1, 0.9.1-RC2.
>> (6) We need to re-jig our JIRA issue management. We originally had
>> lots & lots
>> of issues per version. As we are a small project (in terms of
>> commiters) we need
>> to spread out issues so that we can get the tasks done and be able to
>> make
>> releases more often.
>> (7) I believe RAVE, for example releases about once a month - do we
>> also want to
>> release that often, or is it better to do it every 6 weeks or every
>> two months
>> for us?
>> (8) Releasing more builds, more often means we are (possibly) going
>> to get to
>> version 1.0 a lot quicker.
>>
>> thoughts?
>
> I'm very much in favor of 1-5.
> Note that this 'process' is something Maven is particular 'good' at,
> e.g. can do this almost fully automated... (just two or three simple
> commands to execute and you're 'done'). As well as automate lots of
> the 'other' issues concerning tagging/releasing like standardizing and
> ensuring the process of bundling the correct LICENSE/NOTICE files ;)
Our release process is pretty much automated now using ant/ivy.
(although I guess still not quite as slick as using maven) It's been
getting it to that stage which has been the problem. (i.e deploying
different licence/notice files for each of the particular builds & also
figuring out how to write complete ant/ivy tasks for deploying/signing
builds & doing the same with maven artifacts.) I'm not quite ready to
abandon it just yet. However, it seems the apache process for
releasing *anything* seems more geared towards using maven, rather then
ant/ivy (the documentation is better for doing things the 'maven' way).
I think at some point we should examine the possibility of moving over
to maven for our build process.
The latest problem with the NOTICE file not being correct is due to
building artifacts from the branch, which after 3 or 4 cycles had an out
of sync NOTICE file with the trunk version, my bad :-(
Paul
>
> Concerning 7) I have no strong opinion, but typically the shorter the
> cycle the more you are 'forced' to break large scale features up into
> more manageable chunks. Which in general is 'a good thing' imo, easier
> for others to chime in (so also good community wise), better to
> review/validate. And protects against those 'in process' features
> which never seem to complete but everyone is 'waiting' on... causing a
> lock on progress in general.
>
> About 8) that might be true or not, I don't think it automatically
> will speed up getting to a 1.0 version. But it likely will help :)
>
> Ate
>
>>
>> Paul
>
>
Re: [DISCUSS] A change to our release management
Posted by Ate Douma <at...@douma.nu>.
On 11/01/2011 11:19 AM, Paul Sharples wrote:
> Hi all,
>
> I thought I'd put together some thoughts on our current release management,
> after a few conversations I have had off list. As I am sure you are all aware, I
> originally created a branch for a release, I then made the artifacts from this
> branch and started the vote thread. (I subsequently made further 'release
> candidates' from this branch if the original vote failed). However, this is not
> the ideal method of putting builds out (for a number of reasons) For example -
> having to port fixes back to the branch from the trunk. (This happened twice
> with version 0.9.1 and 0.9.0)
>
> From now on and starting from the 0.9.2 build I suggest to do it differently. I
> plan to tag the trunk when we want to make a release and then create the build
> artifacts from that. This means that...
>
> (1) Getting ready for a build I would update all the property files in the
> trunk, removing any -SNAPSHOT references. For example I would update the current
> trunk property files from '0.9.2-incubating-SNAPSHOT' to read '0.9.2-incubating'
> (2) The trunk would be tagged and after that, the trunk version moves on by one.
> For example for next build I would create a '0.9.2-incubating' tag. The trunk
> property files would subsequently be set to '0.9.3-incubating-SNAPSHOT'.
> (3) If a vote fails, we move onto the next version no matter what. For example
> the next one being' 0.9.2-incubating', if that vote fails then we move onto
> '0.9.3-incubating' as the next release. The trunk will now probably be set to'
> 0.9.3-incubating-SNAPSHOT' anyway. (this means that sometimes we may skip a
> version because the vote failed)
> (4) Tagged versions of code are not modified and will only be used to build
> artifacts from.
> (5) We will no longer have Release Candidate versions. i.e. 0.9.1-RC1, 0.9.1-RC2.
> (6) We need to re-jig our JIRA issue management. We originally had lots & lots
> of issues per version. As we are a small project (in terms of commiters) we need
> to spread out issues so that we can get the tasks done and be able to make
> releases more often.
> (7) I believe RAVE, for example releases about once a month - do we also want to
> release that often, or is it better to do it every 6 weeks or every two months
> for us?
> (8) Releasing more builds, more often means we are (possibly) going to get to
> version 1.0 a lot quicker.
>
> thoughts?
I'm very much in favor of 1-5.
Note that this 'process' is something Maven is particular 'good' at, e.g. can do
this almost fully automated... (just two or three simple commands to execute and
you're 'done'). As well as automate lots of the 'other' issues concerning
tagging/releasing like standardizing and ensuring the process of bundling the
correct LICENSE/NOTICE files ;)
Concerning 7) I have no strong opinion, but typically the shorter the cycle the
more you are 'forced' to break large scale features up into more manageable
chunks. Which in general is 'a good thing' imo, easier for others to chime in
(so also good community wise), better to review/validate. And protects against
those 'in process' features which never seem to complete but everyone is
'waiting' on... causing a lock on progress in general.
About 8) that might be true or not, I don't think it automatically will speed up
getting to a 1.0 version. But it likely will help :)
Ate
>
> Paul
Re: [DISCUSS] A change to our release management
Posted by Scott Wilson <sc...@gmail.com>.
On 1 Nov 2011, at 10:19, Paul Sharples wrote:
> Hi all,
>
> I thought I'd put together some thoughts on our current release management, after a few conversations I have had off list. As I am sure you are all aware, I originally created a branch for a release, I then made the artifacts from this branch and started the vote thread. (I subsequently made further 'release candidates' from this branch if the original vote failed). However, this is not the ideal method of putting builds out (for a number of reasons) For example - having to port fixes back to the branch from the trunk. (This happened twice with version 0.9.1 and 0.9.0)
>
> From now on and starting from the 0.9.2 build I suggest to do it differently. I plan to tag the trunk when we want to make a release and then create the build artifacts from that. This means that...
>
> (1) Getting ready for a build I would update all the property files in the trunk, removing any -SNAPSHOT references. For example I would update the current trunk property files from '0.9.2-incubating-SNAPSHOT' to read '0.9.2-incubating'
> (2) The trunk would be tagged and after that, the trunk version moves on by one. For example for next build I would create a '0.9.2-incubating' tag. The trunk property files would subsequently be set to '0.9.3-incubating-SNAPSHOT'.
> (3) If a vote fails, we move onto the next version no matter what. For example the next one being' 0.9.2-incubating', if that vote fails then we move onto '0.9.3-incubating' as the next release. The trunk will now probably be set to' 0.9.3-incubating-SNAPSHOT' anyway. (this means that sometimes we may skip a version because the vote failed)
> (4) Tagged versions of code are not modified and will only be used to build artifacts from.
> (5) We will no longer have Release Candidate versions. i.e. 0.9.1-RC1, 0.9.1-RC2.
> (6) We need to re-jig our JIRA issue management. We originally had lots & lots of issues per version. As we are a small project (in terms of commiters) we need to spread out issues so that we can get the tasks done and be able to make releases more often.
> (7) I believe RAVE, for example releases about once a month - do we also want to release that often, or is it better to do it every 6 weeks or every two months for us?
> (8) Releasing more builds, more often means we are (possibly) going to get to version 1.0 a lot quicker.
>
> thoughts?
>
> Paul
I like all of these ideas - for 6/7 I think we can just keeping upping the tempo for each release to a rate that works for us. Definitely we should release more frequently, with fewer issues attached to each release.