On 12/13/06, Greg Reddin <[EMAIL PROTECTED]> wrote:
On Dec 13, 2006, at 5:47 PM, Craig McClanahan wrote: > 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. 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. Besides, I really do want to see us get another
release out - hopefully one that can go GA.
Me too :-)
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. I agree. I don't think the tiles piece should hold up the whole project from going GA. I want to have a way to promote components to GA as they are ready. I think I prefer the approach of marking separate release grades over creating separate releases. It seems like there's too much to do to roll out a release for each component to have its own cycle. We already distribute everything as separate packages, right? It doesn't seem like it would be too hard to apply a quality label to each package individually.
I agree with you philosophically :-). The devil, however, is in the details of how we manage branches and tags. The MyFaces folks went through an extended discussion on this topic, and ended up lumpting all their artifacts together. I don't think that's the optimum response, but I haven't thought through an overall strategy for dealing with the minutae. 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).
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 I really like this idea. This is basically the way we're doing it at work. It was the only way I could think of to be able to apply emergency patches to a stable codebase without deploying unstable features.
Cool -- I like it for the same reason. Craig