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