Re: Release branch (was Re: Release Status)

2006-12-20 Thread Greg Reddin
Just a question:  are you keeping good notes as to what you're  
doing?  I'd like for the details of the process to end up on a wiki  
page if they are not already there.  After reading these messages I  
have no clue what you are doing :-)


Greg


On Dec 19, 2006, at 7:49 PM, Rahul Akolkar wrote:


On 12/17/06, Wendy Smoak [EMAIL PROTECTED] wrote:

On 12/16/06, Rahul Akolkar [EMAIL PROTECTED] wrote:

 Sounds like reasonable things to do :-) We even have a staging repo
 defined in the master pom (thanks Wendy) which we should use for  
this.


By default if the version doesn't end in -SNAPSHOT, the artifacts  
will
end up in http://people.apache.org/builds/shale/m2-staging- 
repository.



snip/

Ah, thats confirmation for one of my questions in the master pom  
thread.




Because each release needs to be staged separately, the entire
directory should be moved elsewhere sooner or later.  I'd suggest
moving it underneath wherever you're staging the assemblies for the
vote.


snap/

That directory (the staging repo) seems currently empty (has some
directories, but they are empty). Maybe I will clean it for good
measure before I start with the master pom (if I have the Unix perms).
We'll probably move it to the ~ where any assemblies get posted.



One other thing... I think we'll need to branch for releases.
Continuum [1] is building from the trunk, so changing the version
number to a non-snapshot will cause it to build and deploy those jars
to the staging repo based on the configuration in the pom.

Sounds like we need a 1.0 branch in any case, so this shouldn't be  
an issue.



snip/

OK, if everyone's fine with that, I will create the 1.0 branch (called
SHALE_1_0_x unless there are better suggestions) when we get closer to
the release (after all 1.0.4-SNAP issues are resolved and the master
pom is released etc.)

-Rahul



[1] http://myfaces.zones.apache.org:8080/continuum/servlet/continuum

--
Wendy







Re: Release branch (was Re: Release Status)

2006-12-20 Thread Rahul Akolkar

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

Just a question:  are you keeping good notes as to what you're
doing?  I'd like for the details of the process to end up on a wiki
page if they are not already there.  After reading these messages I
have no clue what you are doing :-)


snip/

I'm just going through the release guidelines [1] and process [2], and
clarifying those things that I feel the need to double check with
everyone. I'll try to add to the wiki docs if something needs
adding/changing, so far so good. For example, the branching discussed
in this thread has to do with the first bullet in the Final Snapshot
Review section of the guidelines [1] relating to continuum (and we
were planning on having two lines anyway -- 1.0.x and 1.1.x).

In summary, this is nothing revolutionary here. Having said that, at
any point, please feel free to stop me and ask what I am doing (or why
I am doing it, or where it is documented, or why it is not documented
etc. :-).

-Rahul

[1] http://wiki.apache.org/shale/ReleaseGuidelines
[2] http://wiki.apache.org/shale/ReleaseProcess



Greg


snap/


Re: Release branch (was Re: Release Status)

2006-12-20 Thread Rahul Akolkar

On 12/19/06, Craig McClanahan [EMAIL PROTECTED] wrote:

On 12/19/06, Rahul Akolkar [EMAIL PROTECTED] wrote:

snip/


 OK, if everyone's fine with that, I will create the 1.0 branch (called
 SHALE_1_0_x unless there are better suggestions) when we get closer to
 the release (after all 1.0.4-SNAP issues are resolved and the master
 pom is released etc.)


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.


snap/

Indeed, the framework/ will be tagged when the time is right.

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.

-Rahul


Re: Release branch (was Re: Release Status)

2006-12-20 Thread Craig McClanahan

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 

Re: Release branch (was Re: Release Status)

2006-12-20 Thread Greg Reddin


On Dec 20, 2006, at 2:51 PM, Craig McClanahan wrote:


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


So the first thing we'd do when we decide to release is - after  
finishing up business - start a branch for the release.  Then we work  
up the release process in the branch.  Once the release is ready and  
voted on, we cut a tag from the branch and roll the release.  Does  
that sound reasonably close to what you have in mind? :-)



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


[...]


 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.


