Thanks all for the discussion. It seems to me there's a consensus on marking the following as deprecated in 1.18: - DataSet API - SourceFunction - Queryable State - All Scala APIs
More time is needed for deprecating SinkFunction. I'll leave this discussion open for a few more days. And if there's no objections, I'll create JIRA tickets accordingly. Best, Xintong On Wed, Jul 5, 2023 at 1:34 PM Xintong Song <tonysong...@gmail.com> wrote: > 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 >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> >