Sorry for the late reply here!

These look reasonable to me. I think that this will help us reason about
trade-offs next time we have a release issue like the current one. We
should simply mark the 3.2 support as beta and get the release out next
time. I also think that we should not create situations with regressions
like this again. We should probably have copied the old MERGE/UPDATE/DELETE
plans into 3.2 to avoid a regression and then update them to the new
implementations later, without affecting releases.

Thanks for writing this up, Jack!

Ryan

On Wed, Dec 15, 2021 at 7:18 PM Jack Ye <yezhao...@gmail.com> wrote:

> Hi everyone,
>
> As a part of the ongoing 0.13.0 release, we are starting to formally
> support multiple engine versions for Spark, Flink and Hive. I think it is
> worth defining a formal process for us to add a new supported version,
> maintain existing versions and deprecate old versions. We briefly touched
> this topic when doing the refactoring, but I think now is a good time to
> formalize it and place it as a part of the Iceberg public documentation. As
> a starter for brainstorming, here is the process I think:
>
> Each engine has the following lifecycle states:
>
> 1. *Beta*: an engine supported is added, but still in the experimental
> stage. Maybe the engine version itself is still in preview (e.g. Spark
> 3.0.0-preview), or the engine does not yet have full feature
> compatibility compared to old versions yet. This state allows us to
> release an engine version support without the need to wait for feature
> parity, shortening the release time.
>
> 2. *Maintained*: an engine version is being actively maintained by the
> community. Users can expect feature parity for most features across all the
> maintained versions. If a feature has to leverage some new engine
> functionalities that older versions don't have, then feature parity is not
> required. For code contributors,
> - New features should always be prioritized first in the latest version
> (the latest version could be a maintained or beta version)
> - For features that could be backported, the contributor is encouraged to
> either also perform backports in separated PRs, or at least create some
> issues to track the backport.
> - If the change is small enough like a few lines, updating all versions at
> once is good enough. Otherwise, using separated PRs for each version is
> recommended.
>
> 3. *Deprecating*: an engine version is no longer actively maintained.
> People who are still interested in the version can backport any necessary
> feature or bug fix from newer versions, but the community will not spend
> effort in achieving feature parity. We recommend users to move towards a
> newer version, and we expect contributions to the specific version to
> diminish over time, and eventually no change is added to the version. At
> that time we can move the version to the end of life.
>
> 4. *End-of-life*: a vote can be initiated to fully remove a deprecating
> version out of the Iceberg repo to mark as its end of life. I am not sure
> if we should remove all the code, but I think it would help push people
> forward and keep the repository healthy.
>
> With the lifecycle states described above, we will add 1 doc section under
> each engine to describe the current engine version support status. A PR
> will be needed to perform any state transition, and that could serve as the
> place to discuss if the transition is appropriate or not.
>
> Any thoughts about the process?
>
> Best,
> Jack Ye
>


-- 
Ryan Blue
Tabular

Reply via email to