[cfe-dev] [Openmp-dev] RFC: Release process changes
Hans Wennborg via cfe-dev
cfe-dev at lists.llvm.org
Wed May 27 02:11:59 PDT 2020
That all makes sense to me. The new process sgtm.
On Wed, May 27, 2020 at 5:20 AM Tom Stellard <tstellar at redhat.com> wrote:
>
> On 05/25/2020 05:48 AM, Hans Wennborg wrote:
> > On Thu, May 21, 2020 at 8:59 PM Tom Stellard via Openmp-dev
> > <openmp-dev at lists.llvm.org> wrote:
> >>
> >> Hi,
> >>
> >> I would like to propose a few changes to the LLVM release process. The
> >> current process is documented here: https://llvm.org/docs/HowToReleaseLLVM.html
> >>
> >> There are two parts to this proposal. The first is a list of clarifications,
> >> which are things we are currently doing that aren't documented. The second
> >> is a list of changes which would actually modify how releases are currently
> >> managed.
> >>
> >>
> >>
> >> *** Proposed Clarifications ***
> >>
> >>
> >>
> >> ** Release manager is allowed to commit changes to the release branch without
> >> code owner approval. However, the release manager is encouraged to consult
> >> with code owners or patch reviewers for non-trivial changes.
> >>
> >> It's not practical to get code owner approval every time. Either because there
> >> is no code owner or because the number of backports is too high (e.g. pre-rc1 / pre-rc2).
> >> This proposed clarification matches how releases are currently managed.
> >
> > +1
> >
> > Maybe even stronger than "is allowed to commit", I think we should
> > really think about it as the release manager owning the branch, and
> > has full authority over what goes into it or not. Consulting code
> > owners often makes sense of course, but for many patches, consulting
> > the code owner (when there is one) is an unnecessary slowdown.
> >
> >> ** There is no official release criteria.
> >>
> >> We have time-based releases and when the release is 'ready' has been
> >> up to the discretion of the release manager. Changing the release
> >> criteria is out of the scope of this proposal, but I do think it would
> >> be good to have a discussion about this as a community, so I'm going to
> >> start a separate thread to discuss this.
> >>
> >>
> >>
> >> *** Proposed Changes ***
> >>
> >>
> >>
> >> ** Create a time-based bug-fix release schedule. After each major release, make
> >> a new bug-fix release every 2 weeks for 12 weeks (6 releases total).
> >>
> >> ** Eliminate release candidates for bug-fix releases.
> >>
> >> The current unofficial bug-fix release schedule is:
> >>
> >> X.Y.1-rc1 (6 weeks after major release)
> >> X.Y.1-rc2 (10 weeks after major release)
> >> X.Y.1-final (12 weeks after major release)
> >>
> >> I think this change will improve the overall test coverage of the release branch.
> >> I don't think the branch itself or even the release candidates get the same
> >> level of testing as the final releases. If we are consistently snapshotting
> >> the release branch and putting out releases, I think this will make it easier
> >> and thus more likely that users will test out the release branch code.
> >>
> >> Additionally, with more frequent bug-fix release it removes the need to have
> >> release candidate releases. Every bug-fix release (up until the last one)
> >> would serve the same purpose as our current release candidates in that they
> >> are intended to give users an easier way to test the code before the final
> >> release.
> >
> > My first thought is that doing all these releases sounds like a lot of
> > work. Would you be doing all of them, or would there be some other
> > arrangement? I suppose if we release this often, and also skip the
> > RCs, we might become more efficient at it :-)
> >
>
> Yes, I would plan to do all the releases. For 9.0.1, there were
> 3 RCs, so 4 releases in total. Doing 6 instead of 4 is not that much
> more work in my opinion. Also, we may end up skipping releases if
> there aren't any new changes in the branch. But doing extra
> releases would be good motivation to try to automates more parts of the
> release process.
>
> If we do feel like 6 is too many we could lengthen the interval to 3 weeks,
> which would give us just 4 releases.
>
> > Secondly, is having this many releases useful for downstream? One
> > concern might be that downstream consumers just wait for the .6 one,
> > and then there's no benefit and also no extra testing of the branch.
> > Is it mainly increasing test coverage of the branch that's the
> > motivation, or is it the demand for more bug-fix releases?
> >
>
> From me as a distro package maintainer, I'm more likely to package
> a final release than a bug-fix release. Especially if I know there won't
> be another release candidate or final release coming very soon after.
>
> Besides increasing testing coverage, I think it helps other projects
> avoid having to do things like this: https://lkml.org/lkml/2020/5/5/1446
> In this case, the kernel release cycle is about 2 months, so they can't
> wait 3 months for a fix.
>
>
> > Not having at least one release candidate sounds a bit scary to be.
> > Without them we could get into a situation where everything works fine
> > on the release manager's machines, but is completely broken on other
> > platforms, and no way to fix until the next dot release. Maybe that
> > kind of breakage is less likely after the major release, but it still
> > seems it could make these dot releases less stable?
> >
>
> I think in order to do this we need to have a certain level of CI testing.
> I've been experimenting with this in the last few release cycles. Right now,
> in the release branch we have tests running make-check for clang, llvm, lld,
> libclc, and running make for lldb. Each test runs on Linux, Mac, and Windows.
> I feel comfortable enough with this that it would catch most obvious issues
> with new bug-fix releases. Especially since the number of changes is low
> as compared to major releases.
>
> I think there would need to be some flexibility to do another bug-fix release
> ASAP if there is a major problem.
>
> -Tom
>
> >> ** Create clear rules for what kind of backports are accepted during each
> >> release phase.
> >>
> >> * Before RC1:Patches should be limited to bug fixes, important optimization
> >> improvements, or completion of features that were started before the branch
> >> was created. As with all phases, release managers and code owners can reject
> >> patches that are deemed too invasive.
> >>
> >> * Before RC2: Patches should be limited to bug fixes or backend specific
> >> improvements that are determined to be very safe.
> >>
> >> * Before RC3/Final: Major Release* Patches should be limited to critical
> >> bugs or regressions.
> >>
> >> * Bug fix releases: Patches should be limited to bug fixes or very safe
> >> and critical performance improvements. Patches must maintain both API and
> >> ABI compatibility with the previous major release.
> >>
> >> * Final bug fix release: Patches should be limited to critical bug fixes only.
> >
> > These sound good to me.
> >
> >
> > Thanks,
> > Hans
> >
>
More information about the cfe-dev
mailing list