I'm definitely in favor of this approach.  I've been following the  
MyFaces discussion.  As a MyFaces user I'm stuck in a place where I  
have to depend on a snapshot simply because our application cannot  
use any combination of core and tomahawk code  I really don't want to  
get into a situation like that with Shale and it could happen  
easily.  We're like MyFaces in that we have multiple sub-projects  
that can live independently but have to be able to work together.


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.


Yep, I had the first big Tiles refactor on my computer for at least a  
month before I was able to commit it and that was a sandbox project!   
I think this would also render moot the decision whether or not to do  
separate or combined releases.


Greg


Re: Release branch (was Re: Release Status)

2006-12-20 Thread Craig McClanahan

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



On Dec 20, 2006, at 2:51 PM, Craig McClanahan wrote:

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

So the first thing we'd do when we decide to release is - after
finishing up business - start a branch for the release.  Then we work
up the release process in the branch.  Once the release is ready and
voted on, we cut a tag from the branch and roll the release.  Does
that sound reasonably close to what you have in mind? :-)



Yep.  Two other notes:

* Anything that gets integrated into the branch will also likely
 need to get integrated into the trunk.  The other way around
 is not necessarily true ... it's likely best to minimize big changes
 on the trunk until the release is basically settled.

* During the branch-and-release process, the RM should get
 final say on whether any new issues get tagged with the
 ongoing release as Fixed In Version.  After all, he or she
 is after one thing ... get the release *out* :-).


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

[...]

  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.

I'm definitely in favor of this approach.  I've been following the
MyFaces discussion.  As a MyFaces user I'm stuck in a place where I
have to depend on a snapshot simply because our application cannot
use any combination of core and tomahawk code  I really don't want to
get into a situation like that with Shale and it could happen
easily.  We're like MyFaces in that we have multiple sub-projects
that can live independently but have to be able to work together.



Yep.


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.

Yep, I had the first big Tiles refactor on my computer for at least a
month before I was able to commit it and that was a sandbox project!
I think this would also render moot the decision whether or not to do
separate or combined releases.

Greg




Craig


Re: Release branch (was Re: Release Status)

2006-12-20 Thread Greg Reddin


On Dec 20, 2006, at 7:54 PM, Wendy Smoak wrote:


On 12/20/06, Craig McClanahan [EMAIL PROTECTED] wrote:

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



 So the first thing we'd do when we decide to release is - after
 finishing up business - start a branch for the release.  Then we  
work
 up the release process in the branch.  Once the release is ready  
and

 voted on, we cut a tag from the branch and roll the release.  Does
 that sound reasonably close to what you have in mind? :-)

Yep.  Two other notes:


Unless we're going to vote twice, the vote comes after tag and roll
the release.  (It has to exist before we can vote on it.  This is
related to release staging, where we tag and build the release, then
put it somewhere temporarily for examination and the vote.)


That makes sense.

Greg



Release branch (was Re: Release Status)

2006-12-19 Thread Rahul Akolkar

On 12/17/06, Wendy Smoak [EMAIL PROTECTED] wrote:

On 12/16/06, Rahul Akolkar [EMAIL PROTECTED] wrote:

 Sounds like reasonable things to do :-) We even have a staging repo
 defined in the master pom (thanks Wendy) which we should use for this.

By default if the version doesn't end in -SNAPSHOT, the artifacts will
end up in http://people.apache.org/builds/shale/m2-staging-repository.


snip/

Ah, thats confirmation for one of my questions in the master pom thread.



Because each release needs to be staged separately, the entire
directory should be moved elsewhere sooner or later.  I'd suggest
moving it underneath wherever you're staging the assemblies for the
vote.


snap/

That directory (the staging repo) seems currently empty (has some
directories, but they are empty). Maybe I will clean it for good
measure before I start with the master pom (if I have the Unix perms).
We'll probably move it to the ~ where any assemblies get posted.



One other thing... I think we'll need to branch for releases.
Continuum [1] is building from the trunk, so changing the version
number to a non-snapshot will cause it to build and deploy those jars
to the staging repo based on the configuration in the pom.

Sounds like we need a 1.0 branch in any case, so this shouldn't be an issue.


snip/

OK, if everyone's fine with that, I will create the 1.0 branch (called
SHALE_1_0_x unless there are better suggestions) when we get closer to
the release (after all 1.0.4-SNAP issues are resolved and the master
pom is released etc.)

-Rahul



[1] http://myfaces.zones.apache.org:8080/continuum/servlet/continuum

--
Wendy



Re: Release branch (was Re: Release Status)

