Thanks for the input, Jing. I'd also be +1 for option 1.

Best,

Xintong



On Mon, Jul 3, 2023 at 7:20 PM Jing Ge <j...@ververica.com.invalid> wrote:

> Hi Xingtong,
>
> Option 1, secure plan would be:
>
> 1. graduate kafka, File, JDBC connectors to @Public
> 2. graduate SinkV2 to @Public
> 3. remove SinkFunction.
>
> Option 2, risky plan but at a fast pace:
>
> 1. graduate SinkV2 to @Public and expecting more maintenance effort since
> there are many known and unsolved issues.
> 2. remove SinkFunction.
> 3. It depends on the connectors' contributors whether connectors can
> upgrade to Flink 2.0, since we moved forward with SinkV2 API without taking
> care of implementations in external connectors.
>
> I am ok with both of them and personally prefer option 1.
>
> Best regards,
> Jing
>
>
> On Fri, Jun 30, 2023 at 3:41 AM Xintong Song <tonysong...@gmail.com>
> wrote:
>
> > 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