Hi,

> 3. Which class of defects should trigger a maintenance release once a fix
> is made to the branch?

How about the following?

- We release X.Y.1 when we have at least one fix in a
  maintenance branch.
- If we have another fix while we're preparing X.Y.1, we
  also include the another fix.
- If we have another fix while we're voting and doing post
  release tasks, the another fix is pending. We release
  X.Y.2 after vote and post release tasks for X.Y.1 are
  completed.

> 4. Which versions should be targeted in backporting a defect fix?  How long
> will a release receive maintenance support?

I proposed only the last major release for now.
We may able to multiple major releases in the future by
reducing release cost.

> 5. Which class of defects can be batched into a future maintenance release,
> and which need immediate release?

See my answer of 3.

> 6. What delivery artifacts are needed for maintenance releases? Can some
> things be source-only?

We can release only related artifacts. For example, a
maintenance release includes only Go related changes, we can
release only source. If a maintenance release includes C++
related changes, we release not only source but also
.deb/.rpm/.wheel/... and so on.


Thanks,
-- 
kou

In <cagnhocpckzyxh661jskepcdsrnevzcpwa++a2xx+uiwthuf...@mail.gmail.com>
  "Re: [DISCUSS] Maintenance policy" on Wed, 19 Oct 2022 10:32:13 -0600,
  Todd Farmer <t...@voltrondata.com.INVALID> wrote:

> Hi,
> 
> I've been thinking a lot about maintenance and lifecycle policies and
> defect classification recently - I'm very grateful this is being raised. I
> believe establishing such policies will prove instrumental to enable
> adoption of Arrow for a number of use cases that prioritize stability over
> innovation.
> 
> On Wed, Oct 19, 2022 at 5:42 AM Antoine Pitrou <anto...@python.org> wrote:
> 
>>
>> Hi Kou,
>>
>> Le 19/10/2022 à 06:29, Sutou Kouhei a écrit :
>> >
>> > My proposal: We maintain the last major release:
>> > * We maintain 9.Y.Z when the latest major release is 9.0.0
>> > * We may release 9.Y.Z when we find a problem such as a
>> >    security vulnerability in 9.Y.Z
>> > * We drop support for 9.Y.Z when we release 10.0.0
>>
>> That sounds ok to me, but is there a more precise criterion than "we
>> find a problem"?
>>
>> In the past, we have from time to time done maintenance releases based
>> on annoying bugs/regressions. But not always.
>>
> 
> I very much agree, and actually think there are multiple questions to
> answer here:
> 
> 1. Which class of defects should be allowed to be merged into a maintenance
> branch?
> 2. Which class of defects must be fixed in a supported maintenance branch?
> 3. Which class of defects should trigger a maintenance release once a fix
> is made to the branch?
> 4. Which versions should be targeted in backporting a defect fix?  How long
> will a release receive maintenance support?
> 5. Which class of defects can be batched into a future maintenance release,
> and which need immediate release?
> 6. What delivery artifacts are needed for maintenance releases? Can some
> things be source-only?
> 
> Today, any fix may be a candidate for backporting to a maintenance branch
> if there's support for doing so in a vote. I believe it might be useful to
> more formally triage defects in part to establish policy answering these
> questions. For example:
> 
> * How severe is the defect?  Does it produce wrong results? Cause crashes?
> Or is it an annoying spelling error in a log message?
> * How widespread is the impact? Is everybody who uses Arrow going to be
> affected by this? Or is it only triggered by some very obscure use case?
> * How accessible is any workaround?
> * How much risk is involved in a fix?
> 
> Having a common framework to classify those elements above would enable
> policy that clearly defines which defects can (or should, eventually) get
> what attention.
> 
> If there is interest in the community, I'll continue a draft proposal I'm
> working on to formalize triage to capture these aspects. Any such triage
> process would be entirely optional for work done against master/main, but
> could be required for assessing potential backports as needed.
> 
> I'll also note that I recognize Arrow may not currently see a need to
> answer all the questions about maintenance/lifecycle policy today, or may
> not have the resources needed to deliver what may be desired. It takes a
> lot of work to generate a release today. I think it's completely
> appropriate to commit only to what can be delivered today, with an eye
> towards incremental improvement. For example, an entirely acceptable policy
> might be:
> 
> * Only the most recently-released minor version is eligible for defect
> fixes.
> * Security vulnerabilities with CVSS 3.0 score >= 7.0 (High) should trigger
> a maintenance release.
> * Fixes for defects of any nature may be backported if it reaches
> established thresholds (TBD) for severity, widespread impact, workaround
> accessibility and risk. Such fixes will be incorporated into the release
> maintenance release, made available via source, but no release will be
> produced unless triggered by a subsequent security vulnerability fix.
> 
> 
>> > I think that we can maintain multiple major releases with
>> > not high release cost by implementing the followings:
>> > * Green nightly CI
>> > * Nightly CI for all maintained branches (maint-X.Y.Z)
>> >    * We need to reduce the time taken to CI
>> > * ...
>>
>> I'm afraid "green nightly CI" is more of an ideal than a reality given
>> the breadth and complexity of our fleet of CI jobs.  We still seem to
>> have stability problems in some areas (perhaps Acero?) but there are
>> also regularly regressions due to changes in third-party packages.
>>
> 
> Would this still be true if executed against a maintenance release branch?
> I understand why this would drift for main/master, but if a version branch
> is green when first released, and only accepts limited, qualified
> backported fixes, it should be much easier to "keep" green, I'd think.
> 
> Thanks,
> 
> Todd

Reply via email to