I haven't closely followed the discussion so far, but isn't it Apache policy that major versions should stay backwards compatible to all previous releases with the same major version?
-s 2017-06-28 12:26 GMT+02:00 Kostas Kloudas <k.klou...@data-artisans.com>: > I agree that 1.1 compatibility is the most important “pain point", as > compatibility with the rest of the versions follows a more “systematic” > approach. > > I think that discarding compatibility with 1.1 will clear some parts > of the codebase significantly. > > Kostas > > > On Jun 27, 2017, at 6:03 PM, Stephan Ewen <se...@apache.org> wrote: > > > > I think that this discussion is probably motivated especially by the > > "legacy state" handling of Flink 1.1. > > The biggest gain in codebase and productivity would be won only by > dropping > > 1.1 compatibility in Flink 1.4. > > > > My gut feeling is that this is reasonable. We support two versions back, > > which means that users can skip one upgrade, but not two. > > > > From what I can tell, users are usually eager to upgrade. They don't do > it > > immediately, but as soon as the new release is a bit battle tested. > > > > I would expect skipping two entire versions to be rare enough to be okay > > with a solution which is a bit more effort for the user: > > You can upgrade from Flink 1.1. to 1.4 by loading the 1.1 savepoint into > > Flink 1.2, take a savepoint (1.2 format), and resume that in Flink 1.4. > > > > Greetings, > > Stephan > > > > > > On Tue, Jun 27, 2017 at 12:01 PM, Stefan Richter < > > s.rich...@data-artisans.com> wrote: > > > >> For many parts of the code, I would agree with Aljoscha. However, I can > >> also see notable exceptions, such as maintaining support for the legacy > >> state from Flink <=1.1. For example, I think dropping support for this > can > >> simplify new developments such as fast local recovery or state > replication > >> quiet a bit because this is a special case that runs through a lot of > code > >> from backend to JM. So besides this general discussion about a backwards > >> compatible policy, do you think it could make sense to start another > >> concrete discussion about if we still must or want backwards > compatibility > >> to Flink 1.1 in Flink 1.4? > >> > >>> Am 29.05.2017 um 12:08 schrieb Aljoscha Krettek <aljos...@apache.org>: > >>> > >>> Normally, I’m the first one to suggest removing everything that is not > >> absolutely necessary in order to have a clean code base. On this issue, > >> though, I think we should support restoring from old Savepoints as far > back > >> as possible if it does not make the code completely unmaintainable. Some > >> users might jump versions and always forcing them to go though every > >> version from their old version to the current version doesn’t seem > feasible > >> and might put off some users. > >>> > >>> So far, I think the burden of supporting restore from 1.1 is still > small > >> enough and with each new version the changes between versions become > less > >> and less. The changes from 1.2 to the upcoming 1.3 are quite minimal, I > >> think. > >>> > >>> Best, > >>> Aljoscha > >>>> On 24. May 2017, at 17:58, Ted Yu <yuzhih...@gmail.com> wrote: > >>>> > >>>> bq. about having LTS versions once a year > >>>> > >>>> +1 to the above. > >>>> > >>>> There may be various reasons users don't want to upgrade (after new > >>>> releases come out). We should give such users enough flexibility on > the > >>>> upgrade path. > >>>> > >>>> Cheers > >>>> > >>>> On Wed, May 24, 2017 at 8:39 AM, Kostas Kloudas < > >> k.klou...@data-artisans.com > >>>>> wrote: > >>>> > >>>>> Hi all, > >>>>> > >>>>> For the proposal of having a third party tool, I agree with Ted. > >>>>> Maintaining > >>>>> it is a big and far from trivial effort. > >>>>> > >>>>> Now for the window of backwards compatibility, I would argue that > even > >> if > >>>>> for some users 4 months (1 release) is not enough to bump their Flink > >>>>> version, > >>>>> the proposed policy guarantees that there will always be a path from > >> any > >>>>> old > >>>>> version to any subsequent one. > >>>>> > >>>>> Finally, for the proposal about having LTS versions once a year, I am > >> not > >>>>> sure if this will reduce or create more overhead. If I understand the > >> plan > >>>>> correctly, this would mean that the community will have to maintain > >>>>> 2 or 3 LTS versions and the last two major ones, right? > >>>>> > >>>>>> On May 22, 2017, at 7:31 PM, Ted Yu <yuzhih...@gmail.com> wrote: > >>>>>> > >>>>>> For #2, it is difficult to achieve: > >>>>>> > >>>>>> a. maintaining savepoint migration is non-trivial and should be > >> reviewed > >>>>> by > >>>>>> domain experts > >>>>>> b. how to certify such third-party tool > >>>>>> > >>>>>> Cheers > >>>>>> > >>>>>> On Mon, May 22, 2017 at 3:04 AM, 施晓罡 <shixiaoga...@gmail.com> > wrote: > >>>>>> > >>>>>>> Hi all, > >>>>>>> > >>>>>>> Currently, we work a lot in the maintenance of compatibility. > >>>>>>> There exist much code in runtime to support the migration of > >> savepoints > >>>>>>> (most of which are deprecated), making it hard to focus on the > >> current > >>>>>>> implementation. > >>>>>>> When more versions are released, much more efforts will be needed > if > >> we > >>>>>>> try to make these released versions compatible. > >>>>>>> > >>>>>>> I agree with Tzu-Li that we should provide a method to let users > >> upgrade > >>>>>>> Flink in a reasonable pace. > >>>>>>> But i am against the proposal that we only offer backwards > >> compatibility > >>>>>>> for one previous version. > >>>>>>> According our time-based release model, a major version is released > >>>>> every > >>>>>>> four month. > >>>>>>> That means, users have to upgrade their versions every 8 months. > >>>>> Otherwise > >>>>>>> they will have difficulties in the migration of existing > savepoints. > >>>>>>> > >>>>>>> My suggestions include > >>>>>>> > >>>>>>> (1) We can release Long-Term Support (LTS) versions which are > widely > >>>>>>> adopted in other open-source projects. > >>>>>>> LTS versions should be stable and are free of found bugs. > Savepoints > >> in > >>>>>>> LTS versions are guaranteed to be back-compatible so that users can > >>>>> easily > >>>>>>> upgrade to newer LTS versions. > >>>>>>> > >>>>>>> The releasing of LTS versions is slower than that of major versions > >>>>> (maybe > >>>>>>> once a year, determined by users’ upgrade frequency). > >>>>>>> Each LTS version will be supported a period of time and typically > >> there > >>>>>>> are no more than three active LTS versions. > >>>>>>> By encouraging users to use LTS versions, we can ease the > >> maintenance of > >>>>>>> released versions (bug fixes, back compatibility, and critical > >>>>> performance > >>>>>>> improvement). > >>>>>>> > >>>>>>> (2) We can provide a third-party tool to do the migration of > >>>>> old-versioned > >>>>>>> savepoints. > >>>>>>> When users upgrade their versions, they can use the provided tool > to > >>>>>>> migrate existing savepoints. > >>>>>>> This can help move the code for savepoint migration out of the > actual > >>>>>>> codebase, making code focuses on current implementation. > >>>>>>> > >>>>>>> What do you think? > >>>>>>> > >>>>>>> Regards, > >>>>>>> Xiaogang > >>>>>>> > >>>>>>> > >>>>>>>> 在 2017年5月22日,下午1:39,Tzu-Li (Gordon) Tai <tzuli...@apache.org> 写道: > >>>>>>>> > >>>>>>>> Hi Kostas, > >>>>>>>> > >>>>>>>> Thanks for bringing this up! > >>>>>>>> I think it is reasonable to keep this coherent with our > timely-based > >>>>>>> release model guarantees. > >>>>>>>> > >>>>>>>> With the timely-based release model, there is a guarantee that the > >>>>>>> current latest major version and the previous one is supported. > >>>>>>>> For example, upon releasing 1.3, only 1.3 and 1.2 will still be > >>>>>>> supported by the community for any required bug fixes. > >>>>>>>> I think this was initially decided not only to ease old version > >>>>>>> maintenance efforts for the community, but also as a means to let > >> users > >>>>>>> upgrade their Flink versions in a reasonable pace (at least every > >> other > >>>>>>> major release.) > >>>>>>>> > >>>>>>>> Therefore, I think its also reasonable to also clearly state that > >>>>>>> savepoints compatibility will only be guaranteed for the previous > >>>>> release. > >>>>>>>> Although I think at the moment almost, if not all, of the current > >> code > >>>>>>> still maintains compatibility for 1.1, in the long run these > >> migration > >>>>>>> codes would definitely start to pile up and pollute the actual > >> codebase > >>>>> if > >>>>>>> we try to always be compatible with all previous versions. > >>>>>>>> > >>>>>>>> Cheers, > >>>>>>>> Gordon > >>>>>>>> > >>>>>>>> > >>>>>>>> On 21 May 2017 at 2:24:53 AM, Kostas Kloudas ( > >>>>>>> k.klou...@data-artisans.com) wrote: > >>>>>>>> > >>>>>>>> Hi Chesnay, > >>>>>>>> > >>>>>>>> I believe that for APIs we already have a pretty clear policy with > >> the > >>>>>>> annotations. > >>>>>>>> I was referring to savepoints and state related backwards > >>>>> compatibility. > >>>>>>>> > >>>>>>>> > >>>>>>>>> On May 20, 2017, at 7:20 PM, Chesnay Schepler < > ches...@apache.org> > >>>>>>> wrote: > >>>>>>>>> > >>>>>>>>> I think it would be a good to clarify what kind of > >>>>>>> backwards-compatibilitiy we're talking about here. As in are we > >> talking > >>>>>>> about APIs or savepoints? > >>>>>>>>> > >>>>>>>>> On 20.05.2017 19:09, Kostas Kloudas wrote: > >>>>>>>>>> Hi all, > >>>>>>>>>> > >>>>>>>>>> As we are getting closer to releasing Flink-1.3, I would like to > >> open > >>>>>>> a discussion > >>>>>>>>>> on how far back we provide backwards compatibility for. > >>>>>>>>>> > >>>>>>>>>> The reason for opening the discussion is that i) for the users > and > >>>>> for > >>>>>>> the > >>>>>>>>>> adoption of the project, it is good to have an explicitely > stated > >>>>>>> policy that implies > >>>>>>>>>> certain guarantees, and ii) keeping code and tests for backwards > >>>>>>> compatibility with > >>>>>>>>>> Flink-1.1 does not offer much. On the contrary, I think that it > >> leads > >>>>>>> to: > >>>>>>>>>> > >>>>>>>>>> 1) dead or ugly code in the codebase, e.g. deprecated class > fields > >>>>>>> that could go away and > >>>>>>>>>> ugly if() loops (see aligned window operators that were > >> deprecated in > >>>>>>> 1.2 and are now > >>>>>>>>>> normal windows), etc > >>>>>>>>>> 2) expensive tests (as, normally, they read from a savepoint) > >>>>>>>>>> 3) binary files in the codebase for holding the aforementioned > >>>>>>> savepoints > >>>>>>>>>> > >>>>>>>>>> My proposal for such a policy would be to offer backwards > >>>>>>> compatibility for one previous version. > >>>>>>>>>> > >>>>>>>>>> This means that 1.3 will be compatible with 1.2 (not 1.1). This > >> still > >>>>>>> allows a clear > >>>>>>>>>> "backwards compatibility" path when jumping versions (a user > that > >>>>> goes > >>>>>>>>>> from 1.1 to 1.3 can go initially 1.1 -> 1.2, take a savepoint, > and > >>>>>>> then 1.2 -> 1.3), > >>>>>>>>>> while also allowing us to clean up the codebase a bit. > >>>>>>>>>> > >>>>>>>>>> What do you think? > >>>>>>>>>> > >>>>>>>>>> Kostas > >>>>>>>>> > >>>>>>>>> > >>>>>>>> > >>>>>>> > >>>>>>> > >>>>> > >>>>> > >>> > >> > >> > >