I just want to throw in that we also need to rethink our policy towards
using @PublicEvolving.

We often introduce this easily (for every new feature) and rarely (almost
never) upgrade it to @Public. This kind of leads the idea behind stable API
guarantees ad absurdum.

I would suggest that we make @PublicEvolving an exception that needs a good
reason rather than for everything that is new (when we don't want to be
bothered with thinking about compatibility).


On Thu, May 14, 2020 at 1:05 PM Xintong Song <tonysong...@gmail.com> wrote:

> Thanks for the clarification.
> +1 for keeping the current guarantees for @Public.
>
> Thank you~
>
> Xintong Song
>
>
>
> On Thu, May 14, 2020 at 6:07 PM Till Rohrmann <trohrm...@apache.org>
> wrote:
>
> > Sorry for the confusion. @Public classes are guaranteed to be stable
> > between releases x.y.z and x.u.v (minor and bug fix release; naming is
> > indeed a bit off here) and we can break it with major releases (x.0.0 and
> > y.0.0).
> >
> > @Tison I would like to make what to include in the public API, hence what
> > to annotate with @Public and @PublicEvolving, a separate discussion.
> >
> > Cheers,
> > Till
> >
> > On Thu, May 14, 2020 at 11:48 AM tison <wander4...@gmail.com> wrote:
> >
> >> Thanks for starting this discussion!
> >>
> >> I agree turn on japicmp on PublicEvolving among bugfix releases is a nit
> >> win.
> >>
> >> @Xintong Song <tonysong...@gmail.com> I think @Public guarantee is good
> >> enough, the problem is a reachable 2.0 plan.
> >>
> >> My concern is more on classes that have no annotation but our developers
> >> regard as "something that should be stable". Previously I was required
> to
> >> keep compatibility of ClusterClient & HighAvailabilityServices because
> >> they
> >> might be depended on by user.
> >>
> >> Best,
> >> tison.
> >>
> >>
> >> Dawid Wysakowicz <dwysakow...@apache.org> 于2020年5月14日周四 下午5:08写道:
> >>
> >> > I also like the proposal for keeping the binary compatibility of
> >> > @PublicEvolving for bugfix releases.
> >> >
> >> > As for the @Public classes I think the current guarantees are good
> >> enough.
> >> >
> >> > Best,
> >> >
> >> > Dawid
> >> >
> >> > On 14/05/2020 10:49, Jingsong Li wrote:
> >> > > Thanks Till for starting this discussion.
> >> > >
> >> > > +1 for enabling the japicmp-maven-plugin for @PublicEvolving for bug
> >> fix
> >> > > releases.
> >> > > Bug fix should just be user imperceptible bug fix. Should not affect
> >> API
> >> > > and binary compatibility.
> >> > >
> >> > > And even PublicEvolving api change for "y" release, we should expose
> >> it
> >> > in
> >> > > dev mail list for discussing or a FLIP?
> >> > >
> >> > > BTW, public api can be changed by major releases? In annotation
> >> comments:
> >> > > "Only major releases (1.0, 2.0, 3.0) can break interfaces with this
> >> > > annotation".
> >> > >
> >> > > Best,
> >> > > Jingsong Lee
> >> > >
> >> > > On Thu, May 14, 2020 at 4:30 PM Till Rohrmann <trohrm...@apache.org
> >
> >> > wrote:
> >> > >
> >> > >> 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