One particular type of defect we might want to consider backporting to
supported versions are ones that silently produce incorrect data. Unlike
ones that cause a crash, it's not easy for a user to know they are affected.

Here are a few examples:

 * ARROW-17453: [Go][C++][Parquet] Inconsistent Data with Repetition Levels
[1] (fixed in 10.0.0)
 * ARROW-17995: [C++] Fix json decimals not being rescaled based on the
explicit schema [2] (fixed in 10.0.0)
 * ARROW-14523: [C++] Fix potential data loss in S3 multipart upload [3]
(fixed in 7.0.0)

Also, I know we have high release costs for new versions, but is that also
true for backporting fixes? Unlike new releases, if we were creating a
bugfix release, we are presumably starting from a much more stable point,
right?

Thanks,

Will Jones

[1] https://issues.apache.org/jira/browse/ARROW-17453
[2] https://issues.apache.org/jira/browse/ARROW-17995
[3] https://issues.apache.org/jira/browse/ARROW-14523

On Wed, Oct 19, 2022 at 9:32 AM 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