2006-12-19 Thread Craig McClanahan

On 12/19/06, Rahul Akolkar [EMAIL PROTECTED] wrote:


On 12/17/06, Wendy Smoak [EMAIL PROTECTED] wrote:
 On 12/16/06, Rahul Akolkar [EMAIL PROTECTED] wrote:

  Sounds like reasonable things to do :-) We even have a staging repo
  defined in the master pom (thanks Wendy) which we should use for this.

 By default if the version doesn't end in -SNAPSHOT, the artifacts will
 end up in http://people.apache.org/builds/shale/m2-staging-repository.

snip/

Ah, thats confirmation for one of my questions in the master pom thread.


 Because each release needs to be staged separately, the entire
 directory should be moved elsewhere sooner or later.  I'd suggest
 moving it underneath wherever you're staging the assemblies for the
 vote.

snap/

That directory (the staging repo) seems currently empty (has some
directories, but they are empty). Maybe I will clean it for good
measure before I start with the master pom (if I have the Unix perms).
We'll probably move it to the ~ where any assemblies get posted.


 One other thing... I think we'll need to branch for releases.
 Continuum [1] is building from the trunk, so changing the version
 number to a non-snapshot will cause it to build and deploy those jars
 to the staging repo based on the configuration in the pom.

 Sounds like we need a 1.0 branch in any case, so this shouldn't be an
issue.

snip/

OK, if everyone's fine with that, I will create the 1.0 branch (called
SHALE_1_0_x unless there are better suggestions) when we get closer to
the release (after all 1.0.4-SNAP issues are resolved and the master
pom is released etc.)



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.

-Rahul



Craig


[1] http://myfaces.zones.apache.org:8080/continuum/servlet/continuum

 --
 Wendy




Re: Release Status

2006-12-17 Thread Wendy Smoak

On 12/16/06, Rahul Akolkar [EMAIL PROTECTED] wrote:


Sounds like reasonable things to do :-) We even have a staging repo
defined in the master pom (thanks Wendy) which we should use for this.


By default if the version doesn't end in -SNAPSHOT, the artifacts will
end up in http://people.apache.org/builds/shale/m2-staging-repository.

Because each release needs to be staged separately, the entire
directory should be moved elsewhere sooner or later.  I'd suggest
moving it underneath wherever you're staging the assemblies for the
vote.

One other thing... I think we'll need to branch for releases.
Continuum [1] is building from the trunk, so changing the version
number to a non-snapshot will cause it to build and deploy those jars
to the staging repo based on the configuration in the pom.

Sounds like we need a 1.0 branch in any case, so this shouldn't be an issue.

[1] http://myfaces.zones.apache.org:8080/continuum/servlet/continuum

--
Wendy


Re: Release Status

2006-12-16 Thread Rahul Akolkar

On 12/15/06, Craig McClanahan [EMAIL PROTECTED] wrote:



snip/


Re:  you guys tag teaming on RM for Shale ... +1!  :-).  The wiki has a
bunch of notes (mostly from Wendy) that I basically followed last time.  A
couple of things to watch out for:

* The shale-master pom should be upversioned and released
  separately first, so we don't have to depend on a snapshot version of it


snap/

Yup, I'll get to this, have a question first (probably deserves a new
thread -- in a few minutes).



* The parent pom has maven-javadoc-plugin and maven-source-plugin
  commented out for quicker development builds ... we'll want them for
  a release build.

* There's a bunch of other commented out cruft that we might as well
  get rid of too.


snip/

+1 to removing pom cruft (we can recover it from SVN history, and add
back later if needed).



* The details of how we can stage the actual bits to be voted on are likely
  to be slightly different ... but the key principle is that we want to be
able
  to examine the actual bits being proposed (i.e. with a 1.0.4 version
number,
  not an RC suffix) for the actual vote.  Rahul's getting used to this on
  Commons releases :-).

* Don't forget to tag the repository


snap/

Sounds like reasonable things to do :-) We even have a staging repo
defined in the master pom (thanks Wendy) which we should use for this.



After the release, I'm also suggesting that we hold off on major changes to
the repository until we talk about my earlier proposal to branch at this
point and start working on 1.1 in the trunk, giving us the ability to do
bugfix and/or security releases to the 1.0 branch without polluting it with
new features.  With SVN its easy to change our minds about whether the tag
is under tags or branches, but I'd like to see us formalize that
decision before getting active again.


