Fyi: Ingo already implemented most of the FLIP by introducing the
ApiAnnotationRules.PUBLIC_API_METHODS_USE_ONLY_PUBLIC_API_TYPES and
.PUBLIC_EVOLVING_API_METHODS_USE_ONLY_PUBLIC_EVOLVING_API_TYPES [1] using
ArchUnit :-)

[1]
https://github.com/apache/flink/blob/master/flink-architecture-tests/src/test/java/org/apache/flink/architecture/rules/ApiAnnotationRules.java

Cheers,
Till

On Fri, Dec 3, 2021 at 11:59 AM Till Rohrmann <trohrm...@apache.org> wrote:

> 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