I will write this all down in the wiki once the vote is over, but here are some example.

Let's start out with a happy-case scenario with one connector supporting the last 2 Flink versions. This will commonly be the scenario for connectors when they have been externalized:

v1: 1.14-1.15


Now we create a v2 that only support 1.15:

v1: 1.14-1.15 (patch support)
v2: 1.15 (feature support)

4.1) kicks in, both versions getting support, but only the latest getting new features.


Now 1.16 is released, which v2 also supports.

v1: 1.14-1.15 (patch support)
v2: 1.15-1.16 (feature support)

Nothing changes.


Now 1.17 is released:

v1: 1.14-1.15 (no support)
v2: 1.15-1.17

Here 4.1.a kicks in; v1 supports no supported Flink version and lost support.


Now we create v3 targeting 1.17, and shortly thereafter v4, also targeting 1.17, because we messed something up or are just that excited about finally having major releases.

v2: 1.15-1.17 (patch support)
v3: 1.17 (patch support)
v4: 1.17 (feature support)

Here 4.1.b kicks in, ensuring that v2 is still supported since we need to support all Flink versions.


Now 1.18 is released, with v3 and v4 supporting it.

v2: 1.15-1.17 (no support)
v3: 1.17 (patch support)
v4: 1.17 (feature support)

General 4.1) rule kicks in, with only the last 2 major versions being supported.

On 13/10/2022 16:25, Jing Ge wrote:
+1 and I would suggest giving a concrete example to explain 4) support. It
is still not quite easy to understand the text. Not many (future) connector
developers could join this discussion. It is better to make it as clear as
possible at the beginning than spend more time explaining multiple times.
Just my two cents.

Best regards,
Jing

On Thu, Oct 13, 2022 at 2:02 PM Ryan Skraba <ryan.skr...@aiven.io.invalid>
wrote:

+1 non-binding!  I've been following (and generally agreeing) with the
thread -- it's a perfectly reasonable way to start, and I'm sure we can
adjust the process if it turns out to be unsuitable or unexpected as the
connectors evolve in their external repositories.

On Thu, Oct 13, 2022 at 12:37 PM Thomas Weise <t...@apache.org> wrote:

+1 (binding) for the vote and thanks for the explanation

On Thu, Oct 13, 2022 at 5:58 AM Chesnay Schepler <ches...@apache.org>
wrote:

@Thomas:
Version-specific modules that either contain a connector or shims to
support that Flink version.
Alternatively, since the addition of such code (usually) goes beyond a
patch release you'd create a new minor version and could have that only
support the later version.

On 13/10/2022 02:05, Thomas Weise wrote:
"Branches are not specific to a Flink version. (i.e., no v3.2-1.15)"

Sorry for the late question. I could not find in the discussion
thread
how
a connector can make use of features of the latest Flink version that
were
not present in the previous Flink version, when branches cannot be
Flink
version specific?

Thanks,
Thomas

On Wed, Oct 12, 2022 at 4:09 PM Ferenc Csaky
<ferenc.cs...@pm.me.invalid
wrote:

+1 from my side (non-binding)

Best,
F


------- Original Message -------
On Wednesday, October 12th, 2022 at 15:47, Martijn Visser <
martijnvis...@apache.org> wrote:


+1 (binding), I am indeed assuming that Chesnay meant the last two
minor
versions as supported.

Op wo 12 okt. 2022 om 20:18 schreef Danny Cranmer
dannycran...@apache.org
Thanks for the concise summary Chesnay.

+1 from me (binding)

Just one clarification, for "3.1) The Flink versions supported by
the
project (last 2 major Flink versions) must be supported.". Do we
actually
mean major here, as in Flink 1.x.x and 2.x.x? Right now we would
only
support Flink 1.15.x and not 1.14.x? I would be inclined to
support
the
latest 2 minor Flink versions (major.minor.patch) given that we
only
have 1
active major Flink version.

Danny

On Wed, Oct 12, 2022 at 2:12 PM Chesnay Schepler
ches...@apache.org
wrote:

Since the discussion
(
https://lists.apache.org/thread/mpzzlpob9ymkjfybm96vz2y2m5fjyvfo)
has
stalled a bit but we need a conclusion to move forward I'm
opening
a
vote.

Proposal summary:

1) Branch model
1.1) The default branch is called "main" and used for the next
major
iteration.
1.2) Remaining branches are called "vmajor.minor". (e.g., v3.2)
1.3) Branches are not specific to a Flink version. (i.e., no
v3.2-1.15)
2) Versioning
2.1) Source releases: major.minor.patch
2.2) Jar artifacts: major.minor.match-flink-major.flink-minor
(This may imply releasing the exact same connector jar multiple
times
under different versions)

3) Flink compatibility
3.1) The Flink versions supported by the project (last 2 major
Flink
versions) must be supported.
3.2) How this is achived is left to the connector, as long as it
conforms to the rest of the proposal.

4) Support
4.1) The last 2 major connector releases are supported with only
the
latter receiving additional features, with the following
exceptions:
4.1.a) If the older major connector version does not support any
currently supported Flink version, then it is no longer
supported.
4.1.b) If the last 2 major versions do not cover all supported
Flink
versions, then the latest connector version that supports the
older
Flink version /additionally /gets patch support.
4.2) For a given major connector version only the latest minor
version
is supported.
(This means if 1.1.x is released there will be no more 1.0.x
release)
I'd like to clarify that these won't be set in stone for
eternity.
We should re-evaluate how well this model works over time and
adjust
it
accordingly, consistently across all connectors.
I do believe that as is this strikes a good balance between
maintainability for us and clarity to users.

Voting schema:

Consensus, committers have binding votes, open for at least 72
hours.
--
Martijn
https://twitter.com/MartijnVisser82
https://github.com/MartijnVisser



Reply via email to