>
> Do you know if Hadoop/HBase is also using a maven plugin to fail a build on
> breaking API changes? I would really like to have such a functionality in
> Flink, because we can spot breaking changes very early.


I don't think we have maven integration for this as of yet. We release
managers run a script $HBASE/dev-support/check_compatibility.sh that
generates a source and binary compatibility report. Issues are then
resolved during the period leading up to the release candidate.

I think Hadoop is relying on a "QA bot" which reads patches from JIRA and
> then does these
> checks?
>

The "QA bot" is just a collection of shell scripts used during "Patch
Available" status when a patch has been attached to JIRA or when a PR has
been submitted through github. The check_compatibility script could be
included in that automation, I don't see why not. Maybe you'd like to open
a YETUS ticket :)

I've pushed a branch to my own GitHub account with all classes I would make
> public annotated:
>
> https://github.com/apache/flink/compare/master...rmetzger:interface_stability_revapi?expand=1
> Since this is really hard to read, I (half-automated) generated the
> following list of annotated classes:
>
> https://github.com/rmetzger/flink/blob/interface_stability_revapi/annotations.md
>
> Please let me know if you would like to include or exclude classes from
> that list.
> Also, let me know which methods (in stable classes) you would mark as
> experimental.
>
>
>
>
> On Wed, Nov 11, 2015 at 10:17 AM, Aljoscha Krettek <aljos...@apache.org>
> wrote:
>
> > +1 for some way of declaring public interfaces as experimental.
> >
> > > On 10 Nov 2015, at 22:24, Stephan Ewen <se...@apache.org> wrote:
> > >
> > > I think we need anyways an annotation "@PublicExperimental".
> > >
> > > We can make this annotation such that it can be added to methods and
> can
> > > use that to declare
> > > Methods in an otherwise public class (such as DataSet) as experimental.
> > >
> > > On Tue, Nov 10, 2015 at 10:19 PM, Fabian Hueske <fhue...@gmail.com>
> > wrote:
> > >
> > >> I am not sure if we always should declare complete classes as
> > >> @PublicInterface.
> > >> This does definitely make sense for interfaces and abstract classes
> > such as
> > >> MapFunction or InputFormat but not necessarily for classes such as
> > DataSet
> > >> that we might want to extend by methods which should not immediately
> be
> > >> considered as stable.
> > >>
> > >>
> > >> 2015-11-10 21:36 GMT+01:00 Vasiliki Kalavri <
> vasilikikala...@gmail.com
> > >:
> > >>
> > >>> Yes, my opinion is that we shouldn't declare the Gelly API frozen
> yet.
> > >>> We can reconsider when we're closer to the 1.0 release, but if
> > possible,
> > >> I
> > >>> would give it some more time.
> > >>>
> > >>> -V.
> > >>>
> > >>> On 10 November 2015 at 21:06, Stephan Ewen <se...@apache.org> wrote:
> > >>>
> > >>>> I think no component should be forced to be stable. It should be an
> > >>>> individual decision for each component, and in some cases even for
> > >>>> individual classes.
> > >>>>
> > >>>> @Vasia If you think Gelly should not be declared interface-frozen,
> > then
> > >>>> this is a good point to raise and this should definitely be
> reflected.
> > >>>> There is no point in declaring certain APIs as frozen when we are
> not
> > >> yet
> > >>>> confident they have converged.
> > >>>>
> > >>>>
> > >>>>
> > >>>> On Tue, Nov 10, 2015 at 8:39 PM, Vasiliki Kalavri <
> > >>>> vasilikikala...@gmail.com
> > >>>>> wrote:
> > >>>>
> > >>>>> Hi Robert,
> > >>>>>
> > >>>>> thanks for bringing this up!
> > >>>>>
> > >>>>> I generally like the idea, but I wouldn't rush to annotate the
> Gelly
> > >>>>> classes yet. Gelly hasn't had that many users and I'm quite sure
> > >> we'll
> > >>>> find
> > >>>>> things to improve as it gets more exposure.
> > >>>>> TBH, I think it's quite unfair to force Gelly (also e.g. ML, Table)
> > >> to
> > >>> a
> > >>>>> "1.0" status (from an API stability point of view) since they're
> > >> really
> > >>>>> young compared to the other Flink APIs.
> > >>>>>
> > >>>>> Cheers,
> > >>>>> Vasia.
> > >>>>> On Nov 10, 2015 8:04 PM, "Robert Metzger" <rmetz...@apache.org>
> > >> wrote:
> > >>>>>
> > >>>>>> Hi everyone,
> > >>>>>>
> > >>>>>> I would like to bring this discussion back to your attention as we
> > >>> seem
> > >>>>> to
> > >>>>>> approach the 1.0 release of Flink.
> > >>>>>>
> > >>>>>> My suggestion back in January was to annotate all classes, but I
> > >>> think
> > >>>>>> it'll be more feasible to just annotate public classes.
> > >>>>>> So how about adding an annotation @PublicInterface
> > >>>>>>
> > >>>>>> For @PublicInterface, I would annotate classes such as: DataSet,
> > >>>>>> DataStream, ExecutionEnvironment, InputFormat, MapFunction,
> > >>> FileSystems
> > >>>>> but
> > >>>>>> also Gelly for example.
> > >>>>>>
> > >>>>>> I would not annotate as public components such as ML, Storm
> > >>>>> compatibility,
> > >>>>>> internals from runtime, yarn, optimizer.
> > >>>>>>
> > >>>>>>
> > >>>>>> From a tooling perspective, I've looked into different maven
> > >> plugins
> > >>>> and
> > >>>>>> java libraries and I found https://github.com/siom79/japicmp to
> be
> > >>> the
> > >>>>>> closest to our needs. I actually opened a pull request to the
> > >> project
> > >>>> to
> > >>>>>> allow inclusion/exclusion of classes based on annotations. Lets
> > >> hope
> > >>> it
> > >>>>>> gets merged.
> > >>>>>>
> > >>>>>> Does everybody agree with adding just the @PublicInterface
> > >>> annotation?
> > >>>>>>
> > >>>>>> Note that I'll add the annotation on a class-level, making the
> > >> entire
> > >>>>> class
> > >>>>>> either public or private (from a stability point of view). If we
> > >>> need a
> > >>>>>> more fine-grained annotation, we have to add a second
> > >>> @PrivateInterface
> > >>>>>> annotation which we'll only apply to certain methods.
> > >>>>>>
> > >>>>>> The next step is that I'm going to open a pull request with all
> > >>> classes
> > >>>>>> annotated that I consider public.
> > >>>>>>
> > >>>>>>
> > >>>>>> On Fri, Jan 30, 2015 at 7:10 PM, Henry Saputra <
> > >>>> henry.sapu...@gmail.com>
> > >>>>>> wrote:
> > >>>>>>
> > >>>>>>> I like the idea. But would love to have different name for the
> > >>>>>>> "LimitedPrivate" to make it easier to distinguish.
> > >>>>>>> How about "Module" or "Package" ?
> > >>>>>>>
> > >>>>>>> - Henry
> > >>>>>>>
> > >>>>>>> On Wed, Jan 28, 2015 at 1:29 AM, Robert Metzger <
> > >>> rmetz...@apache.org
> > >>>>>
> > >>>>>>> wrote:
> > >>>>>>>> I think in Hadoop they use LimitedPrivate for the different
> > >>>>> components
> > >>>>>> of
> > >>>>>>>> the project.
> > >>>>>>>> For example LimitedPrivate("yarn").
> > >>>>>>>> Here is a very good documentation on the topic:
> > >>>>>>>>
> > >>>>>>>
> > >>>>>>
> > >>>>>
> > >>>>
> > >>>
> > >>
> >
> https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/InterfaceClassification.html
> > >>>>>>>>
> > >>>>>>>> On Tue, Jan 27, 2015 at 3:58 PM, Alexander Alexandrov <
> > >>>>>>>> alexander.s.alexand...@gmail.com> wrote:
> > >>>>>>>>
> > >>>>>>>>> I don't get the difference between Private and LimitedPrivate,
> > >>> but
> > >>>>>>>>> otherwise seems like quite a nice idea.
> > >>>>>>>>>
> > >>>>>>>>> It will be also good if we can agree upon what these tags
> > >>> actually
> > >>>>>> mean
> > >>>>>>> and
> > >>>>>>>>> add this meaning to the documentation.
> > >>>>>>>>>
> > >>>>>>>>> 2015-01-27 15:46 GMT+01:00 Robert Metzger <
> > >> rmetz...@apache.org
> > >>>> :
> > >>>>>>>>>
> > >>>>>>>>>> Hi,
> > >>>>>>>>>>
> > >>>>>>>>>> Hadoop has annotations for tagging the stability and
> > >> audience
> > >>> of
> > >>>>>>> classes
> > >>>>>>>>>> and methods.
> > >>>>>>>>>>
> > >>>>>>>>>> Through that, you can have @InterfaceAudience.Public,
> > >> Private,
> > >>>>>>>>>> LimitedPrivate
> > >>>>>>>>>> and also @InterfaceStability.Evolving, Unstable, and Stable.
> > >>>>>>>>>>
> > >>>>>>>>>> I guess there are tools which allow to automatically check
> > >> if
> > >>>>>>> interfaces,
> > >>>>>>>>>> which are marked as Stable have been changed between
> > >> releases
> > >>>> (or
> > >>>>> by
> > >>>>>>> pull
> > >>>>>>>>>> requests).
> > >>>>>>>>>>
> > >>>>>>>>>> I think such annotations are crucial if we want to guarantee
> > >>>>>> interface
> > >>>>>>>>>> stability between releases.
> > >>>>>>>>>>
> > >>>>>>>>>> What do you think? Should we add those annotations? Which
> > >> one
> > >>>>> would
> > >>>>>>> you
> > >>>>>>>>>> like to add?
> > >>>>>>>>>>
> > >>>>>>>>>>
> > >>>>>>>>>> Robert
> > >>>>>>>>>>
> > >>>>>>>>>
> > >>>>>>>
> > >>>>>>
> > >>>>>
> > >>>>
> > >>>
> > >>
> >
> >
>

Reply via email to