+1 to everything Max said.

Gyula

On Wed, 26 Apr 2023 at 11:42, Maximilian Michels <m...@apache.org> wrote:

> Thanks for starting the discussion, Jark and Xingtong!
>
> Flink 2.0 is long overdue. In the past, the expectations for such a
> release were unreasonably high. I think everybody had a different
> understanding of what exactly the criteria were. This led to releasing
> 18 minor releases for the current major version.
>
> What I'm most excited about for Flink 2.0 is removal of baggage that
> Flink has accumulated over the years:
>
> - Removal of Scala, deprecated interfaces, unmaintained libraries and
> APIs (DataSet)
> - Consolidation of configuration
> - Merging of multiple scheduler implementations
> - Ability to freely combine batch / streaming tasks in the runtime
>
> When I look at
> https://docs.google.com/document/d/1_PMGl5RuDQGlV99_gL3y7OiRsF0DgCk91Coua6hFXhE/edit
> , I'm a bit skeptical we will even be able to reach all these goals. I
> think we have to prioritize and try to establish a deadline. Otherwise
> we will end up never releasing 2.0.
>
> +1 on Flink 2.0 by May 2024 (not a hard deadline but I think having a
> deadline helps).
>
> -Max
>
>
> On Wed, Apr 26, 2023 at 10:08 AM Chesnay Schepler <ches...@apache.org>
> wrote:
> >
> >  > /Instead of defining compatibility guarantees as "this API won't
> > change in all 1.x/2.x series", what if we define it as "this API won't
> > change in the next 2/3 years"./
> >
> > I can see some benefits to this approach (all APIs having a fixed
> > minimum lifetime) but it's just gonna be difficult to communicate.
> > Technically this implies that every minor release may contain breaking
> > changes, which is exactly what users don't want.
> >
> > What problems to do you see in creating major releases every N years?
> >
> >  > /IIUC, the milestone releases are a breakdown of the 2.0 release,
> > while we are free to introduce breaking changes between them. And you
> > suggest using longer-living feature branches to keep the master branch
> > in a releasable state (in terms of milestone releases). Am I
> > understanding it correctly?/
> >
> > I think you got the general idea. There are a lot of details to be
> > ironed out though (e.g., do we release connectors for each
> milestone?...).
> >
> > Conflicts in the long-lived branches are certainly a concern, but I
> > think those will be inevitable. Right now I'm not _too_ worried about
> > them, at least based on my personal wish-list.
> > Maybe the milestones could even help with that, as we could preemptively
> > decide on an order for certain changes that have a high chance of
> > conflicting with each other?
> > I guess we could do that anyway.
> > Maybe we should explicitly evaluate how invasive a change is (in
> > relation to other breaking changes!) and manage things accordingly
> >
> >
> > Other thoughts:
> >
> > We need to figure out what this release means for connectors
> > compatibility-wise. The current rules for which versions a connector
> > must support don't cover major releases at all.
> > (This depends a bit on the scope of 2.0; if we add binary compatibility
> > to Public APIs and promote a few Evolving ones then compatibility across
> > minor releases becomes trivial)
> >
> > What process are you thinking of for deciding what breaking changes to
> > make? The obvious choice would be FLIPs, but I'm worried that this will
> > overload the mailing list / wiki for lots of tiny changes.
> >
> > Provided that we agree on doing 2.0, when would we cut the 2.0 branch?
> > Would we wait a few months for people to prepare/agree on changes so we
> > reduce the time we need to merge things into 2 branches?
> >
> > On 26/04/2023 05:51, Xintong Song wrote:
> > > Thanks all for the positive feedback.
> > >
> > > @Martijn
> > >
> > > If we want to have that roadmap, should we consolidate this into a
> > >> dedicated Confluence page over storing it in a Google doc?
> > >>
> > > Having a dedicated wiki page is definitely a good way for the roadmap
> > > discussion. I haven't created one yet because it's still a proposal to
> have
> > > such roadmap discussion. If the community agrees with our proposal, the
> > > release manager team can decide how they want to drive and track the
> > > roadmap discussion.
> > >
> > > @Chesnay
> > >
> > > We should discuss how regularly we will ship major releases from now
> on.
> > >> Let's avoid again making breaking changes because we "gotta do it now
> > >> because 3.0 isn't happening anytime soon". (e.g., every 2 years or
> > >> something)
> > >
> > > I'm not entirely sure about shipping major releases regularly. But I do
> > > agree that we may want to avoid the situation that "breaking changes
> can
> > > only happen now, or no idea when". Instead of defining compatibility
> > > guarantees as "this API won't change in all 1.x/2.x series", what if we
> > > define it as "this API won't change in the next 2/3 years". That should
> > > allow us to incrementally iterate the APIs.
> > >
> > > E.g., in 2.a, all APIs annotated as `@Stable` will be guaranteed
> compatible
> > > until 2 years after 2.a is shipped, and in 2.b if the API is still
> > > annotated `@Stable` it extends the compatibility guarantee to 2 years
> after
> > > 2.b is shipped. To remove an API, we would need to mark it as
> `@Deprecated`
> > > and wait for 2 years after the last release in which it was marked
> > > `@Stable`.
> > >
> > > My thinking goes rather in the area of defining Milestone releases,
> each
> > >> Milestone targeting specific changes.
> > >>
> > > I'm trying to understand what you are suggesting here. IIUC, the
> milestone
> > > releases are a breakdown of the 2.0 release, while we are free to
> introduce
> > > breaking changes between them. And you suggest using longer-living
> feature
> > > branches to keep the master branch in a releasable state (in terms of
> > > milestone releases). Am I understanding it correctly?
> > >
> > > I haven't thought this through. My gut feeling is this might be a good
> > > direction to go, in terms of keeping things organized. The risk is the
> cost
> > > of merging feature branches and rebasing feature branches after other
> > > features are merged. That depends on how close the features are
> related to
> > > each other. E.g., reorganization of the project modules and
> dependencies
> > > may change the project structure a lot, which may significantly affect
> most
> > > of the feature branches. Maybe we can identify such widely-affecting
> > > changes and perform them at the beginning or end of the release cycle.
> > >
> > > Best,
> > >
> > > Xintong
> > >
> > >
> > >
> > > On Wed, Apr 26, 2023 at 8:23 AM ConradJam<jam.gz...@gmail.com>  wrote:
> > >
> > >> Thanks Xintong and Jark for kicking off the great discussion!
> > >>
> > >> I checked the list carefully. The plans are detailed and most of the
> > >> problems are covered
> > >> Some of the ideas Chesnay mentioned, I think we should iterate in
> > >> small steps and collect feedback in time
> > >> Looking forward to the start of the work of Flink2.0, I am willing to
> > >> provide assistance ~
> > >>
> > >> Xintong Song<tonysong...@gmail.com>  于2023年4月25日周二 19:10写道:
> > >>> Hi everyone,
> > >>>
> > >>> I'd like to start a discussion on planning for a Flink 2.0 release.
> > >>>
> > >>> AFAIK, in the past years this topic has been mentioned from time to
> time,
> > >>> in mailing lists, jira tickets and offline discussions. However, few
> > >>> concrete steps have been taken, due to the significant determination
> and
> > >>> efforts it requires and distractions from other prioritized focuses.
> > >> After
> > >>> a series of offline discussions in the recent weeks, with folks
> mostly
> > >> from
> > >>> our team internally as well as a few from outside Alibaba / Ververica
> > >>> (thanks for insights from Becket and Robert), we believe it's time to
> > >> kick
> > >>> this off in the community.
> > >>>
> > >>> Below are some of our thoughts about the 2.0 release. Looking
> forward to
> > >>> your opinions and feedback.
> > >>>
> > >>>
> > >>> ## Why plan for release 2.0?
> > >>>
> > >>>
> > >>> Flink 1.0.0 was released in March 2016. In the past 7 years, many new
> > >>> features have been added and the project has become different from
> what
> > >> it
> > >>> used to be. So what is Flink now? What will it become in the next 3-5
> > >>> years? What do we think of Flink's position in the industry? We
> believe
> > >>> it's time to rethink these questions, and draw a roadmap towards
> another
> > >>> milestone, a milestone that worths a new major release.
> > >>>
> > >>>
> > >>> In addition, we are still providing backwards compatibility (maybe
> not
> > >>> perfectly but largely) with APIs that we designed and claimed stable
> 7
> > >>> years ago. While such backwards compatibility helps users to stick
> with
> > >> the
> > >>> latest Flink releases more easily, it sometimes, and more and more
> over
> > >>> time, also becomes a burden for maintenance and a limitation for new
> > >>> features and improvements. It's probably time to have a comprehensive
> > >>> review and clean-up over all the public APIs.
> > >>>
> > >>>
> > >>> Furthermore, next year is the 10th year for Flink as an Apache
> project.
> > >>> Flink joined the Apache incubator in April 2014, and became a
> top-level
> > >>> project in December 2014. That makes 2024 a perfect time for
> bringing out
> > >>> the release 2.0 milestone. And for such a major release, we'd expect
> it
> > >>> takes one year or even longer to prepare for, which means we probably
> > >>> should start now.
> > >>>
> > >>>
> > >>> ## What should we focus on in release 2.0?
> > >>>
> > >>>
> > >>>     - Roadmap discussion - How do we define and position Flink for
> now and
> > >>>     in future? This is probably something we lacked. I believe some
> > >> people have
> > >>>     thought about it, but at least it's not explicitly discussed and
> > >> aligned in
> > >>>     the community. Ideally, the 2.0 release should be a result of the
> > >> roadmap.
> > >>>     - Breaking changes - Important improvements, bugfixes, technical
> debts
> > >>>     that involve breaking of API backwards compatibility, which can
> only
> > >> be
> > >>>     carried out in major releases.
> > >>>        - With breaking API changes, we may need multiple
> 2.0-alpha/beta
> > >>>        versions to collect feedback.
> > >>>     - Key features - Significant features and improvements (e.g.,
> new user
> > >>>     stories, architectural upgrades) that may change how users use
> Flink
> > >> and
> > >>>     its position in the industry. Some items from this category may
> also
> > >>>     involve API breaking changes or significant behavior changes.
> > >>>        - There are also opinions that we should stay focused as much
> as
> > >>>        possible on the breaking changes only. Incremental /
> non-breaking
> > >>>        improvements and features, or anything that can be added in
> 2.x
> > >> minor
> > >>>        releases, should not block the 2.0 release.
> > >>>
> > >>> It might be better to discuss the detailed technical items later in
> > >> another
> > >>> thread, to keep the current discussion focused on the overall
> proposal,
> > >> and
> > >>> to leave time for all parties to think about their technical plans.
> For
> > >>> your reference, I've attached a preliminary list of work items
> proposed
> > >> by
> > >>> Alibaba / Ververica [1]. Note that the listed items are still being
> > >>> carefully evaluated and prioritized, and may change in future.
> > >>>
> > >>>
> > >>> ## How do we manage the release?
> > >>>
> > >>>
> > >>> #### Release Process
> > >>>
> > >>>
> > >>> We'd expect the release process for Flink 2.0 to be different from
> the
> > >> 1.x
> > >>> releases.
> > >>>
> > >>>
> > >>> A major difference is that, we think the timeline-based release
> > >> management
> > >>> may not be suitable. The idea behind the timeline-based approach is
> that
> > >> we
> > >>> can have more frequent releases and deliver completed features to
> users
> > >>> earlier, while incompleted features can be postponed to the next
> release
> > >>> which won't be too late with the short release cycle. However, for
> > >> breaking
> > >>> changes that can only take place in major releases, the price for
> > >> missing a
> > >>> release is too high.
> > >>>
> > >>>
> > >>> Alternatively, we probably should discuss and agree on a list of
> > >> must-have
> > >>> work items. That doesn't mean keep postponing the release upon a few
> > >>> delayed features. In fact, we would need to closely monitor the
> progress
> > >> of
> > >>> the must-have items during the entire release cycle, making sure
> they are
> > >>> taken care of by contributors with enough expertise and capacities.
> > >>>
> > >>>
> > >>> #### Timeline
> > >>>
> > >>>
> > >>> The release cycle should be decided according to the feature list,
> > >>> especially the must-have items that we plan to do in the release.
> > >> However,
> > >>> a target feature freeze date would still be helpful when making the
> plan,
> > >>> so that we don't pack too many things into the release. We propose
> to aim
> > >>> for a feature freeze around mid 2024, so that in case must-have
> items are
> > >>> delayed, we still have a good chance to make the release happen by
> the
> > >> end
> > >>> of 2024.
> > >>>
> > >>>
> > >>> #### Branch
> > >>>
> > >>>
> > >>> A longer release cycle also means we probably should keep shiping
> the 1.x
> > >>> releases while preparing for the 2.0 release. We may cut a release-1
> from
> > >>> master, on which we can keep developing and release 1.x releases. The
> > >>> version on the master branch will then become '2.0-SNAPSHOT'.
> > >>>
> > >>>
> > >>> #### Release Manager
> > >>>
> > >>>
> > >>> Given the new and to-be-explored release process, longer cycle and
> higher
> > >>> synchronization requirements, we'd expect the 2.0 release to be more
> > >>> challenging than previous 1.x releases. Therefore, we'd like to
> propose
> > >> to
> > >>> assemble a release management team with 4-5 experienced PMC members.
> Jark
> > >>> and I would like to volunteer as 2 of the release managers.
> > >>>
> > >>>
> > >>> Looking forward to your thoughts.
> > >>>
> > >>>
> > >>> Best,
> > >>>
> > >>> Jark & Xintong
> > >>>
> > >>>
> > >>> [1]
> > >>>
> > >>
> https://docs.google.com/document/d/1_PMGl5RuDQGlV99_gL3y7OiRsF0DgCk91Coua6hFXhE/edit?usp=sharing
> > >>
> > >> --
> > >> Best
> > >>
> > >> ConradJam
> > >>
>

Reply via email to