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 > > > > > > > > > > > > > > > > > > > > > > > > > > > >