snip/

OK by me.

-Rahul



Craig




Re: Release Status

2006-12-15 Thread Rahul Akolkar

On 12/13/06, Greg Reddin [EMAIL PROTECTED] wrote:

My project at work is finally in a place where we really need to use
Shale :-)  The 1.0.3 release does not work out of the box for us
because we are using MyFaces 1.1.5 and Shale 1.0.3 depends on MyFaces
1.1.1.  Shale 1.0.4-SNAPSHOT does not.  So I started looking to see
where we stand on publishing a release.


snip/

In terms of 1.0.4-SNAP JIRA issues, I will be fixing SHALE-348 this
weekend once I'm done traveling -- that leaves us with SHALE-61. I
dropped the ball on that, and ATM I don't think there is any concrete
proposal towards it.

At some point, I'd like to RM a Shale release so I'm aware of all the
minutiae. If you guys are OK with it, now is as good a time as any
(though the scp:// m2 server URLs don't work for me).

-Rahul


Re: Release Status

2006-12-15 Thread Greg Reddin


On Dec 15, 2006, at 10:38 AM, Rahul Akolkar wrote:


In terms of 1.0.4-SNAP JIRA issues, I will be fixing SHALE-348 this
weekend once I'm done traveling -- that leaves us with SHALE-61. I
dropped the ball on that, and ATM I don't think there is any concrete
proposal towards it.


It looks like code has been checked in for SHALE-61, but maybe it  
just needs to be tested?



At some point, I'd like to RM a Shale release so I'm aware of all the
minutiae. If you guys are OK with it, now is as good a time as any


That's funny.  I was going to volunteer too :-)  Maybe we can tag  
team it.


Greg



Re: Release Status

2006-12-15 Thread Greg Reddin


On Dec 15, 2006, at 10:38 AM, Rahul Akolkar wrote:


In terms of 1.0.4-SNAP JIRA issues, I will be fixing SHALE-348 this
weekend once I'm done traveling -- that leaves us with SHALE-61.


... also SHALE-211 [1].  I'm guessing we can close that one.  Any  
objections?


Greg

[1] https://issues.apache.org/struts/browse/SHALE-211




Re: Release Status

2006-12-15 Thread Rahul Akolkar

On 12/15/06, Greg Reddin [EMAIL PROTECTED] wrote:


On Dec 15, 2006, at 10:38 AM, Rahul Akolkar wrote:

 In terms of 1.0.4-SNAP JIRA issues, I will be fixing SHALE-348 this
 weekend once I'm done traveling -- that leaves us with SHALE-61. I
 dropped the ball on that, and ATM I don't think there is any concrete
 proposal towards it.

It looks like code has been checked in for SHALE-61, but maybe it
just needs to be tested?


snip/

No, don't think its been addressed completely.



 At some point, I'd like to RM a Shale release so I'm aware of all the
 minutiae. If you guys are OK with it, now is as good a time as any

That's funny.  I was going to volunteer too :-)  Maybe we can tag
team it.


snap/

Sure, let me know what bits you think I can help with.

-Rahul



Greg




Re: Release Status

2006-12-15 Thread Rahul Akolkar

On 12/15/06, Greg Reddin [EMAIL PROTECTED] wrote:


On Dec 15, 2006, at 10:38 AM, Rahul Akolkar wrote:

 In terms of 1.0.4-SNAP JIRA issues, I will be fixing SHALE-348 this
 weekend once I'm done traveling -- that leaves us with SHALE-61.

... also SHALE-211 [1].  I'm guessing we can close that one.  Any
objections?


snip/

Resolve it, at worst it will get re-opened. Its shouldn't affect the
release anyway, IMO.

-Rahul



Greg

[1] https://issues.apache.org/struts/browse/SHALE-211





Re: Release Status

2006-12-15 Thread Greg Reddin


On Dec 15, 2006, at 11:10 AM, Rahul Akolkar wrote:


... also SHALE-211 [1].  I'm guessing we can close that one.  Any
objections?


snip/

Resolve it, at worst it will get re-opened. Its shouldn't affect the
release anyway, IMO.


Done :-)

Greg



Re: Release Status

2006-12-14 Thread Greg Reddin


On Dec 14, 2006, at 3:42 AM, Craig McClanahan wrote:


