Dear community,

in the latest 1.10.1 bug fix release I introduced a binary incompatible
change to a class which is annotated with @PublicEvolving [1]. While this
change is technically ok since we only provide API and binary compatibility
for @Public classes across releases, it raised the question whether we
can't do better.

For our users it might be surprising and really annoying that they cannot
simply upgrade to the latest bug fix release without recompiling the
program or even having to change the source code of an application. I
believe we would provide a much better experience if we ensured that bug
fix releases maintain API and binary compatibility also for @PublicEvolving
classes. Hence my proposal would be to tighten the stability guarantees the
following way:

* API + binary compatibility for @Public classes across all releases (x.y.z
is compatible to u.v.w)
* API + binary compatibility for @PublicEvolving classes for all bug fix
releases in a minor release (x.y.z is compatible to x.y.u)

This would entail that we can change @PublicEvolving classes only across
minor/major releases.

Practically this would mean that we enable the japicmp-maven-plugin
for @PublicEvolving for bug fix releases.

What do you think?

[1]
https://lists.apache.org/thread.html/r293768d13d08149d756e0bf91be52372edb444c317535d1d5a496c3e%40%3Cdev.flink.apache.org%3E

Cheers,
Till

Reply via email to