I see. Thanks for the explanation. I may have not looked into this deeply
enough, and would trust the decision from you and the community members who
participated in the discussion & vote.

Best,

Xintong



On Thu, Jun 29, 2023 at 10:28 PM Alexander Fedulov <
alexander.fedu...@gmail.com> wrote:

> > However, I'm not sure about 2.
>
> I am not aware of a bylaw that states the specific requirements in order to
> mark something as @Deprecated. My understanding from the discussion and the
> vote was that the community recognizes the necessity to make it explicit
> that
> the usage of the SourceFunction API is discouraged. This can actually
> stimulate
> authors of connectors that rely on this very specific and non-baseline
> functionality to contribute extensions to the new Source API themselves in
> order to
> close the gap. ExternallyInducedSource, for instance, was driven by Pravega
> to
> begin with, since it was only needed for their purposes [1]. We are not
> removing
> anything - until 2.0 everything will continue to work and we can work on
> resolving the limitations until then, I personally don't see a big issue
> here.
>
> >Do you think it is feasible to resolve them by the feature freeze date of
> 1.18?
> No, these are rather complex additions that would probably require FLIP(s).
>
> [1]
>
> https://flink.apache.org/2022/01/20/pravega-flink-connector-101/#checkpoint-integration
>
> On Thu, 29 Jun 2023 at 14:25, Xintong Song <tonysong...@gmail.com> wrote:
>
> > Thanks for the explanation, Alex.
> >
> > Not blocking the deprecation on 1 & 3 makes sense to me. However, I'm not
> > sure about 2.
> >
> > It sounds to me that, without FLINK-28051 & FLINK-28054, some of the
> > connectors cannot migrate to the new Source API, or at least further
> > investigation is needed to understand the situation. If this is the case,
> > we probably should not deprecate the API until these issues are resolved.
> > Do you think it is feasible to resolve them by the feature freeze date of
> > 1.18?
> >
> > Best,
> >
> > Xintong
> >
> >
> >
> > On Thu, Jun 29, 2023 at 8:02 PM Alexander Fedulov <
> > alexander.fedu...@gmail.com> wrote:
> >
> > > @Xintong
> > > The original discussion [1] and vote [2] converged on the idea that it
> is
> > > better
> > > to make it clear to the users that they should stop using
> SourceFunction
> > > since it
> > > is going away. The longer we do not have this indication, the more user
> > > implementations will be based on it and the more pain will be induced
> > when
> > > we
> > > finally drop it. Users now have an alternative API that they should use
> > and
> > > which
> > > is fully functional, from that perspective nothing blocks marking it
> > > @Deprecated.
> > > As for the remaining work items - there are primarily three kinds:
> > >
> > > 1. Where Flink internally uses SourceFunction, without exposing this
> fact
> > > to the
> > >    outside world:
> > >    - FLINK-28050 [3]
> > >    - FLINK-28229 [4]
> > >    - FLINK-28048 [5]
> > >
> > > 2. Very specific edge cases that might not be covered by the Source API
> > as
> > > is:
> > >    - FLINK-28054 [6]
> > >    - FLINK-28051 [7]
> > >
> > > 3. Usability improvements - something that was easily doable with
> > > SourceFunction,
> > >    but requires deep knowledge of the new, significantly more complex,
> > > Source API
> > >    to achieve:
> > >    - FLINK-28056 [8]
> > >
> > > In my mind, none of those are blockers for proceeding with adding the
> > > @Deprecated
> > > annotation:
> > > (1) is a simple case of encapsulation, internals should not concern the
> > API
> > > users
> > > (2) is really only relevant for "exotic" use cases. Does not mean we
> > should
> > > not
> > > consider those, but since it is irrelevant for 99.9% of the users, I do
> > not
> > > think
> > > we should get stuck here.
> > > (3) is purely a nice to have. Formally speaking, all of the tools are
> > > there, it is
> > > just that due to the complexity of the new Source API some "simple"
> > things
> > > become
> > > non-trivial and ideally we want to do better here.
> > >
> > > [1] https://lists.apache.org/thread/d6cwqw9b3105wcpdkwq7rr4s7x4ywqr9
> > > [2] https://lists.apache.org/thread/kv9rj3w2rmkb8jtss5bqffhw57or7v8v
> > > [3] https://issues.apache.org/jira/browse/FLINK-28050
> > > [4] https://issues.apache.org/jira/browse/FLINK-28229
> > > [5] https://issues.apache.org/jira/browse/FLINK-28048
> > > [6] https://issues.apache.org/jira/browse/FLINK-28054
> > > [7] https://issues.apache.org/jira/browse/FLINK-28051
> > > [8] https://issues.apache.org/jira/browse/FLINK-28056
> > >
> > > On Thu, 29 Jun 2023 at 13:13, Xintong Song <tonysong...@gmail.com>
> > wrote:
> > >
> > > > Thanks for the inputs, Martijn, Jing and Alex.
> > > >
> > > > @Martijn,
> > > > Regarding the Scala supports, I personally don't think "a fully
> striked
> > > > through experience in the IDE" is something we want to avoid,
> > especially
> > > > given that we are planning to remove the deprecated APIs soon, unlike
> > > when
> > > > FLINK-29740 was resolved we didn't really know when they would be
> > > removed.
> > > > Moreover, the even entry point for DataStream Scala
> > > > (`StreamExecutionEnvironment`) is not annotated.
> > > >
> > > >
> > > > @Jing and @Alex,
> > > >
> > > > IIUC, you mean SourceFunction can be annotated as `@Deprecated` in
> > 1.18,
> > > > and there's already a PR doing so. However, after the deprecation,
> > there
> > > > are still issues that need to be addressed before removing it in 2.0?
> > > This
> > > > sounds a bit weird. If the API cannot be dropped, which means without
> > > this
> > > > API some of functions cannot be supported, then how could it be
> > > deprecated?
> > > > How would we expect users to migrate away from it?
> > > >
> > > >
> > > > @Jing,
> > > >
> > > > Sounds like it's impractical to deprecate SinkFunction in 1.18. Any
> > > > expectation / plan on when / how it can be deprecated / removed?
> > > >
> > > >
> > > > Best,
> > > >
> > > > Xintong
> > > >
> > > >
> > > >
> > > > On Thu, Jun 29, 2023 at 6:12 PM Alexander Fedulov <
> > > > alexander.fedu...@gmail.com> wrote:
> > > >
> > > > > Hi Xintong,
> > > > >
> > > > > Thanks for bringing up this topic. I can provide some details
> > regarding
> > > > > the SourceFunction deprecation efforts. Marking SourceFunction as
> > > > > deprecated was not possible until now since we have stringent
> > compiler
> > > > > checks in flink-examples against using any deprecated APIs. We
> > actually
> > > > > merged the migration of all examples to the new FLIP-27-based
> > > > > DataGeneratorSource [1] just two days ago [2]. Now the PR marking
> > > > > it @Deprecated is finally unblocked [3] (I would be grateful if you
> > > could
> > > > > merge it).
> > > > >
> > > > > With regards to the Flink 2.0 scope, I compiled a list of items
> > > required
> > > > to
> > > > > be able to drop the SourceFunction API [4] a while ago and as you
> can
> > > > see,
> > > > > there is still quite some work to be done. Some items [5] might
> even
> > > > > require additions to the new Source API. Overall, I am happy to
> take
> > > > > ownership of completing this work package.
> > > > >
> > > > > Best,
> > > > > Alex
> > > > >
> > > > >
> > > > > [1] https://cwiki.apache.org/confluence/x/9Av1D
> > > > > [2] https://github.com/apache/flink/pull/21774
> > > > > [3] https://github.com/apache/flink/pull/20049
> > > > > [4] https://issues.apache.org/jira/browse/FLINK-28045
> > > > > [5] https://issues.apache.org/jira/browse/FLINK-28054
> > > > >
> > > > > On Thu, 29 Jun 2023 at 10:45, Martijn Visser <
> > martijnvis...@apache.org
> > > >
> > > > > wrote:
> > > > >
> > > > > > Hi Xintong,
> > > > > >
> > > > > > With regards to the deprecation of the Scala APIs, during the PR
> > > > > > review it was requested to not mark all APIs as deprecated but
> only
> > > > > > the entry point [1], to avoid a fully striked through experience
> in
> > > > > > the IDE. I think the same idea was applicable on the DataSet
> API. I
> > > > > > think it depends on how formal we want to treat this: if really
> > > > > > formal, then we should deprecate them in 1.18. I think in both
> > cases,
> > > > > > it's quite well known that they are deprecated. I'm +0 for either
> > > way,
> > > > > > as long as we're all agreeing that they can be removed in 2.0.
> > > > > >
> > > > > > With regards to Queryable State and Source/SinkFunction, +1 to
> mark
> > > > > > these as deprecated.
> > > > > >
> > > > > > Best regards,
> > > > > >
> > > > > > Martijn
> > > > > >
> > > > > > [1]
> > > > > >
> > > >
> > https://github.com/apache/flink/pull/21176#pullrequestreview-1159706808
> > > > > >
> > > > > > On Thu, Jun 29, 2023 at 10:23 AM Xintong Song <
> > tonysong...@gmail.com
> > > >
> > > > > > wrote:
> > > > > > >
> > > > > > > Hi devs,
> > > > > > >
> > > > > > > Looking at the release 2.0 proposals [1], I noticed that many
> > APIs
> > > > that
> > > > > > are
> > > > > > > proposed to be removed in 2.0 are not (fully) deprecated yet.
> We
> > > > might
> > > > > > want
> > > > > > > to properly mark them as `@Deprecated` in 1.18 if we agree they
> > > > should
> > > > > be
> > > > > > > removed in 2.0. Moreover, according to FLIP-321 [2] (not voted
> > yet
> > > > but
> > > > > > IMO
> > > > > > > is close to consensus IMO), a migration period is required
> after
> > > APIs
> > > > > are
> > > > > > > deprecated and before they can be removed.
> > > > > > >
> > > > > > > I might not be familiar with the status of all the APIs below.
> So
> > > I'd
> > > > > > like
> > > > > > > to bring them up and see if there's any concern regarding
> > > deprecating
> > > > > > them
> > > > > > > in 1.18. If there's concern for deprecating API, we can start a
> > > > > separate
> > > > > > > discussion thread for it. For those with no objections, I'd
> > create
> > > > JIRA
> > > > > > > tickets and try to properly deprecate them in 1.18.
> > > > > > >
> > > > > > > 1. DataSet API
> > > > > > > It's described as "legacy", "soft deprecated" in user
> > documentation
> > > > > [3].
> > > > > > > However, it's not annotated with `@Deprecated` in codes.
> > According
> > > to
> > > > > > > FLIP-131 [4], DataSet API should be deprecated when DataStream
> > API
> > > > and
> > > > > > > Table API / SQL meet certain requirements. AFAICS, all the
> > > > requirements
> > > > > > > mentioned in the FLIP are already fulfilled. We should annotate
> > it
> > > as
> > > > > > > `@Deprecated` now.
> > > > > > >
> > > > > > > 2. SourceFunction / SinkFunction
> > > > > > > They are described as deprecated in the roadmap[5], and I don't
> > > find
> > > > > > > anything regarding them in user documentation. But they are
> also
> > > not
> > > > > > > annotated with `@Deprecated` in codes. TBH, I'm not aware of
> any
> > > > formal
> > > > > > > decision to deprecate these. AFAICS, the replacement for
> > > > SourceFunction
> > > > > > > (Source) has already been promoted to `@Public`, while the
> > > > replacement
> > > > > > for
> > > > > > > SinkFunction (SinkV2) is still `@PublicEvolving`. I found a
> > > > > discussion[6]
> > > > > > > regarding promoting SinkV2 to `@Public`, but it's unclear to me
> > > what
> > > > > the
> > > > > > > conclusion is.
> > > > > > >
> > > > > > > 3. Queryable State
> > > > > > > It's described as approaching end-of-life in the roadmap [5],
> but
> > > is
> > > > > > > neither deprecated in codes nor in user documentation [7]. I
> also
> > > > > found a
> > > > > > > discussion [8] about rescuing it from deprecation, and it seems
> > to
> > > me
> > > > > > there
> > > > > > > are more negative opinions than positive ones.
> > > > > > >
> > > > > > > 4. All Scala APIs
> > > > > > > I think we agreed to drop Scala API support in FLIP-265 [9],
> and
> > > have
> > > > > > tried
> > > > > > > to deprecate them in FLINK-29740 [10]. Also, both user
> > > documentation
> > > > > and
> > > > > > > roadmap[5] shows that scala API supports are deprecated.
> However,
> > > > > AFAICS,
> > > > > > > none of the APIs in `flink-streaming-scala` are annotated with
> > > > > > > `@Deprecated`, and only `ExecutionEnvironment` and `package`
> are
> > > > marked
> > > > > > > `@Deprecated` in `flink-scala`.
> > > > > > >
> > > > > > > Looking forward to your feedback.
> > > > > > >
> > > > > > > Best,
> > > > > > >
> > > > > > > Xintong
> > > > > > >
> > > > > > >
> > > > > > > [1]
> > https://cwiki.apache.org/confluence/display/FLINK/2.0+Release
> > > > > > >
> > > > > > > [2]
> > > https://lists.apache.org/thread/vmhzv8fcw2b33pqxp43486owrxbkd5x9
> > > > > > >
> > > > > > > [3]
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://nightlies.apache.org/flink/flink-docs-master/docs/dev/dataset/overview/
> > > > > > >
> > > > > > > [4]
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=158866741
> > > > > > >
> > > > > > > [5] https://flink.apache.org/roadmap/
> > > > > > >
> > > > > > > [6]
> > > https://lists.apache.org/thread/q62nj89rrz0t5xtggy5n65on95f2rmmx
> > > > > > >
> > > > > > > [7]
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://nightlies.apache.org/flink/flink-docs-master/docs/dev/datastream/fault-tolerance/queryable_state/
> > > > > > >
> > > > > > > [8]
> > > https://lists.apache.org/thread/9hmwcjb3q5c24pk3qshjvybfqk62v17m
> > > > > > >
> > > > > > > [9]
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-265+Deprecate+and+remove+Scala+API+support
> > > > > > >
> > > > > > > [10] https://issues.apache.org/jira/browse/FLINK-29740
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to