Re: Usage of PublicEvolving annotation

2022-07-12 Thread Timo Walther

Hi all,

let me add a few more words on this topic:

The @PublicEvolving interface is kind of a staging annotation for 
@Public. We still need to be careful when to change classes with 
@PublicEvolving annotation. Usually, it still involves a proper 
deprecation process over 1-2 releases to give downstream projects time 
to adapt their implementation.


This is also the difference to @Experimental which can change 
*immediately*, whereas @PublicEvolving is rather a "be careful there are 
already users for this interface". The nice property about 
@PublicEvolving is that you don't need to wait a major release (from 1.x 
to 2.x which has not happened yet) to drop interfaces.


Regards,
Timo


On 11.07.22 07:27, Konstantin Knauf wrote:

Hi Blake,

thank you for reaching out. @PublicEvolving interface can only be changed
with a minor release of Apache Flink (e.g. 1.6). While the JavaDoc is
indeed ambiguous there was a FLIP recently that discussed this topic:
https://cwiki.apache.org/confluence/display/FLINK/FLIP-196%3A+Source+API+stability+guarantees

If you have time, feel free to open a PR to align the JavaDocs. Happy to
merge that.

Cheers,

Konstantin

Am So., 10. Juli 2022 um 07:07 Uhr schrieb Blake Wilson <
bl...@yellowpapersun.com>:


Hello,
I've noticed the usage of "PublicEvolving" in some Flink classes described
as follows

/**
  * Annotation to mark classes and methods for public use, but with evolving
interfaces.
  *
  * Classes and methods with this annotation are intended for public use
and have stable behavior.
  * However, their interfaces and signatures are not considered to be stable
and might be changed
  * across versions.
  *
  * This annotation also excludes methods and classes with evolving
interfaces / signatures within
  * classes annotated with {@link Public}.
  */

This seems to indicate that these classes can be changed even within a
patch version of Flink, though the statement "might be changed across
versions" is a bit ambiguous in this regard.

Is my statement correct? I'm wondering how important it is to preserve the
API in classes annotated like this. For example, would it be considered
appropriate to modify an interface if not doing so would require
introducing a second version of the interface to support a new feature?

This relates specifically to this change
https://github.com/apache/flink/pull/19417

Thank you








Re: Usage of PublicEvolving annotation

2022-07-10 Thread Konstantin Knauf
Hi Blake,

thank you for reaching out. @PublicEvolving interface can only be changed
with a minor release of Apache Flink (e.g. 1.6). While the JavaDoc is
indeed ambiguous there was a FLIP recently that discussed this topic:
https://cwiki.apache.org/confluence/display/FLINK/FLIP-196%3A+Source+API+stability+guarantees

If you have time, feel free to open a PR to align the JavaDocs. Happy to
merge that.

Cheers,

Konstantin

Am So., 10. Juli 2022 um 07:07 Uhr schrieb Blake Wilson <
bl...@yellowpapersun.com>:

> Hello,
> I've noticed the usage of "PublicEvolving" in some Flink classes described
> as follows
>
> /**
>  * Annotation to mark classes and methods for public use, but with evolving
> interfaces.
>  *
>  * Classes and methods with this annotation are intended for public use
> and have stable behavior.
>  * However, their interfaces and signatures are not considered to be stable
> and might be changed
>  * across versions.
>  *
>  * This annotation also excludes methods and classes with evolving
> interfaces / signatures within
>  * classes annotated with {@link Public}.
>  */
>
> This seems to indicate that these classes can be changed even within a
> patch version of Flink, though the statement "might be changed across
> versions" is a bit ambiguous in this regard.
>
> Is my statement correct? I'm wondering how important it is to preserve the
> API in classes annotated like this. For example, would it be considered
> appropriate to modify an interface if not doing so would require
> introducing a second version of the interface to support a new feature?
>
> This relates specifically to this change
> https://github.com/apache/flink/pull/19417
>
> Thank you
>


-- 
https://twitter.com/snntrable
https://github.com/knaufk


Usage of PublicEvolving annotation

2022-07-09 Thread Blake Wilson
Hello,
I've noticed the usage of "PublicEvolving" in some Flink classes described
as follows

/**
 * Annotation to mark classes and methods for public use, but with evolving
interfaces.
 *
 * Classes and methods with this annotation are intended for public use
and have stable behavior.
 * However, their interfaces and signatures are not considered to be stable
and might be changed
 * across versions.
 *
 * This annotation also excludes methods and classes with evolving
interfaces / signatures within
 * classes annotated with {@link Public}.
 */

This seems to indicate that these classes can be changed even within a
patch version of Flink, though the statement "might be changed across
versions" is a bit ambiguous in this regard.

Is my statement correct? I'm wondering how important it is to preserve the
API in classes annotated like this. For example, would it be considered
appropriate to modify an interface if not doing so would require
introducing a second version of the interface to support a new feature?

This relates specifically to this change
https://github.com/apache/flink/pull/19417

Thank you