It's just what the POM says, but I don't know how to override it.  In
1.1.1 MyFaces used the myfaces groupId and now they use
org.apache.myfaces.  Because of this Maven doesn't know that my
dependency on MyFaces 1.1.5 should override Shale's dependency on
1.1.1.  I thought I saw a way somewhere to work around that, but I
can't find it now.



Yah, dependencies that rename themselves can definitely be a  
problem :-(.  I

kiboshed the idea of renaming Commons Digester 1.8's group id for
essentially the same issue.  The theoretical solution to this is  
that your
downstream dependency (MyFaces in this case) would publish a  
redirect pom

that says any reference to myfaces:myfaces-api now referes to 
org.apache.myfaces:myfaces-api (and the same for the impl jar), but
apparently this is not trivially simple yet with Maven.


That's right, the redirect.  I'll look that up and see if I can use  
it while we're working on the next release.


Ideally, we should be able to incorporate an arbitrary set of Shale  
modules
into a release, while other modules might be releaseable  
separtely.  Later

on, we need to be able to merge something that becomes mature (say,
shale-tiles), while also being able to omit something that is -- at  
that

point in time -- undergoing some destabilizing development.

I'm hoping our resident Maven/SVN geniuses can help identify viable
strategies for executing on these ideals.  If not, we might have to  
go with
the alternative of a combined release with different quality grades  
(which

it sounds like Struts2 is going to do).


Let me make sure I understand what we have.  Please correct any  
misunderstandings below.


shale-master.pom - This is the base POM for the whole project.  It  
inherits from an org.apache parent.  We only have to release a new  
version of this if the information contained in it changes, right  
(i.e. add new committer, mailing list, svn changes, etc.)  And we can  
release it independently of everything else?


shale-parent.pom - The base POM for shale subprojects.  It defines  
the modules, base dependencies, etc.  If we release anything (shale- 
remoting, for example), we also have to release shale-parent, which  
means we have to release everything, right?


I guess one brute force method to release only certain artifacts  
would be to remove the modules we don't want to release from the  
parent POM, then replace them after running the release process.   
Kinda sucks, but it might work.  Before we roll a release at work we  
have to comment out a bunch of SNAPSHOT plugins in the POM that don't  
really apply to the released artifacts.


Greg



Re: Release Status

2006-12-14 Thread Wendy Smoak

On 12/14/06, Greg Reddin [EMAIL PROTECTED] wrote:


shale-master.pom - This is the base POM for the whole project.  It
inherits from an org.apache parent.  We only have to release a new
version of this if the information contained in it changes, right
(i.e. add new committer, mailing list, svn changes, etc.)  And we can
release it independently of everything else?


Yes, shale-master is released independently.  It has to be released in
advance of the framework so we don't have a snapshot as a parent.


shale-parent.pom - The base POM for shale subprojects.  It defines
the modules, base dependencies, etc.  If we release anything (shale-
remoting, for example), we also have to release shale-parent, which
means we have to release everything, right?


Right now, the build process is set up to release everything together.
It's not a Maven requirement-- consider the Maven plugins, which have
a parent pom, yet get released one at a time.

Whether to release the framework together or in pieces is just
something we need to decide, figure out how to communicate to users,
and then adjust the build to match.

What about shipping shale-tiles in a directory other than 'lib' to
indicate that it isn't part of the normal distribution?  Something
like the 'contrib' directory in Struts 1.2 that includes struts-el and
struts-faces.

--
Wendy


Re: Release Status

2006-12-14 Thread Greg Reddin


On Dec 14, 2006, at 8:53 AM, Niall Pemberton wrote:


As the shale-tiles module has no dependency on the rest of shale and
can be used in a vanilla JSF environment wouldn't it make more sense
to move this to the proposed Tiles project? I think the argument for
having JSF support in Tiles is different to the one of including
support for Struts or any other framework in the Tiles project since
JSF is a standard.


I've thought about that myself.  Shale-Tiles is *just* a  
ViewHandler.  I fear that importing it into the Tiles project might  
be a mistake for at least a couple of reasons:


1) It sets a bad (IMO) precedent of Tiles providing integration with  
parent frameworks instead of the frameworks providing integration  
with Tiles.


2) It may send the message that JSF is a preferred framework for  
Tiles, and people will start to ask questions about why Tiles doesn't  
provide Struts integration, etc.


I'm more comfortable with Shale-TIles staying here or even moving to  
MyFaces as an extension than becoming part of the core Tiles framework.



