Thanks all for the feedback. @David
> 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. My colleagues developed a Maven plugin [1] that performs static checks. Something like this might work, however it requires users to actually use it, and keep it up to date. We could provide a Flink Maven bom or similar that manages the dependencies on their behalf. @Xington > 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. While this is convenient, this coupling is something we were trying to avoid. With this approach we cannot make breaking changes without waiting for a Flink major release. @Sergey > 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. It depends how they get green. If we change the connector code to get it green, this implies the last connector version does not support the new Flink version and we require a connector release. This is good information to have, but still results in a connector release. @Muhammet > I have mixed opinion with dropping the Flink version. Usually, large production migrations happen on Flink versions and users want also naturally update the connectors compatible for that Flink version. I agree it is less convenient to have arbitrary versions, however the version coupling does not scale well for the community. We already follow the version decoupling strategy for other Flink projects, such as Statefun, Flink ML and the Flink Kubernetes Operator [2]. @Ahmed > 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, 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. I would not change our current process. Create a Jira task to update each connector, do the work, and then this is included as part of the next connector release. I am not sure how this is impacted by decoupling versions or monorepo discussions. @Chesnay > We technically can't do this because we don't provide binary compatibility across minor versions. We can still perform the same compatibility checks we do today until we achieve full backwards compatibility. Currently we perform these checks and then do a heavyweight version release. The new process would be gated by the compatibility matrix update. Therefore we can still perform the same compatibility checks, however when the checks pass, the process of updating the compatibility matrix is much lighter than a release. Once we achieve full binary compatibility this will increase our confidence and allow an even more streamlined process. For example, the compatibility matrix might say "supports 1.19+", rather than "supports 1.19". > That's the entire reason we did this coupling in the first place, and imo /we/ shouldn't take a shortcut but still have our users face that very problem. I would think of this as an incremental improvement rather than a shortcut. I agree the user experience is not as nice having to look at a compatibility matrix vs encoded in the version. However, more timely connector support outweighs this in my opinion. By gating the compatibility matrix update by our compatibility checks we can provide the same level of compatibility guarantees we do today. > We knew this was gonna by annoying for us; that was intentional and meant to finally push us towards binary compatibility /guarantees/. The lag between core and Flink releases is the biggest problem at the moment. However, it is annoying, yes it is. @Thomas > Would it be possible to verify that by running e2e tests of connector binaries built against an earlier Flink minor version against the latest Flink minor release candidate as part of the release? We already build all connectors against the next Flink snapshot in the nightly/weekly builds. So we can/do get early sight of breaking changes/incompatibilities. Thanks, Danny [1] https://github.com/awslabs/static-checker-flink [2] https://flink.apache.org/downloads/ On Tue, Jun 11, 2024 at 8:12 PM Thomas Weise <t...@apache.org> wrote: > Thanks for bringing this discussion back. > > When we decided to decouple the connectors, we already discussed that we > will only realize the full benefit when the connectors actually become > independent from the Flink minor releases. Until that happens we have a ton > of extra work but limited gain. Based on the assumption that getting to the > binary compatibility guarantee is our goal - not just for the connectors > managed within the Flink project but for the ecosystem as a whole - I don't > see the benefit of mono repo or similar approach that targets the symptom > rather than the cause. > > In the final picture we would only need connector releases if/when a > specific connector changes and the repository per connector layout would > work well. > > I also agree with Danny that we may not have to wait for Flink 2.0 for > that. How close are we to assume compatibility of the API surface that > affects connectors? It appears that practically there have been little to > no known issues in the last couple of releases? Would it be possible to > verify that by running e2e tests of connector binaries built against an > earlier Flink minor version against the latest Flink minor release > candidate as part of the release? > > Thanks, > Thomas > > > On Tue, Jun 11, 2024 at 11:05 AM Chesnay Schepler <ches...@apache.org> > wrote: > > > On 10/06/2024 18:25, Danny Cranmer wrote: > > > This would > > > mean we would usually not need to release a new connector version per > > Flink > > > version, assuming there are no breaking changes. > > We technically can't do this because we don't provide binary > > compatibility across minor versions. > > That's the entire reason we did this coupling in the first place, and > > imo /we/ shouldn't take a shortcut but still have our users face that > > very problem. > > We knew this was gonna by annoying for us; that was intentional and > > meant to finally push us towards binary compatibility /guarantees/. >