> My mental model, though, is that anything that’s not a concrete release > number is a target version. Which is where 5.0 goes wrong - it’s not a > release so it should be a target, but for some reason we use it as a > placeholder to park work arriving in 5.0.0. Ahhhhhhhhhhh.
> So tickets go to 5.0-target if they target 5.0, and to 5.0.0 once they are > resolved (with additional labels as necessary) Adding -target would definitely make things more clear. If we moved to "5.0 == unreleased, always move to something on commit" then you still have to find some external source to figure out what's going on w/our versioning. I like 5.0-target. Easy to query for "FixVersion = 5.0-target AND type != 'Bug'" to find stragglers after GA is cut to move to 5.1-target. Still have the "update children FixVersion for feature branch when branch is merged" bit but that's not so onerous. On Thu, May 18, 2023, at 10:28 AM, Benedict wrote: > > The .x approach only breaks down for unreleased majors, for which all of our > intuitions breakdown and we rehash it every year. > > My mental model, though, is that anything that’s not a concrete release > number is a target version. Which is where 5.0 goes wrong - it’s not a > release so it should be a target, but for some reason we use it as a > placeholder to park work arriving in 5.0.0. > > If we instead use 5.0.0 for this purpose, we just need to get 5.0-alpha1 > labels added when those releases are cut. > > Then I propose we break the confusion in both directions by scrapping 5.0 > entirely and introducing 5.0-target. > > So tickets go to 5.0-target if they target 5.0, and to 5.0.0 once they are > resolved (with additional labels as necessary) > > Simples? > >> On 18 May 2023, at 15:21, Josh McKenzie <jmcken...@apache.org> wrote: >> >>> My personal view is that 5.0 should not be used for any resolved tickets - >>> they should go to 5.0-alpha1, since this is the correct release for them. >>> 5.0 can then be the target version, which makes more sense given it isn’t a >>> concrete release. >> Well now you're just opening Pandora's box about our strange idioms with >> FixVersion usage. ;) >> >>> every ticket targeting 5.0 could use fixVersion 5.0.x, since it is pretty >>> clear what this means. >> I think this diverges from our current paradigm where "5.x" == next feature >> release, "5.0.x" == next patch release (i.e. bugfix only). Not to say it's >> bad, just an adjustment... which if we're open to adjustment... >> >> I'm receptive to transitioning the discussion to that either on this thread >> or another; IMO we remain in a strange and convoluted place with our >> FixVersioning. My understanding of our current practice: >> • .x is used to denote target version. For example: 5.x, 5.0.x, 5.1.x, 4.1.x >> • When a ticket is committed, the FixVersion is transitioned to resolve the >> X to the next unreleased version in which it'll release >> • Weird Things are done to make this work for the release process and >> release manager on feature releases (alpha, beta, etc) >> • There's no clear fit for feature branch tickets in the above schema >> >> And if I take what I think you're proposing here and extrapolate it out: >> • .0 is used to denote target version. For example: 5.0. 5.0.0. 5.1.0. 4.1.0 >> • This appears to break down for patch releases: we _do_ release .0 >> versions of them rather than alpha/beta/etc, so a ticket targeting 4.1.0 >> would initially mean 2 different things based on resolved vs. unresolved >> status (resolved == in release, unresolved == targeting next unreleased) and >> that distinction would disappear on resolution (i.e. resolved + 4.1.0 would >> no longer definitively mean "contained in .0 release") >> • When a release is cut, we bulk update FixVersion ending in .0 to the >> release version in which they're contained (not clear how to disambiguate >> the things from the above bullet point) >> • For feature releases, .0 will transition to -alpha1 >> One possible solution would be to just no longer release a .0 version of >> things and reserve .0 to indicate "parked". I don't particularly like that >> but it's not the worst. >> >> Another possible solution would be to just scrap this approach entirely and >> go with: >> • FixVersion on unreleased _and still advocated for tickets_ always targets >> the next unreleased version. For other tickets where nobody is advocating >> for their work / inclusion, we either FixVersion "Backlog" or close as >> "Later" >> • When a release is cut, roll all unresolved tickets w/that FixVersion to >> the next unreleased FixVersion >> • When we're gearing up to a release, we can do a broad pass on everything >> that's unreleased w/the next feature releases FixVersion and move tickets >> that are desirable but not blockers to the next unreleased FixVersion (patch >> for bug, minor/major for improvements or new features) >> • CEP tickets target the same FixVersion (i.e. next unreleased Feature >> release) as their parents. When the parent epic gets a new FixVersion on >> resolution, all children get that FixVersion (i.e. when we merge the CEP and >> update its FixVersion, we bulk update all children tickets) >> >> On Thu, May 18, 2023, at 9:08 AM, Benedict wrote: >>> >>> I don’t think we should over complicate this with special CEP release >>> targets. If we do, they shouldn’t be versioned. >>> >>> My personal view is that 5.0 should not be used for any resolved tickets - >>> they should go to 5.0-alpha1, since this is the correct release for them. >>> 5.0 can then be the target version, which makes more sense given it isn’t a >>> concrete release. >>> >>> But, in lieu of that, every ticket targeting 5.0 could use fixVersion >>> 5.0.x, since it is pretty clear what this means. Some tickets that don’t >>> hit 5.0.0 can then be postponed to a later version, but it’s not like this >>> is burdensome. Anything marked feature/improvement and 5.0.x gets bumped to >>> 5.1.x. >>> >>> >>> >>> >>> >>> >>>> On 18 May 2023, at 13:58, Josh McKenzie <jmcken...@apache.org> wrote: >>>> >>>> CEP-N seems like a good compromise. NextMajorRelease bumps into our >>>> interchangeable use of "Major" and "Minor" from a semver perspective and >>>> could get confusing. Suppose we could do NextFeatureRelease, but at that >>>> point why not just have it linked to the CEP and have the epic set. >>>> >>>> On Thu, May 18, 2023, at 12:26 AM, Caleb Rackliffe wrote: >>>>> ...otherwise I'm fine w/ just the CEP name, like "CEP-7" for SAI, etc. >>>>> >>>>> On Wed, May 17, 2023 at 11:24 PM Caleb Rackliffe >>>>> <calebrackli...@gmail.com> wrote: >>>>>> So when a CEP slips, do we have to create a 5.1-cep-N? Could we just >>>>>> have a version that's "NextMajorRelease" or something like that? It >>>>>> should still be pretty easy to bulk replace if we have something else to >>>>>> filter on, like belonging to an epic? >>>>>> >>>>>> On Wed, May 17, 2023 at 6:42 PM Mick Semb Wever <m...@apache.org> wrote: >>>>>>> >>>>>>> >>>>>>> On Tue, 16 May 2023 at 13:02, J. D. Jordan <jeremiah.jor...@gmail.com> >>>>>>> wrote: >>>>>>>> Process question/discussion. Should tickets that are merged to CEP >>>>>>>> feature branches, like >>>>>>>> https://issues.apache.org/jira/browse/CASSANDRA-18204, have a fixver >>>>>>>> of 5.0 on them After merging to the feature branch? >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> For the SAI CEP which is also using the feature branch method the >>>>>>>> "reviewed and merged to feature branch" tickets seem to be given a >>>>>>>> version of NA. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Not sure that's the best “waiting for cep to merge” version either? >>>>>>>> But it seems better than putting 5.0 on them to me. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Why I’m not keen on 5.0 is because if we cut the release today those >>>>>>>> tickets would not be there. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> What do other people think? Is there a better version designation we >>>>>>>> can use? >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On a different project I have in the past made a “version number” in >>>>>>>> JIRA for each long running feature branch. Tickets merged to the >>>>>>>> feature branch got the epic ticket number as their version, and then >>>>>>>> it got updated to the “real” version when the feature branch was >>>>>>>> merged to trunk. >>>>>>>> >>>>>>> >>>>>>> >>>>>>> Thanks for raising the thread, I remember there was some confusion >>>>>>> early wrt features branches too. >>>>>>> >>>>>>> To rehash, for everything currently resolved in trunk 5.0 is the >>>>>>> correct fixVersion. (And there should be no unresolved issues today >>>>>>> with 5.0 fixVersion, they should be 5.x) >>>>>>> >>>>>>> >>>>>>> When alpha1 is cut, then the 5.0-alpha1 fixVersion is created and >>>>>>> everything with 5.0 also gets 5.0-alpha1. At the same time 5.0-alpha2, >>>>>>> 5.0-beta, 5.0-rc, 5.0.0 fixVersions are created. Here both 5.0-beta and >>>>>>> 5.0-rc are blocking placeholder fixVersions: no resolved issues are >>>>>>> left with this fixVersion the same as the .x placeholder fixVersions. >>>>>>> The 5.0.0 is also used as a blocking version, though it is also an >>>>>>> eventual fixVersion for resolved tickets. Also note, all tickets up to >>>>>>> and including 5.0.0 will also have the 5.0 fixVersion. >>>>>>> >>>>>>> >>>>>>> >>>>>>> A particular reason for doing things the way they are is to make it >>>>>>> easy for the release manager to bulk correct fixVersions, at release >>>>>>> time or even later, i.e. without having to read the ticket or go talk >>>>>>> to authors or painstakingly crawl CHANGES.txt. >>>>>>> >>>>>>> >>>>>>> >>>>>>> For feature branches my suggestion is that we create a fixVersion for >>>>>>> each of them, e.g. 5.0-cep-15 >>>>>>> >>>>>>> Yup, that's your suggestion Jeremiah (I wrote this up on the plane >>>>>>> before I got to read your post properly). >>>>>>> >>>>>>> >>>>>>> >>>>>>> (As you say) This then makes it easy to see where the code is (or what >>>>>>> the patch is currently being based on). And when the feature branch is >>>>>>> merged then it is easy to bulk replace it with trunk's fixVersion, e.g. >>>>>>> 5.0-cep-15 with 5.0 >>>>>>> >>>>>>> >>>>>>> >>>>>>> The NA fixVersion was introduced for the other repositories, e.g. >>>>>>> website updates. >>>>>>> >>>> >>