Status
Current state: "Under discussion"
...
Page properties | |||
---|---|---|---|
|
...
JIRA: None yet
...
|
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 | ||||
---|---|---|---|---|
| ||||
@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 {} |
...