Hi Konstantin and Francesco,

> * Are you planning to implement the required tests via ArchUnit?

If ArchUnit is the best tool for the job, then I will probably use it. But
I haven't investigated it yet.

> * Fixing existing "test failures" is in the scope of this FLIP, correct?

Yes I think that fixing the inconsistencies discovered by the to be added
tests is part of the FLIP.

> I think it would be nice that these docs are actually Javadocs, since our
PublicEvolving javadocs tend to be already complete. perhaps there is a way
we can play around the javadoc tool to generate only pages with @Public and
@PublicEvolving on it.

My plan was to state what the
different @Public, @PublicEvolving, @Experimental annotations mean in the
documentation. One can also find the definitions in the code, but I think
some users don't look too closely at the code and JavaDocs.

> TCKs

I agree that TCKs/test suites, which ensure that a certain behaviour does
not change, are important. However, I don't think that we have to define
all TCKs in the context of this FLIP since it would let the scope explode
and grind this effort to a halt. Instead, I would suggest that component
shepherds start follow up discussions on how they can ensure that Flink's
behaviour does not change for stable APIs and then add the corresponding
TCKs/test suites.

Cheers,
Till

On Fri, Dec 3, 2021 at 10:14 AM Francesco Guardiani <france...@ververica.com>
wrote:

> Hi Till,
>
> Thanks for starting this discussion, I think it's very beneficial for the
> community to have stable APIs, in particular to develop connectors and
> formats.
>
> A couple of comments:
>
> > I would suggest that we document these guarantees prominently under
> /docs/dev/api_stability.
>
> I think it would be nice that these docs are actually Javadocs, since our
> PublicEvolving javadocs tend to be already complete. perhaps there is a way
> we can play around the javadoc tool to generate only pages with @Public and
> @PublicEvolving on it.
>
> > Test Plan
>
> IMHO this proposal lacks what testing means from the user perspective: I
> think a discussion about API stability should go hand to hand with a
> discussion about providing TCKs to users. If the interfaces to build a
> Source are claimed to be stable, then, from the flink runtime point of
> view, a 3rd party source implementation is expected to have certain
> behaviors. On the other hand, as a 3rd party developer, I expect flink
> gives me some means to test if my source is compliant with the basic
> "expected behaviors". This is even more relevant when you're building a
> source for Table, where we have well defined behaviors through our
> "abilities" interfaces.
>
> TCKs also have another very important aspect: they serve as a very detailed
> documentation of all the behaviors that comes in/out a specific interface.
>
> Another thing to mention is that we already have some of these test, they
> just need to be polished to make them publicly available; e.g. look at the
> JsonBatchFileSystemITCase, it uses all the test cases from
> FileSystemITCaseBase to test that the format works correctly with the
> filesystem source.
>
> A TCK is something that can take quite some time to be considered
> "complete", so I'm not suggesting at all to get it done all at once inside
> this FLIP. But I think that if we bootstrap it in this FLIP, we can then
> progressively add new test cases every time we should add them internally,
> or when we need to rework the existing ones.
>
>
> FG
>
> On Fri, Dec 3, 2021 at 9:32 AM Konstantin Knauf <kna...@apache.org> wrote:
>
> > Hi Till,
> >
> > Thank you for picking up this topic. Explicit and consistent stability
> > guarantees are important for our users as well as any downstream project
> of
> > Apache Flink. Documenting the de-facto status quo and tackling existing
> > inconsistencies sounds like a good first step. So, +1 from my side.
> >
> > Two questions for clarity:
> > * Are you planning to implement the required tests via ArchUnit?
> > * Fixing existing "test failures" is in the scope of this FLIP, correct?
> >
> > Cheers,
> >
> > Konstantin
> >
> > On Thu, Dec 2, 2021 at 3:48 PM Till Rohrmann <trohrm...@apache.org>
> wrote:
> >
> > > Hi everyone,
> > >
> > > I would like to start a discussion about what kind of API stability
> > > guarantees we want to provide to our users. The Flink community already
> > > agreed on some stability guarantees, but these guarantees were only
> > > communicated via the ML and not properly documented [2]. Moreover, I've
> > > seen more and more complaints about breaking changes (some rightful and
> > > others not) on the ML recently [3] because we rarely mark our APIs as
> > > stable. This motivated this FLIP.
> > >
> > > The proposal first concentrates on source API stability guarantees.
> > Binary
> > > stability guarantees are explicitly left out for a follow-up
> discussion.
> > >
> > > In essence, the proposal follows our current stability guarantees while
> > > updating the guarantees for @PublicEvolving that we are already
> providing
> > > w/o having stated them. Moreover, this FLIP proposes some guidelines
> for
> > > determining the stability guarantees for an API object, how to evolve
> > them
> > > and some additional requirements for the return and parameter types of
> > > methods.
> > >
> > > All in all, I hope that this proposal is more reflecting our current
> > > understanding of stability guarantees than being controversial. One of
> > the
> > > outcomes of this FLIP should be to properly document these guarantees
> so
> > > that it is easily discoverable and understandable for our users.
> > Moreover,
> > > I hope that we can provide more stable APIs our users can rely and
> build
> > > upon.
> > >
> > > There will be a follow-up FLIP discussing the problem of how to make
> sure
> > > that APIs become stable over time.
> > >
> > > Looking forward to your feedback.
> > >
> > > [1] https://cwiki.apache.org/confluence/x/IJeqCw
> > > [2] https://lists.apache.org/thread/5jm25783oq5svyk7rr8g1gly2ooxqhjr
> > > [3] https://lists.apache.org/thread/kzhfc3t6omzo2kyo8zj9yxoh8twq5fzr
> > >
> > > Cheers,
> > > Till
> > >
> >
> >
> > --
> >
> > Konstantin Knauf
> >
> > https://twitter.com/snntrable
> >
> > https://github.com/knaufk
> >
>

Reply via email to