Hi Danny, Thank you for bringing this up. I agree with points made by Ahmed, the split into different repositories for connectors/connector groups adds flexibility to evolve connectors without affecting other connectors.
I am also in favor of dropping the Flink version component, although this will require maintaining a compatibility matrix. As pointed out by Sergey, nightly/weekly CI builds in connector repos already indicate compatibility issues in unreleased (SNAPSHOT) versions, e.g. [1]. 1 - https://issues.apache.org/jira/browse/FLINK-34260 Thanks, Aleksandr On Tue, 11 Jun 2024 at 13:54, Ahmed Hamdy <hamdy10...@gmail.com> wrote: > Hi Danny, > Thanks for bringing this up, I might haven't driven a connector release > myself but I echo the pain and delay in releases for adding Flink version > support. > I am not really with the mono-repo approach for the following reasons > 1- We will lose the flexibility we currently have for connectors (I mean we > even had a major release 4.X for AWS connectors IIRC). > 2- We will be undoing the gains for CI decoupling, the frequency of > contributions in connectors like kafka and AWS are unmatched for others > like GCP and RabbitMQ, with new connector added and major feature work I > see unnecessary cost and delays for CI due to monorepo. > > I believe the only benefit of this approach (over the other proposed )would > be forcing adopting common connectors changes to all connectors at once > instead of relying on divided efforts to port the change, however for the > reasons mentioned above I still wouldn't vote for this approach. > > I am in favor of dropping the version though, I understand it might be > confusing for users but as Sergey mentioned; many times the changes of a > new Flink version don't introduce compatibility issues to connectors so I > believe I believe it might be an easier task than It sound initially. > > A question would be what do you think the best approach to when we do > introduce backward compatible changes to connectors API like in this PR[1], > in this case existing connectors would still work with the newly released > Flink version but would rather accumulate technical debt and removing it > would be an Adhoc task for maintainers which I believe is an accepted > tradeoff but would love to hear the feedback. > > 1- > > https://github.com/apache/flink/pull/24180/files#diff-2ffade463560e5941912b91b12a07c888313a4cc7e39ca8700398ed6975b8e90 > > Best Regards > Ahmed Hamdy > > > On Tue, 11 Jun 2024 at 08:50, Sergey Nuyanzin <snuyan...@gmail.com> wrote: > > > Thanks for starting this discussion Danny > > > > I will put my 5 cents here > > > > From one side yes, support of new Flink release takes time as it was > > mentioned above > > However from another side most of the connectors (main/master branches) > > supported Flink 1.19 > > even before it was released, same for 1.20 since they were testing > against > > master and supported version branches. > > There are already nightly/weekly jobs (depending on connector) > > running against the latest Flink SNAPSHOTs. And it has already helped to > > catch some blocker issues like[1], [2]. > > In fact there are more, I need to spend time retrieving all of them. > > > > I would also not vote for connector mono-repo release since we recently > > just splitted it. > > > > The thing I would suggest: > > since we already have nightly/weekly jobs for connectors testing against > > Flink main repo master branch > > we could add a requirement before the release of Flink itself having > these > > job results also green. > > > > [1] https://issues.apache.org/jira/browse/FLINK-34941 > > [2] https://issues.apache.org/jira/browse/FLINK-32978#comment-17804459 > > > > On Tue, Jun 11, 2024 at 8:24 AM Xintong Song <tonysong...@gmail.com> > > wrote: > > > > > Thanks for bringing this up, Danny. This is indeed an important issue > > that > > > the community needs to improve on. > > > > > > Personally, I think a mono-repo might not be a bad idea, if we apply > > > different rules for the connector releases. To be specific: > > > - flink-connectors 1.19.x contains all connectors that are compatible > > with > > > Flink 1.19.x. > > > - allow not only bug-fixes, but also new features for a third-digit > > release > > > (e.g., flink-connectors 1.19.1) > > > > > > This would allow us to immediately release flink-connectors 1.19.0 > right > > > after flink 1.19.0 is out, excluding connectors that are no longer > > > compatible with flink 1.19. Then we can have a couple of > flink-connectors > > > 1.19.x releases, gradually adding the missing connectors back. In the > > worst > > > case, this would result in as many releases as having separated > connector > > > repose. The benefit comes from 1) there are chances to combine > releasing > > of > > > multiple connectors into one release of the mono repo (if they are > ready > > > around the same time), and 2) no need to maintain a compatibility > matrix > > > and worrying about it being out-of-sync with the code base. > > > > > > However, one thing I don't like about this approach is that it requires > > > combining all the repos we just separated from the main-repo to another > > > mono-repo. That back-and-forth is annoying. So I'm just speaking out my > > > ideas, but would not strongly insist on this. > > > > > > And big +1 for compatibility tools and ci checks. > > > > > > Best, > > > > > > Xintong > > > > > > > > > > > > On Tue, Jun 11, 2024 at 2:38 AM David Radley <david_rad...@uk.ibm.com> > > > wrote: > > > > > > > Hi Danny, > > > > I think your proposal is a good one. This is the approach that we > took > > > > with the Egeria project, firstly taking the connectors out of the > main > > > > repo, then connectors having their own versions that incremented > > > > organically rather then tied to the core release. > > > > > > > > Blue sky thinking - I wonder if we could : > > > > - have a wizard / utility so the user inputs which Flink level they > > want > > > > and which connectors; the utility knows the compatibility matrix and > > > > downloads the appropriate bundles. > > > > - have the docs interrogate the core and connector repos to check the > > > poms > > > > for the Flink levels and the pr builds to have ?live? docs showing > the > > > > supported Flink levels. PyTorch does something like this for it?s > docs. > > > > > > > > Kind regards, David. > > > > > > > > > > > > > > > > From: Danny Cranmer <dannycran...@apache.org> > > > > Date: Monday, 10 June 2024 at 17:26 > > > > To: dev <dev@flink.apache.org> > > > > Subject: [EXTERNAL] [DISCUSS] Connector Externalization Retrospective > > > > Hello Flink community, > > > > > > > > It has been over 2 years [1] since we started externalizing the Flink > > > > connectors to dedicated repositories from the main Flink code base. > The > > > > past discussions can be found here [2]. The community decided to > > > > externalize the connectors to primarily 1/ improve stability and > speed > > of > > > > the CI, and 2/ decouple version and release lifecycle to allow the > > > projects > > > > to evolve independently. The outcome of this has resulted in each > > > connector > > > > requiring a dedicated release per Flink minor version, which is a > > burden > > > on > > > > the community. Flink 1.19.0 was released on 2024-03-18 [3], the first > > > > supported connector followed roughly 2.5 months later on 2024-06-06 > [4] > > > > (MongoDB). There are still 5 connectors that do not support Flink > 1.19 > > > [5]. > > > > > > > > Two decisions contribute to the high lag between releases. 1/ > creating > > > one > > > > repository per connector instead of a single flink-connector > mono-repo > > > and > > > > 2/ coupling the Flink version to the connector version [6]. A single > > > > connector repository would reduce the number of connector releases > > from N > > > > to 1, but would couple the connector CI and reduce release > flexibility. > > > > Decoupling the connector versions from Flink would eliminate the need > > to > > > > release each connector for each new Flink minor version, but we would > > > need > > > > a new compatibility mechanism. > > > > > > > > I propose that from each next connector release we drop the coupling > on > > > the > > > > Flink version. For example, instead of 3.4.0-1.20 > (<connector>.<flink>) > > > we > > > > would release 3.4.0 (<connector>). We can model a compatibility > matrix > > > > within the Flink docs to help users pick the correct versions. This > > would > > > > mean we would usually not need to release a new connector version per > > > Flink > > > > version, assuming there are no breaking changes. Worst case, if > > breaking > > > > changes impact all connectors we would still need to release all > > > > connectors. However, for Flink 1.17 and 1.18 there were only a > handful > > of > > > > issues (breaking changes), and mostly impacting tests. We could > decide > > to > > > > align this with Flink 2.0, however I see no compelling reason to do > so. > > > > This was discussed previously [2] as a long term goal once the > > connector > > > > APIs are stable. But I think the current compatibility rules support > > this > > > > change now. > > > > > > > > I would prefer to not create a connector mono-repo. Separate repos > > gives > > > > each connector more flexibility to evolve independently, and removing > > > > unnecessary releases will significantly reduce the release effort. > > > > > > > > I would like to hear opinions and ideas from the community. In > > > particular, > > > > are there any other issues you have observed that we should consider > > > > addressing? > > > > > > > > Thanks, > > > > Danny. > > > > > > > > [1] > > > > > > > > > > > > > > https://github.com/apache/flink-connector-elasticsearch/commit/3ca2e625e3149e8864a4ad478773ab4a82720241 > > > > [2] https://lists.apache.org/thread/8k1xonqt7hn0xldbky1cxfx3fzh6sj7h > > > > [3] > > > > > > > > > > > > > > https://flink.apache.org/2024/03/18/announcing-the-release-of-apache-flink-1.19/ > > > > [4] https://flink.apache.org/downloads/#apache-flink-connectors-1 > > > > [5] https://issues.apache.org/jira/browse/FLINK-35131 > > > > [6] > > > > > > > > > > > > > > https://cwiki.apache.org/confluence/display/FLINK/Externalized+Connector+development#ExternalizedConnectordevelopment-Examples > > > > > > > > Unless otherwise stated above: > > > > > > > > IBM United Kingdom Limited > > > > Registered in England and Wales with number 741598 > > > > Registered office: PO Box 41, North Harbour, Portsmouth, Hants. PO6 > 3AU > > > > > > > > > > > > > -- > > Best regards, > > Sergey > > >