Good question: we want to use the same setup as we currently have for
Flink, so using the existing CI infrastructure.

On Mon, 10 Jan 2022 at 11:19, Chesnay Schepler <ches...@apache.org> wrote:

> What CI resources do you actually intend use? Asking since the ASF GHA
> resources are afaik quite overloaded.
>
> On 05/01/2022 11:48, Martijn Visser wrote:
> > Hi everyone,
> >
> > I wanted to summarise the email thread and see if there are any open
> items
> > that still need to be discussed, before we can finalise the discussion in
> > this email thread:
> >
> > 1. About having multi connectors in one repo or each connector in its own
> > repository
> >
> > As explained by @Arvid Heise <ar...@apache.org> we ultimately propose to
> > have a single repository per connector, which seems to be favoured in the
> > community.
> >
> > 2. About having the connector repositories under ASF or not.
> >
> > The consensus is that all connectors would remain under the ASF.
> >
> > I think we can categorise the questions or concerns that are brought
> > forward as the following one:
> >
> > 3. How would we set up the testing?
> >
> > We need to make sure that we provide a proper testing framework, which
> > means that we provide a public Source- and Sink testing framework. As
> > mentioned extensively in the thread, we need to make sure that the
> > necessary interfaces are properly annotated and at least @PublicEvolving.
> > This also includes the test infrastructure, like MiniCluster. For the
> > latter, we don't know exactly yet how to balance having publicly
> available
> > test infrastructure vs being able to iterate inside of Flink, but we can
> > all agree this has to be solved.
> >
> > For testing infrastructure, we would like to use Github Actions. In the
> > current state, it probably makes sense for a connector repo to follow the
> > branching strategy of Flink. That will ensure a match between the
> released
> > connector and Flink version. This should change when all the Flink
> > interfaces have stabilised so you can use a connector with multiple Flink
> > versions. That means that we should have a nightly build test for:
> >
> > - The `main` branch of the connector (which would be the unreleased
> > version) against the `master` branch of Flink (the unreleased version of
> > Flink).
> > - Any supported `release-X.YY` branch of the connector against the
> > `release-X.YY` branch of Flink.
> >
> > We should also have a smoke test E2E tests in Flink (one for DataStream,
> > one for Table, one for SQL, one for Python) which loads all the
> connectors
> > and does an arbitrary test (post data on source, load into Flink, sink
> > output and compare that output is as expected.
> >
> > 4. How would we integrate documentation?
> >
> > Documentation for a connector should probably end up in the connector
> > repository. The Flink website should contain one entrance to all
> connectors
> > (so not the current approach where we have connectors per DataStream API,
> > Table API etc). Each connector documentation should end up as one menu
> item
> > in connectors, containing all necessary information for all DataStream,
> > Table, SQL and Python implementations.
> >
> > 5. Which connectors should end up in the external connector repo?
> >
> > I'll open up a separate thread on this topic to have a parallel
> discussion
> > on that. We should reach consensus on both threads before we can move
> > forward on this topic as a whole.
> >
> > Best regards,
> >
> > Martijn
> >
> > On Fri, 10 Dec 2021 at 04:47, Thomas Weise <t...@apache.org> wrote:
> >
> >> +1 for repo per connector from my side also
> >>
> >> Thanks for trying out the different approaches.
> >>
> >> Where would the common/infra pieces live? In a separate repository
> >> with its own release?
> >>
> >> Thomas
> >>
> >> On Thu, Dec 9, 2021 at 12:42 PM Till Rohrmann <trohrm...@apache.org>
> >> wrote:
> >>> Sorry if I was a bit unclear. +1 for the single repo per connector
> >> approach.
> >>> Cheers,
> >>> Till
> >>>
> >>> On Thu, Dec 9, 2021 at 5:41 PM Till Rohrmann <trohrm...@apache.org>
> >> wrote:
> >>>> +1 for the single repo approach.
> >>>>
> >>>> Cheers,
> >>>> Till
> >>>>
> >>>> On Thu, Dec 9, 2021 at 3:54 PM Martijn Visser <mart...@ververica.com>
> >>>> wrote:
> >>>>
> >>>>> I also agree that it feels more natural to go with a repo for each
> >>>>> individual connector. Each repository can be made available at
> >>>>> flink-packages.org so users can find them, next to referring to them
> >> in
> >>>>> documentation. +1 from my side.
> >>>>>
> >>>>> On Thu, 9 Dec 2021 at 15:38, Arvid Heise <ar...@apache.org> wrote:
> >>>>>
> >>>>>> Hi all,
> >>>>>>
> >>>>>> We tried out Chesnay's proposal and went with Option 2.
> >> Unfortunately,
> >>>>> we
> >>>>>> experienced tough nuts to crack and feel like we hit a dead end:
> >>>>>> - The main pain point with the outlined Frankensteinian connector
> >> repo
> >>>>> is
> >>>>>> how to handle shared code / infra code. If we have it in some
> >> <common>
> >>>>>> branch, then we need to merge the common branch in the connector
> >> branch
> >>>>> on
> >>>>>> update. However, it's unclear to me how improvements in the common
> >>>>> branch
> >>>>>> that naturally appear while working on a specific connector go back
> >> into
> >>>>>> the common branch. You can't use a pull request from your branch or
> >> else
> >>>>>> your connector code would poison the connector-less common branch.
> >> So
> >>>>> you
> >>>>>> would probably manually copy the files over to a common branch and
> >>>>> create a
> >>>>>> PR branch for that.
> >>>>>> - A weird solution could be to have the common branch as a
> >> submodule in
> >>>>> the
> >>>>>> repo itself (if that's even possible). I'm sure that this setup
> >> would
> >>>>> blow
> >>>>>> up the minds of all newcomers.
> >>>>>> - Similarly, it's mandatory to have safeguards against code from
> >>>>> connector
> >>>>>> A poisoning connector B, common, or main. I had some similar setup
> >> in
> >>>>> the
> >>>>>> past and code from two "distinct" branch types constantly swept
> >> over.
> >>>>>> - We could also say that we simply release <common> independently
> >> and
> >>>>> just
> >>>>>> have a maven (SNAPSHOT) dependency on it. But that would create a
> >> weird
> >>>>>> flow if you need to change in common where you need to constantly
> >> switch
> >>>>>> branches back and forth.
> >>>>>> - In general, Frankensteinian's approach is very switch intensive.
> >> If
> >>>>> you
> >>>>>> maintain 3 connectors and need to fix 1 build stability each at the
> >> same
> >>>>>> time (quite common nowadays for some reason) and you have 2 review
> >>>>> rounds,
> >>>>>> you need to switch branches 9 times ignoring changes to common.
> >>>>>>
> >>>>>> Additionally, we still have the rather user/dev unfriendly main
> >> that is
> >>>>>> mostly empty. I'm also not sure we can generate an overview
> >> README.md to
> >>>>>> make it more friendly here because in theory every connector branch
> >>>>> should
> >>>>>> be based on main and we would get merge conflicts.
> >>>>>>
> >>>>>> I'd like to propose once again to go with individual repositories.
> >>>>>> - The only downside that we discussed so far is that we have more
> >>>>> initial
> >>>>>> setup to do. Since we organically grow the number of
> >>>>> connector/repositories
> >>>>>> that load is quite distributed. We can offer templates after
> >> finding a
> >>>>> good
> >>>>>> approach that can even be used by outside organizations.
> >>>>>> - Regarding secrets, I think it's actually an advantage that the
> >> Kafka
> >>>>>> connector has no access to the AWS secrets. If there are secrets to
> >> be
> >>>>>> shared across connectors, we can and should use Azure's Variable
> >> Groups
> >>>>> (I
> >>>>>> have used it in the past to share Nexus creds across repos). That
> >> would
> >>>>>> also make rotation easy.
> >>>>>> - Working on different connectors would be rather easy as all
> >> modern IDE
> >>>>>> support multiple repo setups in the same project. You still need to
> >> do
> >>>>>> multiple releases in case you update common code (either accessed
> >>>>> through
> >>>>>> Nexus or git submodule) and you want to release your connector.
> >>>>>> - There is no difference in respect to how many CI runs there in
> >> both
> >>>>>> approaches.
> >>>>>> - Individual repositories also have the advantage of allowing
> >> external
> >>>>>> incubation. Let's assume someone builds connector A and hosts it in
> >>>>> their
> >>>>>> organization (very common setup). If they want to contribute the
> >> code to
> >>>>>> Flink, we could simply transfer the repository into ASF after
> >> ensuring
> >>>>>> Flink coding standards. Then we retain git history and Github
> >> issues.
> >>>>>> Is there any point that I'm missing?
> >>>>>>
> >>>>>> On Fri, Nov 26, 2021 at 1:32 PM Chesnay Schepler <
> >> ches...@apache.org>
> >>>>>> wrote:
> >>>>>>
> >>>>>>> For sharing workflows we should be able to use composite actions.
> >> We'd
> >>>>>>> have the main definition files in the flink-connectors repo, that
> >> we
> >>>>>>> also need to tag/release, which other branches/repos can then
> >> import.
> >>>>>>> These are also versioned, so we don't have to worry about
> >> accidentally
> >>>>>>> breaking stuff.
> >>>>>>> These could also be used to enforce certain standards / interfaces
> >>>>> such
> >>>>>>> that we can automate more things (e.g., integration into the Flink
> >>>>>>> documentation).
> >>>>>>>
> >>>>>>> It is true that Option 2) and dedicated repositories share a lot
> >> of
> >>>>>>> properties. While I did say in an offline conversation that we in
> >> that
> >>>>>>> case might just as well use separate repositories, I'm not so sure
> >>>>>>> anymore. One repo would make administration a bit easier, for
> >> example
> >>>>>>> secrets wouldn't have to be applied to each repo (we wouldn't want
> >>>>>>> certain secrets to be set up organization-wide).
> >>>>>>> I overall also like that one repo would present a single access
> >> point;
> >>>>>>> you can't "miss" a connector repo, and I would hope that having
> >> it as
> >>>>>>> one repo would nurture more collaboration between the connectors,
> >>>>> which
> >>>>>>> after all need to solve similar problems.
> >>>>>>>
> >>>>>>> It is a fair point that the branching model would be quite weird,
> >> but
> >>>>> I
> >>>>>>> think that would subside pretty quickly.
> >>>>>>>
> >>>>>>> Personally I'd go with Option 2, and if that doesn't work out we
> >> can
> >>>>>>> still split the repo later on. (Which should then be a trivial
> >> matter
> >>>>> of
> >>>>>>> copying all <connector>/* branches and renaming them).
> >>>>>>>
> >>>>>>> On 26/11/2021 12:47, Till Rohrmann wrote:
> >>>>>>>> Hi Arvid,
> >>>>>>>>
> >>>>>>>> Thanks for updating this thread with the latest findings. The
> >>>>> described
> >>>>>>>> limitations for a single connector repo sound suboptimal to me.
> >>>>>>>>
> >>>>>>>> * Option 2. sounds as if we try to simulate multi connector
> >> repos
> >>>>>> inside
> >>>>>>> of
> >>>>>>>> a single repo. I also don't know how we would share code
> >> between the
> >>>>>>>> different branches (sharing infrastructure would probably be
> >> easier
> >>>>>>>> though). This seems to have the same limitations as dedicated
> >> repos
> >>>>>> with
> >>>>>>>> the downside of having a not very intuitive branching model.
> >>>>>>>> * Isn't option 1. kind of a degenerated version of option 2.
> >> where
> >>>>> we
> >>>>>>> have
> >>>>>>>> some unrelated code from other connectors in the individual
> >>>>> connector
> >>>>>>>> branches?
> >>>>>>>> * Option 3. has the downside that someone creating a release
> >> has to
> >>>>>>> release
> >>>>>>>> all connectors. This means that she either has to sync with the
> >>>>>> different
> >>>>>>>> connector maintainers or has to be able to release all
> >> connectors on
> >>>>>> her
> >>>>>>>> own. We are already seeing in the Flink community that releases
> >>>>> require
> >>>>>>>> quite good communication/coordination between the different
> >> people
> >>>>>>> working
> >>>>>>>> on different Flink components. Given our goals to make connector
> >>>>>> releases
> >>>>>>>> easier and more frequent, I think that coupling different
> >> connector
> >>>>>>>> releases might be counter-productive.
> >>>>>>>>
> >>>>>>>> To me it sounds not very practical to mainly use a mono
> >> repository
> >>>>> w/o
> >>>>>>>> having some more advanced build infrastructure that, for
> >> example,
> >>>>>> allows
> >>>>>>> to
> >>>>>>>> have different git roots in different connector directories.
> >> Maybe
> >>>>> the
> >>>>>>> mono
> >>>>>>>> repo can be a catch all repository for connectors that want to
> >> be
> >>>>>>> released
> >>>>>>>> in lock-step (Option 3.) with all other connectors the repo
> >>>>> contains.
> >>>>>> But
> >>>>>>>> for connectors that get changed frequently, having a dedicated
> >>>>>> repository
> >>>>>>>> that allows independent releases sounds preferable to me.
> >>>>>>>>
> >>>>>>>> What utilities and infrastructure code do you intend to share?
> >> Using
> >>>>>> git
> >>>>>>>> submodules can definitely be one option to share code. However,
> >> it
> >>>>>> might
> >>>>>>>> also be ok to depend on flink-connector-common artifacts which
> >> could
> >>>>>> make
> >>>>>>>> things easier. Where I am unsure is whether git submodules can
> >> be
> >>>>> used
> >>>>>> to
> >>>>>>>> share infrastructure code (e.g. the .github/workflows) because
> >> you
> >>>>> need
> >>>>>>>> these files in the repo to trigger the CI infrastructure.
> >>>>>>>>
> >>>>>>>> Cheers,
> >>>>>>>> Till
> >>>>>>>>
> >>>>>>>> On Thu, Nov 25, 2021 at 1:59 PM Arvid Heise <ar...@apache.org>
> >>>>> wrote:
> >>>>>>>>> Hi Brian,
> >>>>>>>>>
> >>>>>>>>> Thank you for sharing. I think your approach is very valid and
> >> is
> >>>>> in
> >>>>>>> line
> >>>>>>>>> with what I had in mind.
> >>>>>>>>>
> >>>>>>>>> Basically Pravega community aligns the connector releases with
> >> the
> >>>>>>> Pravega
> >>>>>>>>>> mainline release
> >>>>>>>>>>
> >>>>>>>>> This certainly would mean that there is little value in
> >> coupling
> >>>>>>> connector
> >>>>>>>>> versions. So it's making a good case for having separate
> >> connector
> >>>>>>> repos.
> >>>>>>>>>
> >>>>>>>>>> and maintains the connector with the latest 3 Flink
> >> versions(CI
> >>>>> will
> >>>>>>>>>> publish snapshots for all these 3 branches)
> >>>>>>>>>>
> >>>>>>>>> I'd like to give connector devs a simple way to express to
> >> which
> >>>>> Flink
> >>>>>>>>> versions the current branch is compatible. From there we can
> >>>>> generate
> >>>>>>> the
> >>>>>>>>> compatibility matrix automatically and optionally also create
> >>>>>> different
> >>>>>>>>> releases per supported Flink version. Not sure if the latter is
> >>>>> indeed
> >>>>>>>>> better than having just one artifact that happens to run with
> >>>>> multiple
> >>>>>>>>> Flink versions. I guess it depends on what dependencies we are
> >>>>>>> exposing. If
> >>>>>>>>> the connector uses flink-connector-base, then we probably need
> >>>>>> separate
> >>>>>>>>> artifacts with poms anyways.
> >>>>>>>>>
> >>>>>>>>> Best,
> >>>>>>>>>
> >>>>>>>>> Arvid
> >>>>>>>>>
> >>>>>>>>> On Fri, Nov 19, 2021 at 10:55 AM Zhou, Brian <b.z...@dell.com>
> >>>>> wrote:
> >>>>>>>>>> Hi Arvid,
> >>>>>>>>>>
> >>>>>>>>>> For branching model, the Pravega Flink connector has some
> >>>>> experience
> >>>>>>> what
> >>>>>>>>>> I would like to share. Here[1][2] is the compatibility matrix
> >> and
> >>>>>> wiki
> >>>>>>>>>> explaining the branching model and releases. Basically Pravega
> >>>>>>> community
> >>>>>>>>>> aligns the connector releases with the Pravega mainline
> >> release,
> >>>>> and
> >>>>>>>>>> maintains the connector with the latest 3 Flink versions(CI
> >> will
> >>>>>>> publish
> >>>>>>>>>> snapshots for all these 3 branches).
> >>>>>>>>>> For example, recently we have 0.10.1 release[3], and in maven
> >>>>> central
> >>>>>>> we
> >>>>>>>>>> need to upload three artifacts(For Flink 1.13, 1.12, 1.11) for
> >>>>> 0.10.1
> >>>>>>>>>> version[4].
> >>>>>>>>>>
> >>>>>>>>>> There are some alternatives. Another solution that we once
> >>>>> discussed
> >>>>>>> but
> >>>>>>>>>> finally got abandoned is to have a independent version just
> >> like
> >>>>> the
> >>>>>>>>>> current CDC connector, and then give a big compatibility
> >> matrix to
> >>>>>>> users.
> >>>>>>>>>> We think it would be too confusing when the connector
> >> develops. On
> >>>>>> the
> >>>>>>>>>> contrary, we can also do the opposite way to align with Flink
> >>>>> version
> >>>>>>> and
> >>>>>>>>>> maintain several branches for different system version.
> >>>>>>>>>>
> >>>>>>>>>> I would say this is only a fairly-OK solution because it is a
> >> bit
> >>>>>>> painful
> >>>>>>>>>> for maintainers as cherry-picks are very common and releases
> >> would
> >>>>>>>>> require
> >>>>>>>>>> much work. However, if neither systems do not have a nice
> >> backward
> >>>>>>>>>> compatibility, there seems to be no comfortable solution to
> >> the
> >>>>> their
> >>>>>>>>>> connector.
> >>>>>>>>>>
> >>>>>>>>>> [1]
> >>>>> https://github.com/pravega/flink-connectors#compatibility-matrix
> >>>>>>>>>> [2]
> >>>>>>>>>>
> >>
> https://github.com/pravega/flink-connectors/wiki/Versioning-strategy-for-Flink-connector
> >>>>>>>>>> [3]
> >>>>> https://github.com/pravega/flink-connectors/releases/tag/v0.10.1
> >>>>>>>>>> [4]
> >> https://search.maven.org/search?q=pravega-connectors-flink
> >>>>>>>>>> Best Regards,
> >>>>>>>>>> Brian
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> Internal Use - Confidential
> >>>>>>>>>>
> >>>>>>>>>> -----Original Message-----
> >>>>>>>>>> From: Arvid Heise <ar...@apache.org>
> >>>>>>>>>> Sent: Friday, November 19, 2021 4:12 PM
> >>>>>>>>>> To: dev
> >>>>>>>>>> Subject: Re: [DISCUSS] Creating an external connector
> >> repository
> >>>>>>>>>>
> >>>>>>>>>> [EXTERNAL EMAIL]
> >>>>>>>>>>
> >>>>>>>>>> Hi everyone,
> >>>>>>>>>>
> >>>>>>>>>> we are currently in the process of setting up the
> >> flink-connectors
> >>>>>> repo
> >>>>>>>>>> [1] for new connectors but we hit a wall that we currently
> >> cannot
> >>>>>> take:
> >>>>>>>>>> branching model.
> >>>>>>>>>> To reiterate the original motivation of the external connector
> >>>>> repo:
> >>>>>> We
> >>>>>>>>>> want to decouple the release cycle of a connector with Flink.
> >>>>>> However,
> >>>>>>> if
> >>>>>>>>>> we want to support semantic versioning in the connectors with
> >> the
> >>>>>>> ability
> >>>>>>>>>> to introduce breaking changes through major version bumps and
> >>>>> support
> >>>>>>>>>> bugfixes on old versions, then we need release branches
> >> similar to
> >>>>>> how
> >>>>>>>>>> Flink core operates.
> >>>>>>>>>> Consider two connectors, let's call them kafka and hbase. We
> >> have
> >>>>>> kafka
> >>>>>>>>> in
> >>>>>>>>>> version 1.0.X, 1.1.Y (small improvement), 2.0.Z (config
> >> option)
> >>>>>> change
> >>>>>>>>> and
> >>>>>>>>>> hbase only on 1.0.A.
> >>>>>>>>>>
> >>>>>>>>>> Now our current assumption was that we can work with a
> >> mono-repo
> >>>>>> under
> >>>>>>>>> ASF
> >>>>>>>>>> (flink-connectors). Then, for release-branches, we found 3
> >>>>> options:
> >>>>>>>>>> 1. We would need to create some ugly mess with the cross
> >> product
> >>>>> of
> >>>>>>>>>> connector and version: so you have kafka-release-1.0,
> >>>>>>> kafka-release-1.1,
> >>>>>>>>>> kafka-release-2.0, hbase-release-1.0. The main issue is not
> >> the
> >>>>>> amount
> >>>>>>> of
> >>>>>>>>>> branches (that's something that git can handle) but there the
> >>>>> state
> >>>>>> of
> >>>>>>>>>> kafka is undefined in hbase-release-1.0. That's a call for
> >>>>> desaster
> >>>>>> and
> >>>>>>>>>> makes releasing connectors very cumbersome (CI would only
> >> execute
> >>>>> and
> >>>>>>>>>> publish hbase SNAPSHOTS on hbase-release-1.0).
> >>>>>>>>>> 2. We could avoid the undefined state by having an empty
> >> master
> >>>>> and
> >>>>>>> each
> >>>>>>>>>> release branch really only holds the code of the connector.
> >> But
> >>>>>> that's
> >>>>>>>>> also
> >>>>>>>>>> not great: any user that looks at the repo and sees no
> >> connector
> >>>>>> would
> >>>>>>>>>> assume that it's dead.
> >>>>>>>>>> 3. We could have synced releases similar to the CDC connectors
> >>>>> [2].
> >>>>>>> That
> >>>>>>>>>> means that if any connector introduces a breaking change, all
> >>>>>>> connectors
> >>>>>>>>>> get a new major. I find that quite confusing to a user if
> >> hbase
> >>>>> gets
> >>>>>> a
> >>>>>>>>> new
> >>>>>>>>>> release without any change because kafka introduced a breaking
> >>>>>> change.
> >>>>>>>>>> To fully decouple release cycles and CI of connectors, we
> >> could
> >>>>> add
> >>>>>>>>>> individual repositories under ASF (flink-connector-kafka,
> >>>>>>>>>> flink-connector-hbase). Then we can apply the same branching
> >>>>> model as
> >>>>>>>>>> before. I quickly checked if there are precedences in the
> >> apache
> >>>>>>>>> community
> >>>>>>>>>> for that approach and just by scanning alphabetically I found
> >>>>> cordova
> >>>>>>>>> with
> >>>>>>>>>> 70 and couchdb with 77 apache repos respectively. So it
> >> certainly
> >>>>>> seems
> >>>>>>>>>> like other projects approached our problem in that way and the
> >>>>> apache
> >>>>>>>>>> organization is okay with that. I currently expect max 20
> >>>>> additional
> >>>>>>>>> repos
> >>>>>>>>>> for connectors and in the future 10 max each for formats and
> >>>>>>> filesystems
> >>>>>>>>> if
> >>>>>>>>>> we would also move them out at some point in time. So we
> >> would be
> >>>>> at
> >>>>>> a
> >>>>>>>>>> total of 50 repos.
> >>>>>>>>>>
> >>>>>>>>>> Note for all options, we need to provide a compability matrix
> >>>>> that we
> >>>>>>> aim
> >>>>>>>>>> to autogenerate.
> >>>>>>>>>>
> >>>>>>>>>> Now for the potential downsides that we internally discussed:
> >>>>>>>>>> - How can we ensure common infra structure code, utilties, and
> >>>>>> quality?
> >>>>>>>>>> I propose to add a flink-connector-common that contains all
> >> these
> >>>>>>> things
> >>>>>>>>>> and is added as a git submodule/subtree to the repos.
> >>>>>>>>>> - Do we implicitly discourage connector developers to maintain
> >>>>> more
> >>>>>>> than
> >>>>>>>>>> one connector with a fragmented code base?
> >>>>>>>>>> That is certainly a risk. However, I currently also see few
> >> devs
> >>>>>>> working
> >>>>>>>>>> on more than one connector. However, it may actually help
> >> keeping
> >>>>> the
> >>>>>>>>> devs
> >>>>>>>>>> that maintain a specific connector on the hook. We could use
> >>>>> github
> >>>>>>>>> issues
> >>>>>>>>>> to track bugs and feature requests and a dev can focus his
> >> limited
> >>>>>> time
> >>>>>>>>> on
> >>>>>>>>>> getting that one connector right.
> >>>>>>>>>>
> >>>>>>>>>> So WDYT? Compared to some intermediate suggestions with split
> >>>>> repos,
> >>>>>>> the
> >>>>>>>>>> big difference is that everything remains under Apache
> >> umbrella
> >>>>> and
> >>>>>> the
> >>>>>>>>>> Flink community.
> >>>>>>>>>>
> >>>>>>>>>> [1]
> >>>>>>>>>>
> >>
> https://urldefense.com/v3/__https://github.com/apache/flink-connectors__;!!LpKI!2a1uSGfMmwc8HNwqBUIGtFPzLHP5m9yS0sC3n3IpLgdke_-XjpYgXzxxweh4$
> >>>>>>>>>> [github[.]com] [2]
> >>>>>>>>>>
> >>
> https://urldefense.com/v3/__https://github.com/ververica/flink-cdc-connectors/__;!!LpKI!2a1uSGfMmwc8HNwqBUIGtFPzLHP5m9yS0sC3n3IpLgdke_-XjpYgXzgoPGA8$
> >>>>>>>>>> [github[.]com]
> >>>>>>>>>>
> >>>>>>>>>> On Fri, Nov 12, 2021 at 3:39 PM Arvid Heise <ar...@apache.org
> >>>>>> wrote:
> >>>>>>>>>>> Hi everyone,
> >>>>>>>>>>>
> >>>>>>>>>>> I created the flink-connectors repo [1] to advance the
> >> topic. We
> >>>>>> would
> >>>>>>>>>>> create a proof-of-concept in the next few weeks as a special
> >>>>> branch
> >>>>>>>>>>> that I'd then use for discussions. If the community agrees
> >> with
> >>>>> the
> >>>>>>>>>>> approach, that special branch will become the master. If
> >> not, we
> >>>>> can
> >>>>>>>>>>> reiterate over it or create competing POCs.
> >>>>>>>>>>>
> >>>>>>>>>>> If someone wants to try things out in parallel, just make
> >> sure
> >>>>> that
> >>>>>>>>>>> you are not accidentally pushing POCs to the master.
> >>>>>>>>>>>
> >>>>>>>>>>> As a reminder: We will not move out any current connector
> >> from
> >>>>> Flink
> >>>>>>>>>>> at this point in time, so everything in Flink will remain as
> >> is
> >>>>> and
> >>>>>> be
> >>>>>>>>>>> maintained there.
> >>>>>>>>>>>
> >>>>>>>>>>> Best,
> >>>>>>>>>>>
> >>>>>>>>>>> Arvid
> >>>>>>>>>>>
> >>>>>>>>>>> [1]
> >>>>>>>>>>>
> >> https://urldefense.com/v3/__https://github.com/apache/flink-connectors
> >> __;!!LpKI!2a1uSGfMmwc8HNwqBUIGtFPzLHP5m9yS0sC3n3IpLgdke_-XjpYgXzxxweh4
> >>>>>>>>>>> $ [github[.]com]
> >>>>>>>>>>>
> >>>>>>>>>>> On Fri, Oct 29, 2021 at 6:57 PM Till Rohrmann <
> >>>>> trohrm...@apache.org
> >>>>>>>>>>> wrote:
> >>>>>>>>>>>
> >>>>>>>>>>>> Hi everyone,
> >>>>>>>>>>>>
> >>>>>>>>>>>>   From the discussion, it seems to me that we have different
> >>>>>> opinions
> >>>>>>>>>>>> whether to have an ASF umbrella repository or to host them
> >>>>> outside
> >>>>>> of
> >>>>>>>>>>>> the ASF. It also seems that this is not really the problem
> >> to
> >>>>>> solve.
> >>>>>>>>>>>> Since there are many good arguments for either approach, we
> >>>>> could
> >>>>>>>>>>>> simply start with an ASF umbrella repository and see how
> >> people
> >>>>>> adopt
> >>>>>>>>>>>> it. If the individual connectors cannot move fast enough or
> >> if
> >>>>>> people
> >>>>>>>>>>>> prefer to not buy into the more heavy-weight ASF processes,
> >> then
> >>>>>> they
> >>>>>>>>>>>> can host the code also somewhere else. We simply need to
> >> make
> >>>>> sure
> >>>>>>>>>>>> that these connectors are discoverable (e.g. via
> >>>>> flink-packages).
> >>>>>>>>>>>> The more important problem seems to be to provide common
> >> tooling
> >>>>>>>>>>>> (testing, infrastructure, documentation) that can easily be
> >>>>> reused.
> >>>>>>>>>>>> Similarly, it has become clear that the Flink community
> >> needs to
> >>>>>>>>>>>> improve on providing stable APIs. I think it is not
> >> realistic to
> >>>>>>>>>>>> first complete these tasks before starting to move
> >> connectors to
> >>>>>>>>>>>> dedicated repositories. As Stephan said, creating a
> >> connector
> >>>>>>>>>>>> repository will force us to pay more attention to API
> >> stability
> >>>>> and
> >>>>>>>>>>>> also to think about which testing tools are required.
> >> Hence, I
> >>>>>>>>>>>> believe that starting to add connectors to a different
> >>>>> repository
> >>>>>>>>>>>> than apache/flink will help improve our connector tooling
> >>>>>> (declaring
> >>>>>>>>>>>> testing classes as public, creating a common test utility
> >> repo,
> >>>>>>>>>>>> creating a repo
> >>>>>>>>>>>> template) and vice versa. Hence, I like Arvid's proposed
> >>>>> process as
> >>>>>>>>>>>> it will start kicking things off w/o letting this effort
> >> fizzle
> >>>>>> out.
> >>>>>>>>>>>> Cheers,
> >>>>>>>>>>>> Till
> >>>>>>>>>>>>
> >>>>>>>>>>>> On Thu, Oct 28, 2021 at 11:44 AM Stephan Ewen <
> >> se...@apache.org
> >>>>>>>>> wrote:
> >>>>>>>>>>>>> Thank you all, for the nice discussion!
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>   From my point of view, I very much like the idea of
> >> putting
> >>>>>>>>>>>>> connectors
> >>>>>>>>>>>> in a
> >>>>>>>>>>>>> separate repository. But I would argue it should be part of
> >>>>> Apache
> >>>>>>>>>>>> Flink,
> >>>>>>>>>>>>> similar to flink-statefun, flink-ml, etc.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> I share many of the reasons for that:
> >>>>>>>>>>>>>     - As argued many times, reduces complexity of the Flink
> >>>>> repo,
> >>>>>>>>>>>> increases
> >>>>>>>>>>>>> response times of CI, etc.
> >>>>>>>>>>>>>     - Much lower barrier of contribution, because an
> >> unstable
> >>>>>>>>>>>>> connector
> >>>>>>>>>>>> would
> >>>>>>>>>>>>> not de-stabilize the whole build. Of course, we would need
> >> to
> >>>>> make
> >>>>>>>>>>>>> sure
> >>>>>>>>>>>> we
> >>>>>>>>>>>>> set this up the right way, with connectors having
> >> individual CI
> >>>>>>>>>>>>> runs,
> >>>>>>>>>>>> build
> >>>>>>>>>>>>> status, etc. But it certainly seems possible.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> I would argue some points a bit different than some cases
> >> made
> >>>>>>>>> before:
> >>>>>>>>>>>>> (a) I believe the separation would increase connector
> >>>>> stability.
> >>>>>>>>>>>> Because it
> >>>>>>>>>>>>> really forces us to work with the connectors against the
> >> APIs
> >>>>> like
> >>>>>>>>>>>>> any external developer. A mono repo is somehow the wrong
> >> thing
> >>>>> if
> >>>>>>>>>>>>> you in practice want to actually guarantee stable internal
> >>>>> APIs at
> >>>>>>>>>> some layer.
> >>>>>>>>>>>>> Because the mono repo makes it easy to just change
> >> something on
> >>>>>>>>>>>>> both
> >>>>>>>>>>>> sides
> >>>>>>>>>>>>> of the API (provider and consumer) seamlessly.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Major refactorings in Flink need to keep all connector API
> >>>>>>>>>>>>> contracts intact, or we need to have a new version of the
> >>>>>> connector
> >>>>>>>>>> API.
> >>>>>>>>>>>>> (b) We may even be able to go towards more lightweight and
> >>>>>>>>>>>>> automated releases over time, even if we stay in Apache
> >> Flink
> >>>>> with
> >>>>>>>>>> that repo.
> >>>>>>>>>>>>> This isn't yet fully aligned with the Apache release
> >> policies,
> >>>>>> yet,
> >>>>>>>>>>>>> but there are board discussions about whether there can be
> >>>>>>>>>>>>> bot-triggered releases (by dependabot) and how that could
> >> fit
> >>>>> into
> >>>>>>>>>> the Apache process.
> >>>>>>>>>>>>> This doesn't seem to be quite there just yet, but seeing
> >> that
> >>>>>> those
> >>>>>>>>>>>> start
> >>>>>>>>>>>>> is a good sign, and there is a good chance we can do some
> >>>>> things
> >>>>>>>>>> there.
> >>>>>>>>>>>>> I am not sure whether we should let bots trigger releases,
> >>>>> because
> >>>>>>>>>>>>> a
> >>>>>>>>>>>> final
> >>>>>>>>>>>>> human look at things isn't a bad thing, especially given
> >> the
> >>>>>>>>>>>>> popularity
> >>>>>>>>>>>> of
> >>>>>>>>>>>>> software supply chain attacks recently.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> I do share Chesnay's concerns about complexity in tooling,
> >>>>> though.
> >>>>>>>>>>>>> Both release tooling and test tooling. They are not
> >>>>> incompatible
> >>>>>>>>>>>>> with that approach, but they are a task we need to tackle
> >>>>> during
> >>>>>>>>>>>>> this change which will add additional work.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> On Tue, Oct 26, 2021 at 10:31 AM Arvid Heise <
> >> ar...@apache.org
> >>>>>>>>>> wrote:
> >>>>>>>>>>>>>> Hi folks,
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> I think some questions came up and I'd like to address the
> >>>>>>>>>>>>>> question of
> >>>>>>>>>>>>> the
> >>>>>>>>>>>>>> timing.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Could you clarify what release cadence you're thinking of?
> >>>>>>>>>>>>>> There's
> >>>>>>>>>>>> quite
> >>>>>>>>>>>>>>> a big range that fits "more frequent than Flink"
> >> (per-commit,
> >>>>>>>>>>>>>>> daily, weekly, bi-weekly, monthly, even bi-monthly).
> >>>>>>>>>>>>>> The short answer is: as often as needed:
> >>>>>>>>>>>>>> - If there is a CVE in a dependency and we need to bump
> >> it -
> >>>>>>>>>>>>>> release immediately.
> >>>>>>>>>>>>>> - If there is a new feature merged, release soonish. We
> >> may
> >>>>>>>>>>>>>> collect a
> >>>>>>>>>>>> few
> >>>>>>>>>>>>>> successive features before a release.
> >>>>>>>>>>>>>> - If there is a bugfix, release immediately or soonish
> >>>>> depending
> >>>>>>>>>>>>>> on
> >>>>>>>>>>>> the
> >>>>>>>>>>>>>> severity and if there are workarounds available.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> We should not limit ourselves; the whole idea of
> >> independent
> >>>>>>>>>>>>>> releases
> >>>>>>>>>>>> is
> >>>>>>>>>>>>>> exactly that you release as needed. There is no release
> >>>>> planning
> >>>>>>>>>>>>>> or anything needed, you just go with a release as if it
> >> was an
> >>>>>>>>>>>>>> external artifact.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> (1) is the connector API already stable?
> >>>>>>>>>>>>>>>   From another discussion thread [1], connector API is far
> >>>>> from
> >>>>>>>>>>>> stable.
> >>>>>>>>>>>>>>> Currently, it's hard to build connectors against multiple
> >>>>> Flink
> >>>>>>>>>>>>> versions.
> >>>>>>>>>>>>>>> There are breaking API changes both in 1.12 -> 1.13 and
> >> 1.13
> >>>>> ->
> >>>>>>>>>>>>>>> 1.14
> >>>>>>>>>>>>> and
> >>>>>>>>>>>>>>>    maybe also in the future versions,  because Table
> >> related
> >>>>> APIs
> >>>>>>>>>>>>>>> are
> >>>>>>>>>>>>> still
> >>>>>>>>>>>>>>> @PublicEvolving and new Sink API is still @Experimental.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>> The question is: what is stable in an evolving system? We
> >>>>>>>>>>>>>> recently discovered that the old SourceFunction needed to
> >> be
> >>>>>>>>>>>>>> refined such that cancellation works correctly [1]. So
> >> that
> >>>>>>>>>>>>>> interface is in Flink since
> >>>>>>>>>>>> 7
> >>>>>>>>>>>>>> years, heavily used also outside, and we still had to
> >> change
> >>>>> the
> >>>>>>>>>>>> contract
> >>>>>>>>>>>>>> in a way that I'd expect any implementer to recheck their
> >>>>>>>>>>>> implementation.
> >>>>>>>>>>>>>> It might not be necessary to change anything and you can
> >>>>> probably
> >>>>>>>>>>>> change
> >>>>>>>>>>>>>> the the code for all Flink versions but still, the
> >> interface
> >>>>> was
> >>>>>>>>>>>>>> not
> >>>>>>>>>>>>> stable
> >>>>>>>>>>>>>> in the closest sense.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> If we focus just on API changes on the unified interfaces,
> >>>>> then
> >>>>>>>>>>>>>> we
> >>>>>>>>>>>> expect
> >>>>>>>>>>>>>> one more change to Sink API to support compaction. For
> >> Table
> >>>>> API,
> >>>>>>>>>>>> there
> >>>>>>>>>>>>>> will most likely also be some changes in 1.15. So we could
> >>>>> wait
> >>>>>>>>>>>>>> for
> >>>>>>>>>>>> 1.15.
> >>>>>>>>>>>>>> But I'm questioning if that's really necessary because we
> >> will
> >>>>>>>>>>>>>> add
> >>>>>>>>>>>> more
> >>>>>>>>>>>>>> functionality beyond 1.15 without breaking API. For
> >> example,
> >>>>> we
> >>>>>>>>>>>>>> may
> >>>>>>>>>>>> add
> >>>>>>>>>>>>>> more unified connector metrics. If you want to use it in
> >> your
> >>>>>>>>>>>> connector,
> >>>>>>>>>>>>>> you have to support multiple Flink versions anyhow. So
> >> rather
> >>>>>>>>>>>>>> then
> >>>>>>>>>>>>> focusing
> >>>>>>>>>>>>>> the discussion on "when is stuff stable", I'd rather
> >> focus on
> >>>>>>>>>>>>>> "how
> >>>>>>>>>>>> can we
> >>>>>>>>>>>>>> support building connectors against multiple Flink
> >> versions"
> >>>>> and
> >>>>>>>>>>>>>> make
> >>>>>>>>>>>> it
> >>>>>>>>>>>>> as
> >>>>>>>>>>>>>> painless as possible.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Chesnay pointed out to use different branches for
> >> different
> >>>>> Flink
> >>>>>>>>>>>>> versions
> >>>>>>>>>>>>>> which sounds like a good suggestion. With a mono-repo, we
> >>>>> can't
> >>>>>>>>>>>>>> use branches differently anyways (there is no way to have
> >>>>> release
> >>>>>>>>>>>>>> branches
> >>>>>>>>>>>>> per
> >>>>>>>>>>>>>> connector without chaos). In these branches, we could
> >> provide
> >>>>>>>>>>>>>> shims to simulate future features in older Flink versions
> >> such
> >>>>>>>>>>>>>> that code-wise,
> >>>>>>>>>>>> the
> >>>>>>>>>>>>>> source code of a specific connector may not diverge
> >> (much).
> >>>>> For
> >>>>>>>>>>>> example,
> >>>>>>>>>>>>> to
> >>>>>>>>>>>>>> register unified connector metrics, we could simulate the
> >>>>> current
> >>>>>>>>>>>>> approach
> >>>>>>>>>>>>>> also in some utility package of the mono-repo.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> I see the stable core Flink API as a prerequisite for
> >>>>> modularity.
> >>>>>>>>>>>>>> And
> >>>>>>>>>>>>>>> for connectors it is not just the source and sink API
> >> (source
> >>>>>>>>>>>>>>> being stable as of 1.14), but everything that is
> >> required to
> >>>>>>>>>>>>>>> build and maintain a connector downstream, such as the
> >> test
> >>>>>>>>>>>>>>> utilities and infrastructure.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>> That is a very fair point. I'm actually surprised to see
> >> that
> >>>>>>>>>>>>>> MiniClusterWithClientResource is not public. I see it
> >> being
> >>>>> used
> >>>>>>>>>>>>>> in
> >>>>>>>>>>>> all
> >>>>>>>>>>>>>> connectors, especially outside of Flink. I fear that as
> >> long
> >>>>> as
> >>>>>>>>>>>>>> we do
> >>>>>>>>>>>> not
> >>>>>>>>>>>>>> have connectors outside, we will not properly annotate and
> >>>>>>>>>>>>>> maintain
> >>>>>>>>>>>> these
> >>>>>>>>>>>>>> utilties in a classic hen-and-egg-problem. I will outline
> >> an
> >>>>> idea
> >>>>>>>>>>>>>> at
> >>>>>>>>>>>> the
> >>>>>>>>>>>>>> end.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> the connectors need to be adopted and require at least
> >> one
> >>>>>>>>>>>>>>> release
> >>>>>>>>>>>> per
> >>>>>>>>>>>>>>> Flink minor release.
> >>>>>>>>>>>>>>> However, this will make the releases of connectors
> >> slower,
> >>>>> e.g.
> >>>>>>>>>>>>> maintain
> >>>>>>>>>>>>>>> features for multiple branches and release multiple
> >> branches.
> >>>>>>>>>>>>>>> I think the main purpose of having an external connector
> >>>>>>>>>>>>>>> repository
> >>>>>>>>>>>> is
> >>>>>>>>>>>>> in
> >>>>>>>>>>>>>>> order to have "faster releases of connectors"?
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Imagine a project with a complex set of dependencies.
> >> Let's
> >>>>> say
> >>>>>>>>>>>> Flink
> >>>>>>>>>>>>>>> version A plus Flink reliant dependencies released by
> >> other
> >>>>>>>>>>>>>>> projects (Flink-external connectors, Beam, Iceberg, Hudi,
> >>>>> ..).
> >>>>>>>>>>>>>>> We don't want
> >>>>>>>>>>>> a
> >>>>>>>>>>>>>>> situation where we bump the core Flink version to B and
> >>>>> things
> >>>>>>>>>>>>>>> fall apart (interface changes, utilities that were
> >> useful but
> >>>>>>>>>>>>>>> not public, transitive dependencies etc.).
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Yes, that's why I wanted to automate the processes more
> >> which
> >>>>> is
> >>>>>>>>>>>>>> not
> >>>>>>>>>>>> that
> >>>>>>>>>>>>>> easy under ASF. Maybe we automate the source provision
> >> across
> >>>>>>>>>>>> supported
> >>>>>>>>>>>>>> versions and have 1 vote thread for all versions of a
> >>>>> connector?
> >>>>>>>>>>>>>>   From the perspective of CDC connector maintainers, the
> >>>>> biggest
> >>>>>>>>>>>> advantage
> >>>>>>>>>>>>> of
> >>>>>>>>>>>>>>> maintaining it outside of the Flink project is that:
> >>>>>>>>>>>>>>> 1) we can have a more flexible and faster release cycle
> >>>>>>>>>>>>>>> 2) we can be more liberal with committership for
> >> connector
> >>>>>>>>>>>> maintainers
> >>>>>>>>>>>>>>> which can also attract more committers to help the
> >> release.
> >>>>>>>>>>>>>>> Personally, I think maintaining one connector repository
> >>>>> under
> >>>>>>>>>>>>>>> the
> >>>>>>>>>>>> ASF
> >>>>>>>>>>>>>> may
> >>>>>>>>>>>>>>> not have the above benefits.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Yes, I also feel that ASF is too restrictive for our
> >> needs.
> >>>>> But
> >>>>>>>>>>>>>> it
> >>>>>>>>>>>> feels
> >>>>>>>>>>>>>> like there are too many that see it differently and I
> >> think we
> >>>>>>>>>>>>>> need
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> (2) Flink testability without connectors.
> >>>>>>>>>>>>>>> This is a very good question. How can we guarantee the
> >> new
> >>>>>>>>>>>>>>> Source
> >>>>>>>>>>>> and
> >>>>>>>>>>>>>> Sink
> >>>>>>>>>>>>>>> API are stable with only test implementation?
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>> We can't and shouldn't. Since the connector repo is
> >> managed by
> >>>>>>>>>>>>>> Flink,
> >>>>>>>>>>>> a
> >>>>>>>>>>>>>> Flink release manager needs to check if the Flink
> >> connectors
> >>>>> are
> >>>>>>>>>>>> actually
> >>>>>>>>>>>>>> working prior to creating an RC. That's similar to how
> >>>>>>>>>>>>>> flink-shaded
> >>>>>>>>>>>> and
> >>>>>>>>>>>>>> flink core are related.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> So here is one idea that I had to get things rolling. We
> >> are
> >>>>>>>>>>>>>> going to address the external repo iteratively without
> >>>>>>>>>>>>>> compromising what we
> >>>>>>>>>>>>> already
> >>>>>>>>>>>>>> have:
> >>>>>>>>>>>>>> 1.Phase, add new contributions to external repo. We use
> >> that
> >>>>> time
> >>>>>>>>>>>>>> to
> >>>>>>>>>>>>> setup
> >>>>>>>>>>>>>> infra accordingly and optimize release processes. We will
> >>>>>>>>>>>>>> identify
> >>>>>>>>>>>> test
> >>>>>>>>>>>>>> utilities that are not yet public/stable and fix that.
> >>>>>>>>>>>>>> 2.Phase, add ports to the new unified interfaces of
> >> existing
> >>>>>>>>>>>> connectors.
> >>>>>>>>>>>>>> That requires a previous Flink release to make utilities
> >>>>> stable.
> >>>>>>>>>>>>>> Keep
> >>>>>>>>>>>> old
> >>>>>>>>>>>>>> interfaces in flink-core.
> >>>>>>>>>>>>>> 3.Phase, remove old interfaces in flink-core of some
> >>>>> connectors
> >>>>>>>>>>>>>> (tbd
> >>>>>>>>>>>> at a
> >>>>>>>>>>>>>> later point).
> >>>>>>>>>>>>>> 4.Phase, optionally move all remaining connectors (tbd at
> >> a
> >>>>> later
> >>>>>>>>>>>> point).
> >>>>>>>>>>>>>> I'd envision having ~3 months between the starting the
> >>>>> different
> >>>>>>>>>>>> phases.
> >>>>>>>>>>>>>> WDYT?
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> [1]
> >>>>>>>>>>>>>>
> >>>>>> https://urldefense.com/v3/__https://issues.apache.org/jira/browse
> >>>>> /FLINK-23527__;!!LpKI!2a1uSGfMmwc8HNwqBUIGtFPzLHP5m9yS0sC3n3IpLgd
> >>>>>>>>>>>>>> ke_-XjpYgX2sIvAP4$ [issues[.]apache[.]org]
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> On Thu, Oct 21, 2021 at 7:12 AM Kyle Bendickson <
> >>>>> k...@tabular.io
> >>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>> Hi all,
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> My name is Kyle and I’m an open source developer
> >> primarily
> >>>>>>>>>>>>>>> focused
> >>>>>>>>>>>> on
> >>>>>>>>>>>>>>> Apache Iceberg.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> I’m happy to help clarify or elaborate on any aspect of
> >> our
> >>>>>>>>>>>> experience
> >>>>>>>>>>>>>>> working on a relatively decoupled connector that is
> >>>>> downstream
> >>>>>>>>>>>>>>> and
> >>>>>>>>>>>>> pretty
> >>>>>>>>>>>>>>> popular.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> I’d also love to be able to contribute or assist in any
> >> way I
> >>>>>>>>> can.
> >>>>>>>>>>>>>>> I don’t mean to thread jack, but are there any meetings
> >> or
> >>>>>>>>>>>>>>> community
> >>>>>>>>>>>>> sync
> >>>>>>>>>>>>>>> ups, specifically around the connector APIs, that I might
> >>>>> join
> >>>>>>>>>>>>>>> / be
> >>>>>>>>>>>>>> invited
> >>>>>>>>>>>>>>> to?
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> I did want to add that even though I’ve experienced some
> >> of
> >>>>> the
> >>>>>>>>>>>>>>> pain
> >>>>>>>>>>>>>> points
> >>>>>>>>>>>>>>> of integrating with an evolving system / API (catalog
> >> support
> >>>>>>>>>>>>>>> is
> >>>>>>>>>>>>>> generally
> >>>>>>>>>>>>>>> speaking pretty new everywhere really in this space), I
> >> also
> >>>>>>>>>>>>>>> agree personally that you shouldn’t slow down development
> >>>>>>>>>>>>>>> velocity too
> >>>>>>>>>>>> much
> >>>>>>>>>>>>> for
> >>>>>>>>>>>>>>> the sake of external connector. Getting to a performant
> >> and
> >>>>>>>>>>>>>>> stable
> >>>>>>>>>>>>> place
> >>>>>>>>>>>>>>> should be the primary goal, and slowing that down to
> >> support
> >>>>>>>>>>>> stragglers
> >>>>>>>>>>>>>>> will (in my personal opinion) always be a losing game.
> >> Some
> >>>>>>>>>>>>>>> folks
> >>>>>>>>>>>> will
> >>>>>>>>>>>>>>> simply stay behind on versions regardless until they
> >> have to
> >>>>>>>>>>>> upgrade.
> >>>>>>>>>>>>>>> I am working on ensuring that the Iceberg community stays
> >>>>>>>>>>>>>>> within 1-2 versions of Flink, so that we can help provide
> >>>>> more
> >>>>>>>>>>>>>>> feedback or
> >>>>>>>>>>>>>> contribute
> >>>>>>>>>>>>>>> things that might make our ability to support multiple
> >> Flink
> >>>>>>>>>>>> runtimes /
> >>>>>>>>>>>>>>> versions with one project / codebase and minimal to no
> >>>>>>>>>>>>>>> reflection
> >>>>>>>>>>>> (our
> >>>>>>>>>>>>>>> desired goal).
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> If there’s anything I can do or any way I can be of
> >>>>> assistance,
> >>>>>>>>>>>> please
> >>>>>>>>>>>>>>> don’t hesitate to reach out. Or find me on ASF slack 😀
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> I greatly appreciate your general concern for the needs
> >> of
> >>>>>>>>>>>> downstream
> >>>>>>>>>>>>>>> connector integrators!
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Cheers
> >>>>>>>>>>>>>>> Kyle Bendickson (GitHub: kbendick) Open Source Developer
> >> kyle
> >>>>>>>>>>>>>>> [at] tabular [dot] io
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> On Wed, Oct 20, 2021 at 11:35 AM Thomas Weise <
> >>>>> t...@apache.org>
> >>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>> Hi,
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> I see the stable core Flink API as a prerequisite for
> >>>>>>>>>> modularity.
> >>>>>>>>>>>> And
> >>>>>>>>>>>>>>>> for connectors it is not just the source and sink API
> >>>>> (source
> >>>>>>>>>>>> being
> >>>>>>>>>>>>>>>> stable as of 1.14), but everything that is required to
> >> build
> >>>>>>>>>>>>>>>> and maintain a connector downstream, such as the test
> >>>>>>>>>>>>>>>> utilities and infrastructure.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Without the stable surface of core Flink, changes will
> >> leak
> >>>>>>>>>>>>>>>> into downstream dependencies and force lock step
> >> updates.
> >>>>>>>>>>>>>>>> Refactoring across N repos is more painful than a single
> >>>>>>>>>>>>>>>> repo. Those with experience developing downstream of
> >> Flink
> >>>>>>>>>>>>>>>> will know the pain, and
> >>>>>>>>>>>>> that
> >>>>>>>>>>>>>>>> isn't limited to connectors. I don't remember a Flink
> >> "minor
> >>>>>>>>>>>> version"
> >>>>>>>>>>>>>>>> update that was just a dependency version change and
> >> did not
> >>>>>>>>>>>>>>>> force other downstream changes.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Imagine a project with a complex set of dependencies.
> >> Let's
> >>>>>>>>>>>>>>>> say
> >>>>>>>>>>>> Flink
> >>>>>>>>>>>>>>>> version A plus Flink reliant dependencies released by
> >> other
> >>>>>>>>>>>> projects
> >>>>>>>>>>>>>>>> (Flink-external connectors, Beam, Iceberg, Hudi, ..). We
> >>>>>>>>>>>>>>>> don't
> >>>>>>>>>>>> want a
> >>>>>>>>>>>>>>>> situation where we bump the core Flink version to B and
> >>>>>>>>>>>>>>>> things
> >>>>>>>>>>>> fall
> >>>>>>>>>>>>>>>> apart (interface changes, utilities that were useful
> >> but not
> >>>>>>>>>>>> public,
> >>>>>>>>>>>>>>>> transitive dependencies etc.).
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> The discussion here also highlights the benefits of
> >> keeping
> >>>>>>>>>>>> certain
> >>>>>>>>>>>>>>>> connectors outside Flink. Whether that is due to
> >> difference
> >>>>>>>>>>>>>>>> in developer community, maturity of the connectors,
> >> their
> >>>>>>>>>>>>>>>> specialized/limited usage etc. I would like to see that
> >> as a
> >>>>>>>>>>>>>>>> sign
> >>>>>>>>>>>> of
> >>>>>>>>>>>>> a
> >>>>>>>>>>>>>>>> growing ecosystem and most of the ideas that Arvid has
> >> put
> >>>>>>>>>>>>>>>> forward would benefit further growth of the connector
> >>>>>>>>> ecosystem.
> >>>>>>>>>>>>>>>> As for keeping connectors within Apache Flink: I prefer
> >> that
> >>>>>>>>>>>>>>>> as
> >>>>>>>>>>>> the
> >>>>>>>>>>>>>>>> path forward for "essential" connectors like FileSource,
> >>>>>>>>>>>> KafkaSource,
> >>>>>>>>>>>>>>>> ... And we can still achieve a more flexible and faster
> >>>>>>>>>>>>>>>> release
> >>>>>>>>>>>>> cycle.
> >>>>>>>>>>>>>>>> Thanks,
> >>>>>>>>>>>>>>>> Thomas
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> On Wed, Oct 20, 2021 at 3:32 AM Jark Wu <
> >> imj...@gmail.com>
> >>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>> Hi Konstantin,
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> the connectors need to be adopted and require at least
> >>>>>>>>>>>>>>>>>> one
> >>>>>>>>>>>>> release
> >>>>>>>>>>>>>>> per
> >>>>>>>>>>>>>>>>> Flink minor release.
> >>>>>>>>>>>>>>>>> However, this will make the releases of connectors
> >> slower,
> >>>>>>>>>> e.g.
> >>>>>>>>>>>>>>> maintain
> >>>>>>>>>>>>>>>>> features for multiple branches and release multiple
> >>>>>>>>> branches.
> >>>>>>>>>>>>>>>>> I think the main purpose of having an external
> >> connector
> >>>>>>>>>>>> repository
> >>>>>>>>>>>>>> is
> >>>>>>>>>>>>>>> in
> >>>>>>>>>>>>>>>>> order to have "faster releases of connectors"?
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>   From the perspective of CDC connector maintainers, the
> >>>>>>>>>>>>>>>>> biggest
> >>>>>>>>>>>>>>> advantage
> >>>>>>>>>>>>>>>> of
> >>>>>>>>>>>>>>>>> maintaining it outside of the Flink project is that:
> >>>>>>>>>>>>>>>>> 1) we can have a more flexible and faster release cycle
> >>>>>>>>>>>>>>>>> 2) we can be more liberal with committership for
> >> connector
> >>>>>>>>>>>>>> maintainers
> >>>>>>>>>>>>>>>>> which can also attract more committers to help the
> >> release.
> >>>>>>>>>>>>>>>>> Personally, I think maintaining one connector
> >> repository
> >>>>>>>>>>>>>>>>> under
> >>>>>>>>>>>> the
> >>>>>>>>>>>>>> ASF
> >>>>>>>>>>>>>>>> may
> >>>>>>>>>>>>>>>>> not have the above benefits.
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Best,
> >>>>>>>>>>>>>>>>> Jark
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> On Wed, 20 Oct 2021 at 15:14, Konstantin Knauf <
> >>>>>>>>>>>> kna...@apache.org>
> >>>>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>> Hi everyone,
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> regarding the stability of the APIs. I think everyone
> >>>>>>>>>>>>>>>>>> agrees
> >>>>>>>>>>>> that
> >>>>>>>>>>>>>>>>>> connector APIs which are stable across minor versions
> >>>>>>>>>>>>> (1.13->1.14)
> >>>>>>>>>>>>>>> are
> >>>>>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>>> mid-term goal. But:
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> a) These APIs are still quite young, and we shouldn't
> >>>>>>>>>>>>>>>>>> make
> >>>>>>>>>>>> them
> >>>>>>>>>>>>>>> @Public
> >>>>>>>>>>>>>>>>>> prematurely either.
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> b) Isn't this *mostly* orthogonal to where the
> >> connector
> >>>>>>>>>>>>>>>>>> code
> >>>>>>>>>>>>>> lives?
> >>>>>>>>>>>>>>>> Yes,
> >>>>>>>>>>>>>>>>>> as long as there are breaking changes, the connectors
> >>>>>>>>>>>>>>>>>> need to
> >>>>>>>>>>>> be
> >>>>>>>>>>>>>>>> adopted
> >>>>>>>>>>>>>>>>>> and require at least one release per Flink minor
> >> release.
> >>>>>>>>>>>>>>>>>> Documentation-wise this can be addressed via a
> >>>>>>>>>>>>>>>>>> compatibility
> >>>>>>>>>>>>> matrix
> >>>>>>>>>>>>>>> for
> >>>>>>>>>>>>>>>>>> each connector as Arvid suggested. IMO we shouldn't
> >> block
> >>>>>>>>>>>>>>>>>> this
> >>>>>>>>>>>>>> effort
> >>>>>>>>>>>>>>>> on
> >>>>>>>>>>>>>>>>>> the stability of the APIs.
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> Cheers,
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> Konstantin
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> On Wed, Oct 20, 2021 at 8:56 AM Jark Wu
> >>>>>>>>>>>>>>>>>> <imj...@gmail.com>
> >>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>>> Hi,
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> I think Thomas raised very good questions and would
> >> like
> >>>>>>>>>>>>>>>>>>> to
> >>>>>>>>>>>> know
> >>>>>>>>>>>>>>> your
> >>>>>>>>>>>>>>>>>>> opinions if we want to move connectors out of flink
> >> in
> >>>>>>>>>>>>>>>>>>> this
> >>>>>>>>>>>>>> version.
> >>>>>>>>>>>>>>>>>>> (1) is the connector API already stable?
> >>>>>>>>>>>>>>>>>>>> Separate releases would only make sense if the core
> >>>>>>>>>>>>>>>>>>>> Flink
> >>>>>>>>>>>>>> surface
> >>>>>>>>>>>>>>> is
> >>>>>>>>>>>>>>>>>>>> fairly stable though. As evident from Iceberg (and
> >>>>>>>>>>>>>>>>>>>> also
> >>>>>>>>>>>> Beam),
> >>>>>>>>>>>>>>>> that's
> >>>>>>>>>>>>>>>>>>>> not the case currently. We should probably focus on
> >>>>>>>>>>>> addressing
> >>>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>>>>> stability first, before splitting code. A success
> >>>>>>>>>>>>>>>>>>>> criteria
> >>>>>>>>>>>>> could
> >>>>>>>>>>>>>>> be
> >>>>>>>>>>>>>>>>>>>> that we are able to build Iceberg and Beam against
> >>>>>>>>>>>>>>>>>>>> multiple
> >>>>>>>>>>>>>> Flink
> >>>>>>>>>>>>>>>>>>>> versions w/o the need to change code. The goal would
> >>>>>>>>>>>>>>>>>>>> be
> >>>>>>>>>>>> that
> >>>>>>>>>>>>> no
> >>>>>>>>>>>>>>>>>>>> connector breaks when we make changes to Flink core.
> >>>>>>>>>>>>>>>>>>>> Until
> >>>>>>>>>>>>>> that's
> >>>>>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>>>>> case, code separation creates a setup where 1+1 or
> >> N+1
> >>>>>>>>>>>>>>> repositories
> >>>>>>>>>>>>>>>>>>>> need to move lock step.
> >>>>>>>>>>>>>>>>>>>   From another discussion thread [1], connector API
> >> is far
> >>>>>>>>>>>>>>>>>>> from
> >>>>>>>>>>>>>>> stable.
> >>>>>>>>>>>>>>>>>>> Currently, it's hard to build connectors against
> >>>>>>>>>>>>>>>>>>> multiple
> >>>>>>>>>>>> Flink
> >>>>>>>>>>>>>>>> versions.
> >>>>>>>>>>>>>>>>>>> There are breaking API changes both in 1.12 -> 1.13
> >> and
> >>>>>>>>>>>>>>>>>>> 1.13
> >>>>>>>>>>>> ->
> >>>>>>>>>>>>>> 1.14
> >>>>>>>>>>>>>>>> and
> >>>>>>>>>>>>>>>>>>>    maybe also in the future versions,  because Table
> >>>>>>>>>>>>>>>>>>> related
> >>>>>>>>>>>> APIs
> >>>>>>>>>>>>>> are
> >>>>>>>>>>>>>>>> still
> >>>>>>>>>>>>>>>>>>> @PublicEvolving and new Sink API is still
> >> @Experimental.
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> (2) Flink testability without connectors.
> >>>>>>>>>>>>>>>>>>>> Flink w/o Kafka connector (and few others) isn't
> >>>>>>>>>>>>>>>>>>>> viable. Testability of Flink was already brought up,
> >>>>>>>>>>>>>>>>>>>> can we
> >>>>>>>>>>>>>> really
> >>>>>>>>>>>>>>>>>>>> certify a Flink core release without Kafka
> >> connector?
> >>>>>>>>>>>>>>>>>>>> Maybe
> >>>>>>>>>>>>>> those
> >>>>>>>>>>>>>>>>>>>> connectors that are used in Flink e2e tests to
> >>>>>>>>>>>>>>>>>>>> validate
> >>>>>>>>>>>>>>>> functionality
> >>>>>>>>>>>>>>>>>>>> of core Flink should not be broken out?
> >>>>>>>>>>>>>>>>>>> This is a very good question. How can we guarantee
> >> the
> >>>>>>>>>>>>>>>>>>> new
> >>>>>>>>>>>>> Source
> >>>>>>>>>>>>>>> and
> >>>>>>>>>>>>>>>> Sink
> >>>>>>>>>>>>>>>>>>> API are stable with only test implementation?
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> Best,
> >>>>>>>>>>>>>>>>>>> Jark
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> On Tue, 19 Oct 2021 at 23:56, Chesnay Schepler <
> >>>>>>>>>>>>>> ches...@apache.org>
> >>>>>>>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> Could you clarify what release cadence you're
> >> thinking
> >>>>>>>>>> of?
> >>>>>>>>>>>>>> There's
> >>>>>>>>>>>>>>>> quite
> >>>>>>>>>>>>>>>>>>>> a big range that fits "more frequent than Flink"
> >>>>>>>>>>>> (per-commit,
> >>>>>>>>>>>>>>> daily,
> >>>>>>>>>>>>>>>>>>>> weekly, bi-weekly, monthly, even bi-monthly).
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> On 19/10/2021 14:15, Martijn Visser wrote:
> >>>>>>>>>>>>>>>>>>>>> Hi all,
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> I think it would be a huge benefit if we can
> >> achieve
> >>>>>>>>>>>>>>>>>>>>> more
> >>>>>>>>>>>>>>> frequent
> >>>>>>>>>>>>>>>>>>>> releases
> >>>>>>>>>>>>>>>>>>>>> of connectors, which are not bound to the release
> >>>>>>>>>>>>>>>>>>>>> cycle
> >>>>>>>>>>>> of
> >>>>>>>>>>>>>> Flink
> >>>>>>>>>>>>>>>>>>> itself.
> >>>>>>>>>>>>>>>>>>>> I
> >>>>>>>>>>>>>>>>>>>>> agree that in order to get there, we need to have
> >>>>>>>>>>>>>>>>>>>>> stable
> >>>>>>>>>>>>>>>> interfaces
> >>>>>>>>>>>>>>>>>>> which
> >>>>>>>>>>>>>>>>>>>>> are trustworthy and reliable, so they can be safely
> >>>>>>>>>>>>>>>>>>>>> used
> >>>>>>>>>>>> by
> >>>>>>>>>>>>>>> those
> >>>>>>>>>>>>>>>>>>>>> connectors. I do think that work still needs to be
> >>>>>>>>>>>>>>>>>>>>> done
> >>>>>>>>>>>> on
> >>>>>>>>>>>>>> those
> >>>>>>>>>>>>>>>>>>>>> interfaces, but I am confident that we can get
> >> there
> >>>>>>>>>>>> from a
> >>>>>>>>>>>>>>> Flink
> >>>>>>>>>>>>>>>>>>>>> perspective.
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> I am worried that we would not be able to achieve
> >>>>>>>>>>>>>>>>>>>>> those
> >>>>>>>>>>>>>> frequent
> >>>>>>>>>>>>>>>>>>> releases
> >>>>>>>>>>>>>>>>>>>>> of connectors if we are putting these connectors
> >>>>>>>>>>>>>>>>>>>>> under
> >>>>>>>>>>>> the
> >>>>>>>>>>>>>>> Apache
> >>>>>>>>>>>>>>>>>>>> umbrella,
> >>>>>>>>>>>>>>>>>>>>> because that means that for each connector release
> >>>>>>>>>>>>>>>>>>>>> we
> >>>>>>>>>>>> have
> >>>>>>>>>>>>> to
> >>>>>>>>>>>>>>>> follow
> >>>>>>>>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>>>>>> Apache release creation process. This requires a
> >> lot
> >>>>>>>>>>>>>>>>>>>>> of
> >>>>>>>>>>>>> manual
> >>>>>>>>>>>>>>>> steps
> >>>>>>>>>>>>>>>>>>> and
> >>>>>>>>>>>>>>>>>>>>> prohibits automation and I think it would be hard
> >> to
> >>>>>>>>>>>> scale
> >>>>>>>>>>>>> out
> >>>>>>>>>>>>>>>>>>> frequent
> >>>>>>>>>>>>>>>>>>>>> releases of connectors. I'm curious how others
> >> think
> >>>>>>>>>>>>>>>>>>>>> this
> >>>>>>>>>>>>>>>> challenge
> >>>>>>>>>>>>>>>>>>> could
> >>>>>>>>>>>>>>>>>>>>> be solved.
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> Best regards,
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> Martijn
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> On Mon, 18 Oct 2021 at 22:22, Thomas Weise <
> >>>>>>>>>>>> t...@apache.org>
> >>>>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>>>>>> Thanks for initiating this discussion.
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> There are definitely a few things that are not
> >>>>>>>>>>>>>>>>>>>>>> optimal
> >>>>>>>>>>>> with
> >>>>>>>>>>>>>> our
> >>>>>>>>>>>>>>>>>>>>>> current management of connectors. I would not
> >>>>>>>>>>>> necessarily
> >>>>>>>>>>>>>>>>>>> characterize
> >>>>>>>>>>>>>>>>>>>>>> it as a "mess" though. As the points raised so far
> >>>>>>>>>>>> show, it
> >>>>>>>>>>>>>>> isn't
> >>>>>>>>>>>>>>>>>>> easy
> >>>>>>>>>>>>>>>>>>>>>> to find a solution that balances competing
> >>>>>>>>>>>>>>>>>>>>>> requirements
> >>>>>>>>>>>> and
> >>>>>>>>>>>>>>>> leads to
> >>>>>>>>>>>>>>>>>>> a
> >>>>>>>>>>>>>>>>>>>>>> net improvement.
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> It would be great if we can find a setup that
> >>>>>>>>>>>>>>>>>>>>>> allows for
> >>>>>>>>>>>>>>>> connectors
> >>>>>>>>>>>>>>>>>>> to
> >>>>>>>>>>>>>>>>>>>>>> be released independently of core Flink and that
> >>>>>>>>>>>>>>>>>>>>>> each
> >>>>>>>>>>>>>> connector
> >>>>>>>>>>>>>>>> can
> >>>>>>>>>>>>>>>>>>> be
> >>>>>>>>>>>>>>>>>>>>>> released separately. Flink already has separate
> >>>>>>>>>>>>>>>>>>>>> releases (flink-shaded), so that by itself isn't a
> >>>>>>>>>> new thing.
> >>>>>>>>>>>>>>>> Per-connector
> >>>>>>>>>>>>>>>>>>>>>> releases would need to allow for more frequent
> >>>>>>>>>>>>>>>>>>>>>> releases
> >>>>>>>>>>>>>>> (without
> >>>>>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>>>>>>> baggage that a full Flink release comes with).
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> Separate releases would only make sense if the core
> >>>>>>>>>>>> Flink
> >>>>>>>>>>>>>>>> surface is
> >>>>>>>>>>>>>>>>>>>>>> fairly stable though. As evident from Iceberg (and
> >>>>>>>>>>>>>>>>>>>>>> also
> >>>>>>>>>>>>>> Beam),
> >>>>>>>>>>>>>>>> that's
> >>>>>>>>>>>>>>>>>>>>>> not the case currently. We should probably focus
> >> on
> >>>>>>>>>>>>>> addressing
> >>>>>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>>>>>>> stability first, before splitting code. A success
> >>>>>>>>>>>> criteria
> >>>>>>>>>>>>>>> could
> >>>>>>>>>>>>>>>> be
> >>>>>>>>>>>>>>>>>>>>>> that we are able to build Iceberg and Beam against
> >>>>>>>>>>>> multiple
> >>>>>>>>>>>>>>> Flink
> >>>>>>>>>>>>>>>>>>>>>> versions w/o the need to change code. The goal
> >>>>>>>>>>>>>>>>>>>>>> would be
> >>>>>>>>>>>>> that
> >>>>>>>>>>>>>> no
> >>>>>>>>>>>>>>>>>>>>>> connector breaks when we make changes to Flink
> >> core.
> >>>>>>>>>>>> Until
> >>>>>>>>>>>>>>>> that's the
> >>>>>>>>>>>>>>>>>>>>>> case, code separation creates a setup where 1+1 or
> >>>>>>>>>>>>>>>>>>>>>> N+1
> >>>>>>>>>>>>>>>> repositories
> >>>>>>>>>>>>>>>>>>>>>> need to move lock step.
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> Regarding some connectors being more important for
> >>>>>>>>>>>>>>>>>>>>>> Flink
> >>>>>>>>>>>>> than
> >>>>>>>>>>>>>>>> others:
> >>>>>>>>>>>>>>>>>>>>> That's a fact. Flink w/o Kafka connector (and few
> >>>>>>>>>>>> others)
> >>>>>>>>>>>>>> isn't
> >>>>>>>>>>>>>>>>>>>>>> viable. Testability of Flink was already brought
> >>>>>>>>>>>>>>>>>>>>>> up,
> >>>>>>>>>>>> can we
> >>>>>>>>>>>>>>>> really
> >>>>>>>>>>>>>>>>>>>>>> certify a Flink core release without Kafka
> >>>>>>>>> connector?
> >>>>>>>>>>>> Maybe
> >>>>>>>>>>>>>>> those
> >>>>>>>>>>>>>>>>>>>>>> connectors that are used in Flink e2e tests to
> >>>>>>>>>>>>>>>>>>>>>> validate
> >>>>>>>>>>>>>>>> functionality
> >>>>>>>>>>>>>>>>>>>>>> of core Flink should not be broken out?
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> Finally, I think that the connectors that move
> >> into
> >>>>>>>>>>>>> separate
> >>>>>>>>>>>>>>>> repos
> >>>>>>>>>>>>>>>>>>>>>> should remain part of the Apache Flink project.
> >>>>>>>>>>>>>>>>>>>>>> Larger
> >>>>>>>>>>>>>>>> organizations
> >>>>>>>>>>>>>>>>>>>>>> tend to approve the use of and contribution to
> >> open
> >>>>>>>>>>>> source
> >>>>>>>>>>>>> at
> >>>>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>>>>>>> project level. Sometimes it is everything ASF.
> >> More
> >>>>>>>>>>>> often
> >>>>>>>>>>>>> it
> >>>>>>>>>>>>>> is
> >>>>>>>>>>>>>>>>>>>>>> "Apache Foo". It would be fatal to end up with a
> >>>>>>>>>>>> patchwork
> >>>>>>>>>>>>> of
> >>>>>>>>>>>>>>>>>>> projects
> >>>>>>>>>>>>>>>>>>>>>> with potentially different licenses and governance
> >>>>>>>>>>>>>>>>>>>>>> to
> >>>>>>>>>>>>> arrive
> >>>>>>>>>>>>>>> at a
> >>>>>>>>>>>>>>>>>>>>>> working Flink setup. This may mean we prioritize
> >>>>>>>>>>>> usability
> >>>>>>>>>>>>>> over
> >>>>>>>>>>>>>>>>>>>>>> developer convenience, if that's in the best
> >>>>>>>>>>>>>>>>>>>>>> interest of
> >>>>>>>>>>>>>> Flink
> >>>>>>>>>>>>>>>> as a
> >>>>>>>>>>>>>>>>>>>>>> whole.
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> Thanks,
> >>>>>>>>>>>>>>>>>>>>>> Thomas
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> On Mon, Oct 18, 2021 at 6:59 AM Chesnay Schepler <
> >>>>>>>>>>>>>>>> ches...@apache.org
> >>>>>>>>>>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>>>>>>> Generally, the issues are reproducibility and
> >>>>>>>>>> control.
> >>>>>>>>>>>>>>>>>>>>>>> Stuffs completely broken on the Flink side for a
> >>>>>>>>>> week?
> >>>>>>>>>>>>> Well
> >>>>>>>>>>>>>>>> then so
> >>>>>>>>>>>>>>>>>>> are
> >>>>>>>>>>>>>>>>>>>>>>> the connector repos.
> >>>>>>>>>>>>>>>>>>>>>>> (As-is) You can't go back to a previous version
> >> of
> >>>>>>>>>>>>>>>>>>>>>>> the
> >>>>>>>>>>>>>>> snapshot.
> >>>>>>>>>>>>>>>>>>> Which
> >>>>>>>>>>>>>>>>>>>>>>> also means that checking out older commits can be
> >>>>>>>>>>>>>> problematic
> >>>>>>>>>>>>>>>>>>> because
> >>>>>>>>>>>>>>>>>>>>>>> you'd still work against the latest snapshots,
> >> and
> >>>>>>>>>>>>>>>>>>>>>>> they
> >>>>>>>>>>>>> not
> >>>>>>>>>>>>>> be
> >>>>>>>>>>>>>>>>>>>>>>> compatible with each other.
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>> On 18/10/2021 15:22, Arvid Heise wrote:
> >>>>>>>>>>>>>>>>>>>>>>>> I was actually betting on snapshots versions.
> >>>>>>>>>>>>>>>>>>>>>>>> What are
> >>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>> limits?
> >>>>>>>>>>>>>>>>>>>>>>>> Obviously, we can only do a release of a 1.15
> >>>>>>>>>>>> connector
> >>>>>>>>>>>>>> after
> >>>>>>>>>>>>>>>> 1.15
> >>>>>>>>>>>>>>>>>>> is
> >>>>>>>>>>>>>>>>>>>>>>>> release.
> >>>>>>>>>>>>>>>>>> --
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> Konstantin Knauf
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >> https://urldefense.com/v3/__https://twitter.com/snntrable
> >> __;!!LpKI!2a1uSGfMmwc8HNwqBUIGtFPzLHP5m9yS0sC3n3IpLgdke_-
> >>>>>>>>>>>>>>>>>> XjpYgX5MUy9M4$ [twitter[.]com]
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >> https://urldefense.com/v3/__https://github.com/knaufk__;!
> >> !LpKI!2a1uSGfMmwc8HNwqBUIGtFPzLHP5m9yS0sC3n3IpLgdke_-XjpY
> >>>>>>>>>>>>>>>>>> gXyX8u50S$ [github[.]com]
> >>>>>>>>>>>>>>>>>>
> >>>>>>>
>
>

Reply via email to