+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