Hi to all, I'd like to point out that also official downstream-projects as CDC connector's documentation should be updated to reflect compatibility with new Flink releases[1]. The aforementioned link for example doesn't say nothing about which version is compatible with Flink 1.14
[1] https://ververica.github.io/flink-cdc-connectors/master/content/about.html#deserialization Best, Flavio On Mon, Nov 15, 2021 at 8:16 PM Thomas Weise <t...@apache.org> wrote: > Nice to see this discussion! > > If we make Flink upgrades easy, why would users not want to upgrade? I > think most hesitation today stems from the fact that X.Y.0 releases > tend to break downstream in one way or the other due to unexpected > upstream changes. If so, it would be nice if we could address that > problem. For sure, if there was a choice between expending finite > resources on supporting more releases vs. reducing compatibility > issues in the next release, I would vote for the latter. > > There is another reason why some users are stuck on old releases that > cannot be solved by the community: Heavily customized forks of Flink > are hard to maintain and naturally defer upgrade as much as possible. > I believe the solution to that is in user land (and not a community > burden): contribute changes back to Flink, participate in the > community to ensure robust extension hooks are provided etc. > > Cheers, > Thomas > > On Mon, Nov 15, 2021 at 3:03 AM Till Rohrmann <trohrm...@apache.org> > wrote: > > > > Hi everyone, > > > > I want to second Stephan's points. I think that supporting LTS versions > > rather fights symptoms than addressing the underlying problem that are > > incompatible/behaviour changing changes between versions. I believe if we > > can address this problem, then our Flink users will probably upgrade more > > frequently. > > > > Making upgrades as smooth as possible won't probably help all our users > but > > we as a community also have to think about the costs of maintaining more > > Flink versions/supporting certain versions for a longer period of time. > One > > thing is that we would need more complex processes that ensure that older > > Flink versions/LTS receives all the required bug fixes. I think this is > > already hard enough when only supporting the last two releases. Moreover, > > according to my experience, backporting fixes is usually not a problem if > > there are no merge conflicts. However, the older the Flink code is, the > > more likely it is that there are merge conflicts. In the worst case, > issues > > need to be fixed in a completely different way than they are solved in > > master. > > > > Additionally, we have to consider that longer support periods will mean > > that we need to maintain our CI infrastructure and tooling the same > period > > as well. To give you an example, we probably would still have to operate > > Travis if we had a LTS version. Given our existing problems with CI this > > would add a lot more problems to this heap. Moreover, supporting more > > versions would add more load to our CI infrastructure. > > > > All in all, I would expect that longer support periods would slow us down > > with other things. One of these things could be to make upgrades as > smooth > > as possible so that more Flink users upgrade more frequently. > > > > @Tison: Concerning the problem that an older version contains a bug fix > > that is not contained yet in the latest release of a newer version, I > think > > this is a valid problem. Right now, our users will have to check via JIRA > > whether their problems are solved in the latest version of the new > release > > (e.g. when upgrading from 1.13.y to 1.14.x). Faster and more frequent > > releases could mitigate the problem. Faster and lower overhead releases > > could also allow us to release all versions in sync. > > > > Cheers, > > Till > > > > On Sat, Nov 13, 2021 at 1:40 AM tison <wander4...@gmail.com> wrote: > > > > > Hi Stephan, > > > > > > Thanks for your email! I agree your points about compatibility and the > > > upgrade experience should be smooth. > > > > > > The problem raised by Pitor is that, even if we officially support two > > > latest versions, many users stay in an early version end-of-support. > > > So the downside "no one ends up using the other versions" doesn't > > > stand. I see that a number of companies like to test the latest version > > > but not apply on prod if it's not robust - 1.9 & 1.10 is less used. > > > > > > If a non-LTS version resolves users' (urgent) issues and the release > itself > > > is robust, they will upgrade to that version. We have tried to support > > > Java 9 and so do other projects. > > > > > > I'm a fan to keep two latest supported versions and am willing to work > on > > > improving compatibility to help users migrate. But if I make a choice > > > between > > > 4 supported versions and the LTS option, I like the LTS option. > > > > > > Here are several issues I met when trying to support a series of > versions: > > > > > > 1. cheery-pick overhead grows, obviously. > > > 2. cheery-pick owner is unclear. I think committers play the role of > > > "reveal > > > all the details", and it makes (1) worse. > > > 3. version policy is harder. Generally a user wants to upgrade from > > > 1.14.3 (latest 1.14.x) to 1.15.2 (latest 1.15.x) without regression. > > > Given 1 & 2 the cherry-pick won't always get merged in time and > > > it's possible that when 1.14.3 released, 1.15.2 is preparing. We have > > > to do some simultaneous releases among 4 versions. And because there > > > are 4 versions, such simultaneous releases will be more required. > > > > > > If a company wants to maintain an early version, it's welcome and can > > > release > > > all in its own - just like those who maintains Java 1.6. It's fine but > not > > > under > > > committers/PMC maintenance. > > > > > > Additional input, 1.5, 1.7. 1.8, 1.11, 1.13 are loved. > > > > > > Best, > > > tison. > > > > > > > > > Stephan Ewen <ewenstep...@gmail.com> 于2021年11月13日周六 上午2:35写道: > > > > > > > I am of a bit different opinion here, I don't think LTS is the best > way > > > to > > > > go. > > > > > > > > To my understanding, the big issue faced by users is that an upgrade > is > > > > simply too hard. Too many things change in subtle ways, you cannot > just > > > > take the previous application and configuration and expect it to run > the > > > > same after the upgrade. If that was much easier, users would be able > to > > > > upgrade more easily and more frequently (maybe not every month, but > every > > > > six months or so). > > > > > > > > In contrast, LTS is more about how long one provides patches and > > > releases. > > > > The upgrade problem is the same, between LTS versions, upgrades > should > > > > still be smooth. To make LTS to LTS smooth, we need to solve the same > > > issue > > > > as making it smooth from individual version to individual version. > Unless > > > > we expect non-linear upgrade paths with migration tools, which I am > not > > > > convinced we should do. It seems to be the opposite of where the > industry > > > > is moving (upgrade fast and frequently by updating images). > > > > > > > > The big downside of LTS versions is that almost no one ends up using > the > > > > other versions, so we get little feedback on features. We will end up > > > > having a feature in Flink for three releases and still barely anyone > will > > > > have used it, so we will lack the confidence to turn it on by > default. > > > > I also see the risk that the community ends up taking compatibility > with > > > > non-LTS releases not as serious, because "it is anyways not an LTS > > > > version". > > > > > > > > > > > > We could look at making the upgrades smoother, by starting to > observe > > > the > > > > issues listed here. > > > > I think we need to do that anyways, because that is what I hear users > > > > bringing up more and more. If after that we still feel like there > is a > > > > problem, then let's revisit this issue. > > > > - API compatibility (signatures and behavior) > > > > - Make it possible to pin SQL semantics of a query across releases > > > > (FLIP-190 works on this) > > > > - Must be possible to use same configs as before in a new Flink > version > > > > and keep the same behavior that way > > > > - REST API must be stable (signature and semantics) > > > > - Make it possible to mix different client/cluster versions (stable > > > > serializations for JobGraph, etc.) > > > > > > > > The issue that we define officially two supported versions, but many > > > > committers like to backport things for one more version is something > we > > > can > > > > certainly look at, to bring some consistency in there. > > > > > > > > Best, > > > > Stephan > > > > > > > > > > > > On Fri, Nov 12, 2021 at 9:17 AM Martijn Visser < > mart...@ververica.com> > > > > wrote: > > > > > > > > > Thanks for bringing this up for discussion Piotr. One the one hand > I > > > > think > > > > > it's a good idea, because of the reasons you've mentioned. On the > other > > > > > hand, having an LTS version will remove an incentive for some > users to > > > > > upgrade, which will result in fewer Flink users who will test new > > > > features > > > > > because they wait for the next LTS version to upgrade. I can see > that > > > > > particularly happening for large enterprises. Another downside I > can > > > > > imagine is that upgrading from one LTS version to another LTS > version > > > > will > > > > > become more complicated because more changes have been made between > > > those > > > > > versions. > > > > > > > > > > Related to my second remark, would/could introducing an LTS version > > > would > > > > > also trigger a follow-up discussion that we could potentially > introduce > > > > > breaking changes in a next LTS version, like a Flink 2.0 [1] ? > > > > > > > > > > Best regards, > > > > > > > > > > Martijn > > > > > > > > > > [1] https://issues.apache.org/jira/browse/FLINK-3957 > > > > > > > > > > On Fri, 12 Nov 2021 at 08:59, Fabian Paul < > fabianp...@ververica.com> > > > > > wrote: > > > > > > > > > > > Thanks for bringing up this topic Piotr. > > > > > > I also think we should try to decouple our release cycles from > our > > > > > support > > > > > > plans. Currently we are very limited by the approach because > faster > > > > > release > > > > > > cycles result in also faster deprecation of versions. > > > > > > > > > > > > > > > > > > Therefore I am also favoring version 2 where we can align the > next > > > LTS > > > > > > version > > > > > > with our development speed. Option 1 I think can easily lead to > > > > confusion > > > > > > when > > > > > > the number of supported releases constantly changes. > > > > > > > > > > > > Best, > > > > > > Fabian > > > > > > > > > > > > > > > > > > > > > > > >