OK, so can we agree on this?

- minor/major releases every start of a quarter (1/1, 4/1, 7/1, 10/1)
- patch releases in between as determined by release manager

by that logic, we may have N patch releases between now and 12/31 and on
1/1 we will have 6.1.0 (or 7.0 if a major is warranted).

Jeremy



On Wed, Oct 27, 2021 at 12:52 PM ocket 8888 <ocket8...@gmail.com> wrote:

> Fortunately bugfixes rarely require migrations, those are usually only for
> new features, or backporting would probably be impossible.
>
> On Wed, Oct 27, 2021 at 10:06 AM Jeremy Mitchell <mitchell...@gmail.com>
> wrote:
>
> > Just to be clear, cherry-picks (aka backports) (from master to the
> release
> > branch) should be limited to bug fixes and would only apply to patch
> > releases (i.e. 6.0.1) and I would expect the release manager to determine
> > if the cherry-pick is safe or not. Yes, some can be very messy and
> > dangerous and IMO those should probably be punted to the next release
> > branch.
> >
> > jeremy
> >
> > On Wed, Oct 27, 2021 at 8:59 AM Gray, Jonathan
> > <jonathan_g...@comcast.com.invalid> wrote:
> >
> > > > > why not instead ask “Is it good enough?” and “Is it better than
> what
> > we
> > > presently have?” as often as possible.
> > >
> > > > may not help very much, because fixing a bug is always "better than
> > what
> > > we
> > > presently have".
> > >
> > > Not always.  Sometimes the risks entailed with cherry-picking and
> > > repatching bugfixes isn’t small.  Sometimes bugfixes rely on subtle
> side
> > > effects or behaviors not captured in the PR.  It’s not safe to assume
> > that
> > > taking code out of the context in which it was written and tested to be
> > > inherently stable or better.
> > >
> > > TO specifically has a problem with the idea of cherry-picking with TODB
> > > migrations.  Since the migrations are linear and there still has to be
> a
> > > forward path from one of these cherry-picked releases, you could end up
> > in
> > > a situation where you’ve got database schema conflicts introduced by a
> > > cherry-pick.  It feels like the desire I’m reading here is wanting the
> > > benefits of adopting GitFlow, while trying to still use GitHubFlow in
> the
> > > repo.
> > >
> > > Jonathan G
> > >
> > > From: ocket 8888 <ocket8...@gmail.com>
> > > Date: Tuesday, October 26, 2021 at 10:23 PM
> > > To: dev@trafficcontrol.apache.org <dev@trafficcontrol.apache.org>
> > > Subject: Re: [EXTERNAL] Re: [PROPOSAL] ATC Release Schedule
> > > > Thusly, the version number will "choose itself" based on the SemVer
> > > tenants.
> > >
> > > only really works for major vs minor. Micro versions are backport-only,
> > so
> > > they don't necessarily have anything to do with whether or not breaking
> > > changes have been made on master. Which is also why
> > >
> > > > why not instead ask “Is it good enough?” and “Is it better than what
> we
> > > presently have?” as often as possible.
> > >
> > > may not help very much, because fixing a bug is always "better than
> what
> > we
> > > presently have".
> > >
> > > Essentially it seems like our release cadence wouldn't actually change
> > very
> > > much, the proposal isn't to get rid of the quarterly releases we strive
> > > for, but just adding a plan to backport bug fixes every month. Which,
> we
> > > could also decide not to do, if no bugs were fixed that month, or if
> it's
> > > too much trouble to backport the fix - "as-needed" as Jeremy puts it.
> The
> > > big difference is we typically only do micro releases for critical bugs
> > > that slipped through the validation process, or for security fixes,
> > whereas
> > > under the terms of the proposal we'd make an effort to collect things
> > that
> > > could be fixed in supported releases every month.
> > >
> > > > asking folks to vote on new RC every few weeks isn’t feasible unless
> > it’s
> > > a standing “good enough” process
> > >
> > > that would definitely be better, but I think we hope that few enough
> > things
> > > are going into micro releases, with very little unknown since the last
> > > minor, that validation could be focused just on "are these bugs
> actually
> > > fixed?" Could be harder with non-trivial backports, to be sure. It
> would
> > > definitely be better to have that process, and it's definitely
> possible a
> > > micro version gets too big or complex to validate cleanly. In that
> case,
> > > the release fails, which honestly isn't a big deal if there's no
> critical
> > > bug or security fix.
> > >
> > > On Tue, Oct 26, 2021 at 9:02 PM Jeremy Mitchell <mitchell...@gmail.com
> >
> > > wrote:
> > >
> > > > So the idea behind regularly-scheduled, predictable patch/minor/major
> > > > releases was a couple of things:
> > > >
> > > > 1. setting release schedule expectations with the open source
> community
> > > (as
> > > > Dave said). i.e. you can expect a minor/major release 1x a quarter
> and
> > > > patch releases in between (monthly)
> > > > 2. removing the ambiguity of what a minor/major release contains. it
> > > simply
> > > > contains whatever was merged in that quarter. nothing to plan.
> nothing
> > to
> > > > debate.
> > > >
> > > > The truth is feature-based release planning is hard and requires a
> lot
> > of
> > > > communication. I don't believe we have the level of communication
> > > required
> > > > (via working group or mailing list) to effectively pull off
> > > feature.-based
> > > > releases, hence, time-based seems like the better option for us IMO
> and
> > > if
> > > > we go that route, we need to stick to the schedule to be successful.
> > > >
> > > > Yeah, I get it. Going from quarterly releases (which we've failed at)
> > to
> > > > monthly seems like the wrong direction. What if we change NOTHING and
> > > > recommit to our quarterly major/minor releases with patch releases
> > being
> > > on
> > > > an as-needed basis coordinated by the release manager? So basically a
> > big
> > > > no-op. :)
> > > >
> > > > Jeremy
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > On Tue, Oct 26, 2021 at 7:16 PM Dave Neuman <neu...@apache.org>
> wrote:
> > > >
> > > > > Resending because I don’t think it went to the list last time.
> > > > >
> > > > > I agree that releasing whenever we have something worth releasing
> is
> > > > ideal,
> > > > > however I think with an open source project we should set
> > expectations
> > > of
> > > > > some sort of release schedule.
> > > > >
> > > > > I also agree that we should be striving to automate as much as
> > possible
> > > > to
> > > > > make our releases easier.  That is something that takes time and
> > > effort,
> > > > we
> > > > > have made great progress and I have no doubt that we will continue
> to
> > > do
> > > > > so.
> > > > >
> > > > > On Tue, Oct 26, 2021 at 17:27 Gray, Jonathan
> > > > > <jonathan_g...@comcast.com.invalid> wrote:
> > > > >
> > > > > > Instead of trying to focus on a cadence of an arbitrary calendar
> > > > > schedule,
> > > > > > why not instead ask “Is it good enough?” and “Is it better than
> > what
> > > we
> > > > > > presently have?” as often as possible.  The first question
> > addresses
> > > > > > partially implemented features or roadmap items.  The latter
> > > addresses
> > > > > code
> > > > > > stability and the state of confidence in the software.
> > > > > >
> > > > > > I have a moderately high bar as it is exercising the latest
> merged
> > > > > commits
> > > > > > every day from scratch on new infrastructure to at minimum
> > > successfully
> > > > > > pass known traffic on a variety of delivery service
> configurations.
> > > If
> > > > > > that passes, it’s “good enough” to me.  That’s not to say it’s
> bug
> > > free
> > > > > or
> > > > > > perfect, but it’s an increasing bar on top of what we already
> > enforce
> > > > on
> > > > > > the merge of PRs as it is.  Also, to say something is “good
> enough”
> > > > > doesn’t
> > > > > > mean it can’t be better.  How you know what “good enough” is
> > > > evolutionary
> > > > > > and hopefully cumulative.  Our project has a difficult challenge
> > that
> > > > > it’s
> > > > > > not just one single application.  It’s a complex system of
> > > interactions
> > > > > of
> > > > > > multiple pieces of software in particular ways.  With the current
> > > state
> > > > > to
> > > > > > support anything technically possible via both ATS+ATC, there is
> no
> > > > > “done”
> > > > > > when it comes to improving automated stability validation.
> > > > > >
> > > > > > Cutting releases is real work, so it’s something that we’d have
> to
> > > > weigh
> > > > > > out too.  Release whiplash asking folks to vote on new RC every
> few
> > > > weeks
> > > > > > isn’t feasible unless it’s a standing “good enough” process that
> > > didn’t
> > > > > > require humans to do anything.  Don’t get me wrong, calendars and
> > > goals
> > > > > > aren’t bad, but those basic questions don’t have to wait 1-3
> months
> > > > > before
> > > > > > they’re asked and really are more important.  To me at least it’s
> > > also
> > > > ok
> > > > > > to abandon a release if it turns out during the RC process it’s
> got
> > > > > > critical flaws, so we don’t end up cherry-picking and fixing up
> > > patches
> > > > > > moving the next cadence window further and further out.
> > > > > >
> > > > > > Jonathan G
> > > > > >
> > > > > >
> > > > > > From: Dave Neuman <neu...@apache.org>
> > > > > > Date: Tuesday, October 26, 2021 at 4:02 PM
> > > > > > To: dev@trafficcontrol.apache.org <dev@trafficcontrol.apache.org
> >
> > > > > > Subject: [EXTERNAL] Re: [PROPOSAL] ATC Release Schedule
> > > > > > So we are trying to address our inability to meet our current
> > release
> > > > > goals
> > > > > > by adding more releases?
> > > > > > Why don't we just try to get more consistent with the quarterly
> > > > releases
> > > > > > before we change things?
> > > > > > If we need to do a patch release it is probably because some
> > critical
> > > > > issue
> > > > > > was found, are we really going to wait for the beginning of the
> > month
> > > > > > instead of just releasing it and fixing that issue ASAP?
> > > > > > Maybe I am missing some context here but this seems like we are
> > > trying
> > > > to
> > > > > > solve a problem with more process instead of trying to get better
> > at
> > > > what
> > > > > > we already agreed to?
> > > > > >
> > > > > > On Tue, Oct 26, 2021 at 1:04 PM Taylor Frey <
> taylor.f...@gmail.com
> > >
> > > > > wrote:
> > > > > >
> > > > > > > I mentioned this on the WG call this morning, but I thought I'd
> > add
> > > > my
> > > > > > > thoughts in response to this mailing list item since there may
> > have
> > > > > been
> > > > > > > some confusion with my explanation.
> > > > > > >
> > > > > > > First, I think delivering on a time-based schedule is grand. I
> > > think
> > > > > > > cutting a release once a month might be an aggressive goal, but
> > > once
> > > > we
> > > > > > get
> > > > > > > in a rhythm I believe it will become easier.
> > > > > > >
> > > > > > > Choosing a version number is an arbitrary decision. But since
> we
> > > > appear
> > > > > > to
> > > > > > > be following Semantic Versioning (
> > > > > >
> > > > >
> > > >
> > >
> >
> https://urldefense.com/v3/__https://semver.org/__;!!CQl3mcHX2A!Q7m483_Mi3eCFQqXNwoXRG_EA0fdl7zl1R6ecyfz7auYIYCuI5rcDvl2EfkIcooWVEU3$
> > > <
> > >
> >
> https://urldefense.com/v3/__https:/semver.org/__;!!CQl3mcHX2A!Q7m483_Mi3eCFQqXNwoXRG_EA0fdl7zl1R6ecyfz7auYIYCuI5rcDvl2EfkIcooWVEU3$
> > > >
> > > > > > ) for our numbering
> > > > > > > scheme then I believe it's best to follow those practices for
> > > > choosing
> > > > > > the
> > > > > > > next version number. Thusly, the version number will "choose
> > > itself"
> > > > > > based
> > > > > > > on the SemVer tenants. Given the schedule, this *might* result
> in
> > > > > > something
> > > > > > > like:
> > > > > > >
> > > > > > > 11/1/21: 6.0.1 - PATCH - Only bug fixes, performance changes,
> > > tooling
> > > > > > > 12/1/21: 6.1.0 - MINOR - New feature (Refetch), optionally
> > contains
> > > > > PATCH
> > > > > > > items
> > > > > > > 1/1/22: 6.1.1 - PATCH - Only bug fixes, performance changes,
> > > tooling
> > > > > > > 2/1/22: 6.1.2 - PATCH - Only bug fixes, performance changes,
> > > tooling
> > > > > > > 3/1/22: 6.2.0 - MINOR - New feature (Roles/Permissions),
> > optionally
> > > > > > > contains PATCH items
> > > > > > > 4/1/22: 7.0.0 - MAJOR - "Breaking" backwards compatibility
> > promise.
> > > > > > Removal
> > > > > > > of an API version or endpoint, forced changes to clients
> reliant
> > on
> > > > an
> > > > > > API
> > > > > > > (like switching from Cookies to Token/Auth on all API versions)
> > > > > > > 5/1/22: 7.0.1 - PATCH - Only bug fixes, performance changes,
> > > tooling
> > > > > > > ...
> > > > > > >
> > > > > > > There are a plethora of choices in versioning. One alternative
> we
> > > may
> > > > > all
> > > > > > > be familiar with is sometimes called CalVer. Ubuntu's scheduled
> > > > > releases
> > > > > > > follow this scheme so their versioning represents it as a date
> > > 21.04
> > > > or
> > > > > > > 21.10. We could do something similar. The MAJOR version could
> > still
> > > > be
> > > > > > > similar to SemVer, but without the restrictions allowing us to
> > > > > increment
> > > > > > > once a MAJOR change has happened (Removal of PERL, for past
> > > example).
> > > > > The
> > > > > > > versioning scheme and schedule could then resemble:
> > > > > > >
> > > > > > > 11/1/21: 6.21.11 - November, 2021
> > > > > > > 12/1/21: 6.21.12 - December, 2021
> > > > > > > 1/1/22: 6.22.01 - January, 2022
> > > > > > > 2/1/22: 6.22.02 - February, 2022
> > > > > > > 3/1/22: 6.22.03 - March, 2022
> > > > > > > 4/1/22: 7.0.0 - MAJOR - Arbitrary
> > > > > > > 5/1/22: 7.22.05 - May, 2022
> > > > > > > ...
> > > > > > >
> > > > > > > Windows, MacOS pick MAJOR versions in seemingly arbitrary
> > fashion.
> > > I
> > > > > > recall
> > > > > > > Linux choosing their MAJOR versions based on numbers of commits
> > to
> > > > the
> > > > > > > repository.
> > > > > > >
> > > > > > > I'm certainly welcome to whatever scheme we want to implement
> > > moving
> > > > > > > forward, but if we are going to deviate from SemVer's practices
> > > then
> > > > I
> > > > > > > think it should be explicit.
> > > > > > >
> > > > > > > T
> > > > > > >
> > > > > > > On Tue, Oct 26, 2021 at 11:58 AM Zach Hoffman <
> > > zrhoff...@apache.org>
> > > > > > > wrote:
> > > > > > >
> > > > > > > > Seeing 2 differences:
> > > > > > > > • Aiming for a minor release every quarter instead of what we
> > > > aspired
> > > > > > > > to previously, new major release every quarter
> > > > > > > > • Aiming for a patch release every month at the start of the
> > > month
> > > > > > > >
> > > > > > > > Makes sense to me, +1.
> > > > > > > >
> > > > > > > >
> > > > > > > > -Zach
> > > > > > > >
> > > > > > > > On Tue, Oct 26, 2021 at 11:44 AM Jeremy Mitchell <
> > > > > > mitchell...@gmail.com>
> > > > > > > > wrote:
> > > > > > > > >
> > > > > > > > > Resending to make sure it's clear this is simply a
> proposal.
> > > > Please
> > > > > > > > provide
> > > > > > > > > feedback.
> > > > > > > > >
> > > > > > > > > In the past, ATC has targeted quarterly official releases
> but
> > > > we've
> > > > > > > > failed
> > > > > > > > > on many occasions due to "holding the bus" for certain
> > features
> > > > or
> > > > > > slow
> > > > > > > > > release voting. In the 10/26/2021 TC working group, we
> > > discussed
> > > > > that
> > > > > > > we
> > > > > > > > > should stick to this schedule regardless of feature
> > readiness.
> > > > > > > (remember
> > > > > > > > if
> > > > > > > > > you want a certain feature that was merged post-release,
> you
> > > can
> > > > > > always
> > > > > > > > > pull from the master branch as we are all in agreement that
> > > > master
> > > > > > must
> > > > > > > > > ALWAYS be releasable).
> > > > > > > > >
> > > > > > > > > Here is the schedule that was proposed:
> > > > > > > > >
> > > > > > > > >    - Quarterly minor releases (unless a Major is warranted
> > and
> > > > will
> > > > > > be
> > > > > > > > >    determined on case-by-case basis)
> > > > > > > > >    - Monthly patch releases
> > > > > > > > >
> > > > > > > > > Example:
> > > > > > > > >
> > > > > > > > > 11/1/21: 6.0.1
> > > > > > > > > 12/1/21: 6.0.2
> > > > > > > > > 1/1/22: 6.1.0
> > > > > > > > > 2/1/22: 6.1.1
> > > > > > > > > 3/1/22: 6.1.2
> > > > > > > > > 4/1/22: 6.2.0
> > > > > > > > > 5/1/22: 6.2.1
> > > > > > > > > 6/1/22: 6.2.2
> > > > > > > > > 7/1/22: 6.3.0
> > > > > > > > > 8/1/22: 6.3.1
> > > > > > > > > 9/1/22: 6.3.2
> > > > > > > > > 10/1/22: 7.0.0 <-- Apparently something "big" or non
> > backwards
> > > > > > > compatible
> > > > > > > > > got merged (i.e. API version removal)
> > > > > > > > > 11/1/22: 7.0.1
> > > > > > > > > 12/1/22: 7.0.2
> > > > > > > > >
> > > > > > > > > Please provide feedback on this approach.
> > > > > > > > >
> > > > > > > > > Thanks,
> > > > > > > > >
> > > > > > > > > Jeremy
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to