Damn, funky webmail, sorry about the earlier incomplete message. Attempt #2:
Steven, Regarding your payloads example and 2.1 vs. 3.0, there is a simpler approach, and one that we have pretty much (unintentionally?) been using. Larger chunks of work take longer, need more eyes to check them, to test them locally, iron out bugs, etc. and finally approve and commit them. Therefore, while this work is in progress, it's all done via patches in JIRA, and people's local repositories. No commits until the solid patch is available. If the change is sufficiently large and warrants a major release, we can make the release with whatever is in the trunk, say 2.1, and then commit the big patch in the trunk that's headed for 3.0 (n.b. hypothetical version - we may have 2.2, 2.3, etc., who knows), avoiding extra branches. Lucene is pretty mature and there are typically not that many big changes being worked on in parallel. I think this is simpler, easier to manage, less likely to cause a mistake, requires less SVN merging knowledge, etc. I think that's what has been practised so far, and I think it has worked pretty well. I don't think we are looking for a change here. Otis ----- Original Message ---- From: Steven Parkes <[EMAIL PROTECTED]> To: java-dev@lucene.apache.org Sent: Friday, October 27, 2006 4:45:16 PM Subject: RE: releases not neccessarily ... if somethings in the trunk, you're saying it should be included in a release eventually ... but that doesn't neccessarily need ot be the 2.1 release ,it might be the 3.0 release I can see this in theory, but do our use patterns for svn support it? My understanding is that trunk is the proto-X.Y.0 branch. If you start checking X.Y+1.0 or X+1.0.0 stuff in there, it's going to make creating an X.Y.0 release difficult, right? It's possible to imagine yanking the stuff out, but the release process just got a lot more difficult to manage. The svn model Lucene is using, as I understand it, is one main branch (trunk) for development plus patch branches for cut releases (in case patch release are ever deemed necessary). Only trunk is "actively" maintained: it's the only thing that gets most commits. The patch branches aren't actively maintained: things aren't pushed/committed to them routinely. Instead, if a patch release is deemed critical, patches are pulled/ported from trunk, facilitated by Jira and svn merge. This makes life a lot easier. Having two branches getting "lots" of changes is difficult to manage. I've not had to do it. And as far as I know, Lucene has been able to function well w/o that complexity. Will the Lucene needs ever result in a need for a more complex svn use model? I guess a straw man example would be a 3.0 release. Say we wanted to start working on payloads, since that's been talked about as something big enough for people to be cautious of. How would that work in svn? You don't want to check that into trunk today would you, if trunk were to be planned for use of a 2.1 or 2.X? One could start a 3.0 branch along side trunk or a 2.X branch, but having two branches that are going to create non-patch releases is painful, isn't it? Having to commit/test code twice? You'd presumably want the 3.0 branch to get everything that went into any 2.X branch. Because of the complexity, most projects I'm aware of don't want to deal with two non-patch branches if they can at all possibly avoid it. I'm aware of a couple of alternatives. One is to create a "payloads" branch. It gets only the payloads work. When it's decided that work on 3.0 can commence on trunk, payloads (and anything else being withheld for a major X.0.0 release) can get merged in. Alternatively, you can do this work in contrib or just with patches in svn. The main issue is reserving trunk for things going into the next X.Y release. Is that the way Lucene has operated? i think what you are describing is really waht the intended purpose of FV is ... I did look at the Jira docs and they seem ambiguous. Can either mean planned or completed. One reason that one might want to reserve FV for committed code is that it's used by the Release Notes feature. Of course, I suppose it depends on whether one cares about that feature or if one wants it to represent what might go in, but for me, I like the idea that it's a summary of what's committed on the current branch. When people ask me now what's going to be in a putative 2.1, I'd like to be able to push the Release Notes button and say that's what's in so far. But I can't, given the way we use FV now. Of course, that will only work if FV is used consistently and all (significant?) work committed in svn is reflected in Jira. if we really want to track all of this infomation better, it would probably make sense to use the FV the way you describe (an indication as to what release new functionality / bug-fixes have been commited to) and have new (optional) fields indicating what FV has been used for in the past: How significant is are the changes resulting from this issue? A - major bug fix; no api changes; should be put into an X.Y.Z releases ASAP B - minor bug fix or new functionality; only backwards compatible api changes, should be included in the next X.Y.0 release C - major functionality change; significant API changes, requires a new X.0 release. Hmmm ... this is starting to sound familiar. Is A the same thing as Critical/Bug and B {Major/Minor/Trivial}/Bug? Don't know about C. There's also Affects Version/s, so C could be New Feature/AV/s = 3.0? --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]