> do we have any plan to offer a lighter Source API to decrease the connector > development cost?
I remember mentioning it many times, but no contributor did it. ToT Best, Jingsong On Tue, Jul 4, 2023 at 11:01 AM Leonard Xu <xbjt...@gmail.com> wrote: > > +1 to deprecate. > +1 for David’s points. > > I’ve one related question, do we have any plan to offer a lighter Source API > to decrease the connector development cost? > > New Source API is good but too heavy for use cases like tests or even some > simple connectors. > > Best, > Leonard > > > > On Jun 6, 2022, at 9:51 PM, tison <wander4...@gmail.com> wrote: > > > > One question from my side: > > > > As SourceFunction a @Public interface, we cannot remove it before doing a > > major version bump (Flink 2.0). > > > > Of course it's not a blocker to make such deprecation and let the new > > interface step in. My question is whether we have a plan to finally remove > > the deprecated interfaces, or postpone it until a clear plan of Flink 2.0? > > > > Best, > > tison. > > > > > > David Anderson <dander...@apache.org> 于2022年6月6日周一 21:35写道: > > > >>> > >>> David, can you elaborate why you need watermark generation in the source > >>> for your data generators? > >> > >> > >> The training exercises should strive to provide examples of best practices. > >> If the exercises and their solutions use > >> > >> env.fromSource(source, WatermarkStrategy.noWatermarks(), "name-of-source") > >> .map(...) > >> .assignTimestampsAndWatermarks(...) > >> > >> this will help establish this anti-pattern as the normal way of doing > >> things. > >> > >> Most new Flink users are using a KafkaSource with a noWatermarks strategy > >> and a SimpleStringSchema, followed by a map that does the real > >> deserialization, followed by the real watermarking -- because they aren't > >> seeing examples that teach how these interfaces are meant to be used. > >> > >> When we redo the sources used in training exercises, I want to avoid these > >> pitfalls. > >> > >> David > >> > >> On Mon, Jun 6, 2022 at 9:12 AM Konstantin Knauf <kna...@apache.org> wrote: > >> > >>> Hi everyone, > >>> > >>> very interesting thread. The proposal for deprecation seems to have > >> sparked > >>> a very important discussion. Do we what users struggle with specifically? > >>> > >>> Speaking for myself, when I upgrade flink-faker to the new Source API an > >>> unbounded version of the NumberSequenceSource would have been all I > >> needed, > >>> but that's just the data generator use case. I think, that one could be > >>> solved quite easily. David, can you elaborate why you need watermark > >>> generation in the source for your data generators? > >>> > >>> Cheers, > >>> > >>> Konstantin > >>> > >>> > >>> > >>> > >>> > >>> Am So., 5. Juni 2022 um 17:48 Uhr schrieb Piotr Nowojski < > >>> pnowoj...@apache.org>: > >>> > >>>> Also +1 to what David has written. But it doesn't mean we should be > >>> waiting > >>>> indefinitely to deprecate SourceFunction. > >>>> > >>>> Best, > >>>> Piotrek > >>>> > >>>> niedz., 5 cze 2022 o 16:46 Jark Wu <imj...@gmail.com> napisał(a): > >>>> > >>>>> +1 to David's point. > >>>>> > >>>>> Usually, when we deprecate some interfaces, we should point users to > >>> use > >>>>> the recommended alternatives. > >>>>> However, implementing the new Source interface for some simple > >>> scenarios > >>>> is > >>>>> too challenging and complex. > >>>>> We also found it isn't easy to push the internal connector to upgrade > >>> to > >>>>> the new Source because > >>>>> "FLIP-27 are hard to understand, while SourceFunction is easy". > >>>>> > >>>>> +1 to make implementing a simple Source easier before deprecating > >>>>> SourceFunction. > >>>>> > >>>>> Best, > >>>>> Jark > >>>>> > >>>>> > >>>>> On Sun, 5 Jun 2022 at 07:29, Jingsong Lee <lzljs3620...@apache.org> > >>>> wrote: > >>>>> > >>>>>> +1 to David and Ingo. > >>>>>> > >>>>>> Before deprecate and remove SourceFunction, we should have some > >>> easier > >>>>> APIs > >>>>>> to wrap new Source, the cost to write a new Source is too high now. > >>>>>> > >>>>>> > >>>>>> > >>>>>> Ingo Bürk <airbla...@apache.org>于2022年6月5日 周日05:32写道: > >>>>>> > >>>>>>> I +1 everything David said. The new Source API raised the > >>> complexity > >>>>>>> significantly. It's great to have such a rich, powerful API that > >>> can > >>>> do > >>>>>>> everything, but in the process we lost the ability to onboard > >>> people > >>>> to > >>>>>>> the APIs. > >>>>>>> > >>>>>>> > >>>>>>> Best > >>>>>>> Ingo > >>>>>>> > >>>>>>> On 04.06.22 21:21, David Anderson wrote: > >>>>>>>> I'm in favor of this, but I think we need to make it easier to > >>>>>> implement > >>>>>>>> data generators and test sources. As things stand in 1.15, > >> unless > >>>> you > >>>>>> can > >>>>>>>> be satisfied with using a NumberSequenceSource followed by a > >> map, > >>>>>> things > >>>>>>>> get quite complicated. I looked into reworking the data > >>> generators > >>>>> used > >>>>>>> in > >>>>>>>> the training exercises, and got discouraged by the amount of > >> work > >>>>>>> involved. > >>>>>>>> (The sources used in the training want to be unbounded, and > >> need > >>>>>>>> watermarking in the sources, which means that using > >>>>>> NumberSequenceSource > >>>>>>>> isn't an option.) > >>>>>>>> > >>>>>>>> I think the proposed deprecation will be better received if it > >>> can > >>>> be > >>>>>>>> accompanied by something that makes implementing a simple > >> Source > >>>>> easier > >>>>>>>> than it is now. People are continuing to implement new > >>>>> SourceFunctions > >>>>>>>> because the interfaces defined by FLIP-27 are hard to > >> understand, > >>>>> while > >>>>>>>> SourceFunction is easy. Alex, I believe you were looking into > >>>>>>> implementing > >>>>>>>> an easier-to-use building block that could be used in > >> situations > >>>> like > >>>>>>> this. > >>>>>>>> Can we get something like that in place first? > >>>>>>>> > >>>>>>>> David > >>>>>>>> > >>>>>>>> On Fri, Jun 3, 2022 at 4:52 PM Jing Ge <j...@ververica.com> > >>> wrote: > >>>>>>>> > >>>>>>>>> Hi, > >>>>>>>>> > >>>>>>>>> Thanks Alex for driving this! > >>>>>>>>> > >>>>>>>>> +1 To give the Flink developers, especially Connector > >> developers > >>>> the > >>>>>>> clear > >>>>>>>>> signal that the new Source API is recommended according to > >>>> FLIP-27, > >>>>> we > >>>>>>>>> should mark them as deprecated. > >>>>>>>>> > >>>>>>>>> There are some open questions to discuss: > >>>>>>>>> > >>>>>>>>> 1. Do we need to mark all subinterfaces/subclasses as > >>> deprecated? > >>>>> e.g. > >>>>>>>>> FromElementsFunction, etc. there are many. What are the > >>>>> replacements? > >>>>>>>>> 2. Do we need to mark all subclasses that have replacement as > >>>>>>> deprecated? > >>>>>>>>> e.g. ExternallyInducedSource whose replacement class, if I am > >>> not > >>>>>>> mistaken, > >>>>>>>>> ExternallyInducedSourceReader is @Experimental > >>>>>>>>> 3. Do we need to mark all related test utility classes as > >>>>> deprecated? > >>>>>>>>> > >>>>>>>>> I think it might make sense to create an umbrella ticket to > >>> cover > >>>>> all > >>>>>> of > >>>>>>>>> these with the following process: > >>>>>>>>> > >>>>>>>>> 1. Mark SourceFunction as deprecated asap. > >>>>>>>>> 2. Mark subinterfaces and subclasses as deprecated, if there > >> are > >>>>>>> graduated > >>>>>>>>> replacements. Good example is that KafkaSource replaced > >>>>> KafkaConsumer > >>>>>>> which > >>>>>>>>> has been marked as deprecated. > >>>>>>>>> 3. Do not mark subinterfaces and subclasses as deprecated, if > >>>>>>> replacement > >>>>>>>>> classes are still experimental, check if it is time to > >> graduate > >>>>> them. > >>>>>>> After > >>>>>>>>> graduation, go to step 2. It might take a while for > >> graduation. > >>>>>>>>> 4. Do not mark subinterfaces and subclasses as deprecated, if > >>> the > >>>>>>>>> replacement classes are experimental and are too young to > >>>> graduate. > >>>>> We > >>>>>>> have > >>>>>>>>> to wait. But in this case we could create new tickets under > >> the > >>>>>> umbrella > >>>>>>>>> ticket. > >>>>>>>>> 5. Do not mark subinterfaces and subclasses as deprecated, if > >>>> there > >>>>> is > >>>>>>> no > >>>>>>>>> replacement at all. We have to create new tickets and wait > >> until > >>>> the > >>>>>> new > >>>>>>>>> implementation has been done and graduated. It will take a > >>> longer > >>>>>> time, > >>>>>>>>> roughly 1,5 years. > >>>>>>>>> 6. For test classes, we could follow the same rule. But I > >> think > >>>> for > >>>>>> some > >>>>>>>>> cases, we could consider doing the replacement directly > >> without > >>>>> going > >>>>>>>>> through the deprecation phase. > >>>>>>>>> > >>>>>>>>> When we look back on all of these, we can realize it is a big > >>> epic > >>>>>> (even > >>>>>>>>> bigger than an epic). It needs someone to drive it and keep > >>> focus > >>>> on > >>>>>> it > >>>>>>>>> continuously with support from the community and push the > >>>>> development > >>>>>>>>> towards the new Source API of FLIP-27. > >>>>>>>>> > >>>>>>>>> If we could have consensus for this, Alex and I could create > >>> the > >>>>>>> umbrella > >>>>>>>>> ticket to kick it off. > >>>>>>>>> > >>>>>>>>> Best regards, > >>>>>>>>> Jing > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> On Fri, Jun 3, 2022 at 3:54 PM Alexander Fedulov < > >>>>>>> alexan...@ververica.com> > >>>>>>>>> wrote: > >>>>>>>>> > >>>>>>>>>> Hi everyone, > >>>>>>>>>> > >>>>>>>>>> I would like to start the discussion about marking > >>>>>> SourceFunction-based > >>>>>>>>>> interfaces as deprecated. With the FLIP-27 APIs becoming the > >>> new > >>>>>>>>> standard, > >>>>>>>>>> the old ones have to be eventually phased out. Although this > >>>> state > >>>>> is > >>>>>>>>> well > >>>>>>>>>> known within the community and no new connectors based on the > >>> old > >>>>>>>>>> interfaces can be accepted into the project, the footprint of > >>>>>>>>>> SourceFunction in the user code still keeps growing > >> (primarily > >>>> for > >>>>>> data > >>>>>>>>>> generators and test utilities). I believe it is best to mark > >>>>>>>>> SourceFunction > >>>>>>>>>> as deprecated as soon as possible. What do you think? > >>>>>>>>>> > >>>>>>>>>> Best, > >>>>>>>>>> Alexander Fedulov > >>>>>>>>>> > >>>>>>>>> > >>>>>>>> > >>>>>>> > >>>>>> > >>>>> > >>>> > >>> > >>> > >>> -- > >>> https://twitter.com/snntrable > >>> https://github.com/knaufk > >>> > >> >