That would resolve the potentially confusing issue
of having different pieces with different quality labels?


It would solve the most immediate problem, but I don't think it  
addresses the root cause.  Shale is made up of a bunch of loosely- 
coupled components - so much so that, as you pointed out, most of  
them could live completely independently of one another.  But if each  
one was required to go through the whole release process separately,  
none of them would ever be released :-)  Plus, you also pointed out  
the issue of compatibility.  How can I know if shale-remoting-1.0.4  
can live happily alongside shale-dialog-1.0.6?


If we could cut a release that includes only selected components we  
might have this:


shale-1.0.4 includes:
 - shale-core-1.0.4
 - shale-remoting-1.0.4
 - shale-clay-1.0.4

Then Clay goes into unstable development while dialog-basic  
stabilizes so we release:


shale-1.0.5 includes
 - shale-core-1.0.5
 - shale-remoting-1.0.5
 - shale-dialog-basic-1.0.5

But what if I need shale-1.0.5 and I'm using Clay?  Which Clay do I  
use?  Is clay-1.0.4 compatible with core-1.0.5?  Maybe there's a way  
for shale-1.0.5 to include shale-clay-1.0.4 with a label of shale- 
clay-1.0.5.  That sounds pretty screwy, but the advantage is that  
users can know that components with the same version number are  
compatible.



Having an all distro is a
good plan IMO - but also making the independent components also
available as separate downloads would help communicate that there are
pieces available to use on their own and having independent version
numbers for them and not precluding the possibility of separate
release in the future would seem like a good idea IMO.


For projects using maven, of course, this is already possible.  I  
don't know when the last time was I actually downloaded a release  
package.  I just get it by adding a reference in my Maven POM to  
specific components.  To me, this approach is much easier when all  
the components have the same version number.


Greg




Re: Release Status

2006-12-14 Thread Greg Reddin


On Dec 14, 2006, at 9:22 AM, Wendy Smoak wrote:


Yes, shale-master is released independently.  It has to be released in
advance of the framework so we don't have a snapshot as a parent.


Oh, I see.  When I first looked at it I couldn't find a version number.




shale-parent.pom - The base POM for shale subprojects.  It defines
the modules, base dependencies, etc.  If we release anything (shale-
remoting, for example), we also have to release shale-parent, which
means we have to release everything, right?


Right now, the build process is set up to release everything together.
It's not a Maven requirement-- consider the Maven plugins, which have
a parent pom, yet get released one at a time.

Whether to release the framework together or in pieces is just
something we need to decide, figure out how to communicate to users,
and then adjust the build to match.


Sounds like that decision is the next logical step then.  If we went  
with separate releases for each artifact does that just involve  
removing the modules from the shale-parent POM?



What about shipping shale-tiles in a directory other than 'lib' to
indicate that it isn't part of the normal distribution?  Something
like the 'contrib' directory in Struts 1.2 that includes struts-el and
struts-faces.


I saw something about Struts 2 marking things as experimental.  I'm  
not sure how they are doing that though.


Greg



Re: Release Status

2006-12-14 Thread Wendy Smoak

On 12/14/06, Greg Reddin [EMAIL PROTECTED] wrote:

On Dec 14, 2006, at 9:22 AM, Wendy Smoak wrote:



 Whether to release the framework together or in pieces is just
 something we need to decide, figure out how to communicate to users,
 and then adjust the build to match.

Sounds like that decision is the next logical step then.  If we went
with separate releases for each artifact does that just involve
removing the modules from the shale-parent POM?


For the record, I'm for together.  While there are some good
arguments for releasing components individually, and it might even be
easier from a technical standpoint, I think we'll have problems
explaining it to users.  (I remember not wanting to announce a new
release of  the struts-core jar because I couldn't figure out how to
word it without making it sound like *all* of Struts 1.3 was ready.)
And if all else fails, I'll fall back on the be like Spring
argument. :)

On a related topic, I think if we're going to do the 'tag it, build
it, and vote on quality later' thing, it has to be okay to 'skip'
version numbers.  (Something IIRC Craig and Sean said they were not in
favor of.)

For example, at Tomcat they routinely discard a version number or two
in the process of getting the next build out.  After 5.5.20, the next
version available to users might well be 5.5.23.  It doesn't cause any
problems there.

