Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Status

Current state"Under discussion"

...

Page properties


...

JIRA: Not created yet

...

...

thread/vsn21hmmv1km2ybl3hq00p7nhrp1dnsw
JIRA

Jira
serverASF JIRA
columnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keyFLINK-25346

Release
1.15


Motivation

This FLIP is strongly related to FLIP-196 and its motivation also applies to this FLIP. Apart from the actual stability guarantees we provide there is another problem one could observe over the past couple of Flink releases. Aside from the initial set of @Public APIs, we almost never upgraded @Experimental@PublicEvolving and @PublicEvolving@Public and thereby not giving more reliable stability guarantees for our users.

...

For the time until graduation (@Experimental@PublicEvolving and @PublicEvolving@Public), I would propose per default a single two release cycles. Assuming a 4 months release cadence, this would give us 4 8 months for reaching the next stability level. In total we will have 8 16 months going from @Experimental to @Public. This might not be a lot of time but it will force the community to focus on newly introduced APIs and lead to fewer half baked stopgap solutions that become permanent.

...

Code Block
languagejava
titleExtended annotation
@Target(ElementType.TYPE)
public @interface PublicEvolving {

   FlinkVersion since();

   GraduationMiss[] missedGraduations();
}

public @interface GraduationMiss {
   FlinkVersion graduation();

   String reason();
}

// Usage
@PublicEvolving(
       since = FlinkVersion.V1_1211_0,
       missedGraduations = {
           @GraduationMiss(graduation = FlinkVersion.V1_13_0, reason = "foobar"),
           @GraduationMiss(graduation = FlinkVersion.V1_14_0, reason = "barfoo")
       })
public class Foobar {}

...