+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