With that, and some more automation from Maven-land, we could get in
the habit of more frequent tagged builds, which means more chance of
promoting one of them to GA.  (I'm hesitant to predict that we've got
it right after only four, especially with all the recent changes.)

--
Wendy


Re: Release Status

2006-12-14 Thread Greg Reddin


On Dec 14, 2006, at 10:43 AM, Wendy Smoak wrote:


For the record, I'm for together.  While there are some good
arguments for releasing components individually, and it might even be
easier from a technical standpoint, I think we'll have problems
explaining it to users.  (I remember not wanting to announce a new
release of  the struts-core jar because I couldn't figure out how to
word it without making it sound like *all* of Struts 1.3 was ready.)


That's the dilemma.  Releasing separately is hard for users to figure  
out.  Releasing together means release cycles are longer because a  
single component is not yet ready.


I'd prefer the unified release myself but how would we get past that  
hurdle?



And if all else fails, I'll fall back on the be like Spring
argument. :)


Sorry, I'm not familiar enough with Spring to know what that means :-)


On a related topic, I think if we're going to do the 'tag it, build
it, and vote on quality later' thing, it has to be okay to 'skip'
version numbers.  (Something IIRC Craig and Sean said they were not in
favor of.)


What's the objection to skipping versions?

Greg



Re: Release Status

2006-12-13 Thread Craig McClanahan

On 12/13/06, Greg Reddin [EMAIL PROTECTED] wrote:


My project at work is finally in a place where we really need to use
Shale :-)



That's great!

 The 1.0.3 release does not work out of the box for us

because we are using MyFaces 1.1.5 and Shale 1.0.3 depends on MyFaces
1.1.1.



Is it actually a hard dependency or just what the Maven POM says.  Can't say
that I have actually tried that combination.

 Shale 1.0.4-SNAPSHOT does not.  So I started looking to see

where we stand on publishing a release.



Good. I agree that it's time.

I started in the wiki to see the Release plans and there's not one

for 1.0.4.  However, I did see links to Bylaws and Release Guidelines
that don't exist.  And I found this:

http://wiki.apache.org/shale/ReleaseGuidelines

The Bylaws and Release Guidelines seem to be something we need to
work out pretty soon - possibly before we release anything else.  Am
I correct?



We've been informally following the guidelines that Struts uses, but it'd
definitely be a good idea  to formally vote on this.

Getting past that I went to JIRA to see what's to be done before

releasing 1.0.4:

https://issues.apache.org/struts/secure/IssueNavigator.jspa?
reset=truemode=hidesorter/order=DESCsorter/
field=priorityresolution=-1pid=10130fixfor=21740

and there's still quite a list.  In addition there's tickets that
aren't assigned to a release.  So, what has to be done before we can
cut a release?



I just added a TBD version that we can use to formally mark issues that we
have considered and decided to keep, but haven't allocated to a particular
release yet.  It would be good to go through the list and make a
determination on the unmarked ones -- with the default answer being put
them in TBD.


If we can narrow it down to a manageable list, I'm willing to help

get the release done so we can depend on something besides a snapshot.



For the issues marked 1.0.4-SNAPSHOT, a couple weeks ago I sent out a nag
email about several of these issues, and there has been some progress made.
Let's get the rest of those cleaned up, either by finishing them or by
reassigning to a later version.  If you see unmarked ones you want to work
on, feel free to assign them to yourself and fire away.

One thing that might affect Greg's enthusiasm :-) I'd like to see us do is
try to position for a GA release of everything except shale-tiles, either by
marking it with a separate release grade when we ultimately vote, or by
making it available separately as its own release.  I think we can be ready
to have API stability on everything else in just a short while.

Longer term, I'd also like us to think of the following strategy when we do
achieve a 1.0.x GA-graded release:

* Branch the 1.0 codebase at that point

* Start working on 1.1 things on the trunk

* Put new features only into the trunk

* As we fix bugs in the trunk, backport relevant ones to the 1.0 branch

This will give us a straightforward way to do minor bugfix releases on
1.0(or react to a reported security vulnerability, for example),
quickly --
without users having to be concerned about disruption due to new feature
work and bugfix work happening together all the time.

Mixing these things together is a common knock against many open source
projects, as well as being a barrier to getting new releases out the door.
Let's take a page from the HTTPD project in this regard, and be ready to do
bugfix updates on 1.0 while we go crazy on new stuff in 1.1.

Greg




Craig