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