Hi Martijn,

I don't mean it's a blocker. Just a information. And I'm also +1 for this.

Put it another way: should we migrate the `#readFile(...)` to new API or
provide a similar method "readxxx“ based on the new Source API?

And if we don't migrate it, does it mean that the `#readFile(...)` should
also be marked as deprecated?

Best,
Lijie

Martijn Visser <martijnvis...@apache.org> 于2022年6月9日周四 21:03写道:

> Hi Lijie,
>
> I don't see any problem with deprecating those methods at this moment, as
> long as we don't remove them until the replacements are available. Besides
> that, are we sure there are no replacements already, especially with the
> new FileSource?
>
> Best regards,
>
> Martijn
>
> Op do 9 jun. 2022 om 14:23 schreef Lijie Wang <wangdachui9...@gmail.com>:
>
> > Hi all,
> >
> > FYI, currently, some commonly used methods in StreamExecutionEnvironment
> > are still based on the old SourceFunction (and there is no alternative):
> > `StreamExecutionEnvironment#readFile(...)`
> > `StreamExecutionEnvironment#readTextFile(...)`
> >
> > I think these should be migrated to the new source API before deprecate
> the
> > SourceFunction.
> >
> > Best,
> > Lijie
> >
> > Martijn Visser <martijnvis...@apache.org> 于2022年6月9日周四 16:05写道:
> >
> > > Hi all,
> > >
> > > I think implicitly we've already considered the SourceFunction and
> > > SinkFunction as deprecated. They are even marked as so on the Flink
> > roadmap
> > > [1]. That also shows that connectors that are using these interfaces
> are
> > > either approaching end-of-life. The fact that we're actively migrating
> > > connectors from Source/SinkFunction to FLIP-27/FLIP-143 (plus add-on
> > FLIPs)
> > > shows that we've already determined that target.
> > >
> > > With regards to the motivation of FLIP-27, I think reading up on the
> > > original discussion thread is also worthwhile [2] to see more context.
> > > FLIP-27 was also very important as it brought a unified connector which
> > can
> > > support both streaming and batch (with batch being considered a special
> > > case of streaming in Flink's vision).
> > >
> > > So +1 to deprecate SourceFunction. I would also argue that we should
> > > already mark the SinkFunction as deprecated to avoid having this
> > discussion
> > > again in a couple of months.
> > >
> > > Best regards,
> > >
> > > Martijn
> > >
> > > [1] https://flink.apache.org/roadmap.html
> > > [2] https://lists.apache.org/thread/334co89dbhc8qpr9nvmz8t1gp4sz2c8y
> > >
> > > Op do 9 jun. 2022 om 09:48 schreef Jing Ge <j...@ververica.com>:
> > >
> > > > Hi,
> > > >
> > > > I am very happy to see opinions from different perspectives. That
> will
> > > help
> > > > us understand the problem better. Thanks all for the informative
> > > > discussion.
> > > >
> > > > Let's see the big picture and check following facts together:
> > > >
> > > > 1. FLIP-27 was intended to solve some technical issues that are very
> > > > difficult to solve with SourceFunction[1]. When we say
> "SourceFunction
> > is
> > > > easy", well, it depends. If we take a look at the implementation of
> the
> > > > Kafka connector, we will know how complicated it is to build a
> serious
> > > > connector for production with the old SourceFunction. To every
> problem
> > > > there is a solution and to every solution there is a problem. The
> fact
> > is
> > > > that there is no perfect but a feasible solution. If we try to solve
> > > > complicated problems, we have to expose some complexity. Comparing to
> > > > connectors for POC, demo, training(no offense), I would also solve
> > issues
> > > > for connectors like Kafka connector that are widely used in
> production
> > > with
> > > > higher priority. I think that should be one reason why FLIP-27 has
> been
> > > > designed and why the new source API went public.
> > > >
> > > > 2. FLIP-27 and the implementation was introduced roughly at the end
> of
> > > 2019
> > > > and went public on 19.04.2021, which means Flink has provided two
> > > different
> > > > public/graduated source solutions for more than one year. On the day
> > that
> > > > the new source API went public, there should be a consensus in the
> > > > community that we should start the migration. Old SourceFunction
> > > interface,
> > > > in the ideal case, should have been deprecated on that day, otherwise
> > we
> > > > should not graduate the new source API to avoid confusing (connector)
> > > > developers[2].
> > > >
> > > > 3. It is true that the new source API is hard to understand and even
> > hard
> > > > to implement for simple cases. Thanks for the feedback. That is
> > something
> > > > we need to improve. The current design&implementation could be
> > considered
> > > > as the low level API. The next step is to create the high level API
> to
> > > > reduce some unnecessary complexity for those simple cases. But, IMHO,
> > > this
> > > > should not be the prerequisite to postpone the deprecation of the old
> > > > SourceFunction APIs.
> > > >
> > > > 4. As long as the old SourceFunction is not marked as deprecated,
> > > > developers will continue asking which one should be used. Let's make
> a
> > > > concrete example. If a new connector is developed now and the
> developer
> > > > asks for a suggestion of the choice between the old and new source
> API
> > on
> > > > the ML, which one should we suggest? I think it should be the new
> > Source
> > > > API. If a fresh new connector has been developed with the old
> > > > SourceFunction API before asking for the consensus in the community
> and
> > > the
> > > > developer wants to merge it to the master. Should we allow it? If the
> > > > answer of all these questions is pointing to the new Source API, the
> > old
> > > > SourceFunction is de facto already deprecated, just has not been
> marked
> > > as
> > > > @deprecated, which confuses developers even more.
> > > >
> > > >  Best regards,
> > > > Jing
> > > >
> > > > [1]
> > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-27%3A+Refactor+Source+Interface
> > > > [2] https://lists.apache.org/thread/7okp4y46n3o3rx5mn0t3qobrof8zxwqs
> > > >
> > > > On Wed, Jun 8, 2022 at 2:21 AM Alexander Fedulov <
> > > alexan...@ververica.com>
> > > > wrote:
> > > >
> > > > > Hey Austin,
> > > > >
> > > > > Since we are getting deeper into the implementation details of the
> > > > > DataGeneratorSource
> > > > > and it is not the main topic of this thread, I propose to move our
> > > > > discussion to where it belongs: [DISCUSS] FLIP-238 [1]. Could you
> > > please
> > > > > briefly formulate your requirements to make it easier for the
> others
> > to
> > > > > follow? I am happy to continue this conversation there.
> > > > >
> > > > > [1]
> https://lists.apache.org/thread/7gjxto1rmkpff4kl54j8nlg5db2rqhkt
> > > > >
> > > > > Best,
> > > > > Alexander Fedulov
> > > > >
> > > > > On Tue, Jun 7, 2022 at 6:14 PM Austin Cawley-Edwards <
> > > > > austin.caw...@gmail.com> wrote:
> > > > >
> > > > > > > @Austin, in the FLIP I mentioned above [1], the user is
> expected
> > to
> > > > > > pass a MapFunction<Long,
> > > > > > OUT>
> > > > > > to the generator. I wonder if you could have your external client
> > and
> > > > > > polling logic wrapped in a custom
> > > > > > MapFunction implementation class? Would that answer your needs or
> > do
> > > > you
> > > > > > have some
> > > > > > more sophisticated scenario in mind?
> > > > > >
> > > > > > At first glance, the FLIP looks good but for this case in regards
> > to
> > > > the
> > > > > > map function, but leaves out 1) ability to control polling
> > intervals
> > > > and
> > > > > 2)
> > > > > > ability to produce an unknown number of records, both per-poll
> and
> > > > > overall
> > > > > > boundedness. Do you think something like this could be built from
> > the
> > > > > same
> > > > > > pieces?
> > > > > > I'm also wondering what handles threading, is that on the user or
> > is
> > > > that
> > > > > > part of the DataGeneratorSource?
> > > > > >
> > > > > > Best,
> > > > > > Austin
> > > > > >
> > > > > > On Tue, Jun 7, 2022 at 9:34 AM Alexander Fedulov <
> > > > > alexan...@ververica.com>
> > > > > > wrote:
> > > > > >
> > > > > > > Hi everyone,
> > > > > > >
> > > > > > > Thanks for all the input and a lively discussion. It seems that
> > > there
> > > > > is
> > > > > > a
> > > > > > > consensus that due to
> > > > > > > the inherent complexity of FLIP-27 sources we should provide
> more
> > > > > > > user-facing utilities to bridge
> > > > > > > the gap between the existing SourceFunction-based functionality
> > and
> > > > the
> > > > > > new
> > > > > > > APIs.
> > > > > > >
> > > > > > > To start addressing this I picked the issue that David raised
> and
> > > > many
> > > > > > > upvoted. Here is a proposal
> > > > > > > for  the new DataGeneratorSource: FLIP-238 [1]. Please take a
> > > look, I
> > > > > am
> > > > > > > going to open a separate
> > > > > > > discussion thread on it shortly.
> > > > > > >
> > > > > > > Jing also raised some great points regarding the interfaces and
> > > > > > subclasses.
> > > > > > > It seems to me that
> > > > > > > what might actually help is some sort of a "soft deprecation"
> > > concept
> > > > > and
> > > > > > > annotation. It could be
> > > > > > > used in places where we do not have an alternative
> implementation
> > > > yet,
> > > > > > but
> > > > > > > we clearly want
> > > > > > > to indicate that continuing to build on top of these interfaces
> > is
> > > > > > > discouraged. The area of
> > > > > > > impact of deprecating all SourceFunction subclasses is rather
> > big,
> > > > and
> > > > > we
> > > > > > > can expect it to
> > > > > > > take a while. The hope would be that if in the meantime someone
> > > finds
> > > > > > > themselves using one of
> > > > > > > such old APIs, the "soft deprecation" annotation will be a
> clear
> > > > > > indication
> > > > > > > and encouragement to
> > > > > > > work on introducing an alternative FLIP-27-based implementation
> > > > > instead.
> > > > > > >
> > > > > > > @Austin, in the FLIP I mentioned above [1], the user is
> expected
> > to
> > > > > > > pass a MapFunction<Long,
> > > > > > > OUT>
> > > > > > > to the generator. I wonder if you could have your external
> client
> > > and
> > > > > > > polling logic wrapped in a custom
> > > > > > > MapFunction implementation class? Would that answer your needs
> or
> > > do
> > > > > you
> > > > > > > have some
> > > > > > > more sophisticated scenario in mind?
> > > > > > >
> > > > > > > [1] https://cwiki.apache.org/confluence/x/9Av1D
> > > > > > > Best,
> > > > > > > Alexander Fedulov
> > > > > > >
> > > > > > > On Mon, Jun 6, 2022 at 7:08 PM Austin Cawley-Edwards <
> > > > > > > austin.caw...@gmail.com> wrote:
> > > > > > >
> > > > > > > > Thanks for the nice discussion all.
> > > > > > > >
> > > > > > > > I was recently trying to implement a very simple polling
> source
> > > and
> > > > > > > > would've loved a higher-level base to work from. I'm
> wondering
> > if
> > > > in
> > > > > > > > addition to the data generator use cases, it would be good to
> > > > > support a
> > > > > > > > simple non-parallel polling abstraction to make it easier to,
> > for
> > > > > > > instance,
> > > > > > > > start prototyping with data in existing APIs without adding a
> > > Kafka
> > > > > or
> > > > > > > such
> > > > > > > > in the middle.
> > > > > > > >
> > > > > > > > Best,
> > > > > > > > Austin
> > > > > > > >
> > > > > > > > On Mon, Jun 6, 2022 at 10:02 AM tison <wander4...@gmail.com>
> > > > wrote:
> > > > > > > >
> > > > > > > > > Well. It's a bit off-topic. For deprecating SourceFunction
> as
> > > > > FLIP-27
> > > > > > > > > series works go ahead, +1 from my side. It's a significant
> > work
> > > > > > towards
> > > > > > > > the
> > > > > > > > > unification of batch and streaming effort :)
> > > > > > > > >
> > > > > > > > > Best,
> > > > > > > > > tison.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > tison <wander4...@gmail.com> 于2022年6月6日周一 21:54写道:
> > > > > > > > >
> > > > > > > > > > The starting point of the version bump and removal
> question
> > > is
> > > > > that
> > > > > > > > > > downstream projects may experience a tough time to adapt
> > new
> > > > > > > interfaces
> > > > > > > > > > while Flink keeps in 1.x versions so that users may
> expect
> > it
> > > > as
> > > > > an
> > > > > > > > easy
> > > > > > > > > > task. From my experience, it's really challenge to
> maintain
> > > > > > > > > > compatibility between multiple versions of Flink while
> > > > > significant
> > > > > > > > > changes
> > > > > > > > > > made but sharing 1.x version series - users may not be
> > aware
> > > > that
> > > > > > > it's
> > > > > > > > > > almost a major version bump.
> > > > > > > > > >
> > > > > > > > > > Best,
> > > > > > > > > > tison.
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > tison <wander4...@gmail.com> 于2022年6月6日周一 21:51写道:
> > > > > > > > > >
> > > > > > > > > >> 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
> > > > > > > > > >>> >
> > > > > > > > > >>>
> > > > > > > > > >>
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to