It may work fine from a code perspective, but from a semantic and/or
human perspective, I think it’d be confusing and could lead to problems down
the road. Let’s say we add Contract after making this Stable. If we change
any Private’s to Contracts as a result, is that a break?
On Jan 15, 2015, at 11:27 AM, Chris Nauroth <[email protected]> wrote:
> Would it really be backwards-incompatible if we added new levels later?
> That seems counter-intuitive and contrary to this piece of documentation:
>
> http://docs.oracle.com/javase/specs/jls/se7/html/jls-13.html#jls-13.5.7
>
> Quoting:
>
> Annotation types behave exactly like any other interface. Adding or
> removing an element from an annotation type is analogous to adding or
> removing a method. There are important considerations governing other
> changes to annotation types, but these have no effect on the linkage of
> binaries by the Java Virtual Machine. Rather, such changes affect the
> behavior of reflective APIs that manipulate annotations. The documentation
> of these APIs specifies their behavior when various changes are made to the
> underlying annotation types.
>
> Adding or removing annotations has no effect on the correct linkage of the
> binary representations of programs in the Java programming language.
>
> Certainly removing existing levels would be backwards-incompatible.
>
> Chris Nauroth
> Hortonworks
> http://hortonworks.com/
>
>
> On Thu, Jan 15, 2015 at 6:14 AM, Allen Wittenauer <[email protected]> wrote:
>
>>
>> IIRC, it was marked as evolving because it wasn’t clear at the
>> time whether we would need to add more stability levels. (One of the key
>> inspirations for the stability levels—Sun’s ARC process—had more.)
>>
>> So I think it’s important to remember that if this gets changed to
>> stable, that effectively means it new levels can’t really get added...
>>
>> On Jan 13, 2015, at 2:34 PM, Robert Kanter <[email protected]> wrote:
>>
>>> +1
>>>
>>> Though it is kinda funny that the InterfaceStability annotation was
>> marked
>>> as Evolving :)
>>> @InterfaceStability.Evolving
>>> public class InterfaceStability {...}
>>>
>>>
>>> On Tue, Jan 13, 2015 at 2:21 PM, Ted Yu <[email protected]> wrote:
>>>
>>>> +1
>>>>
>>>> On Tue, Jan 13, 2015 at 1:47 PM, Abraham Elmahrek <[email protected]>
>>>> wrote:
>>>>
>>>>> Hey guys,
>>>>>
>>>>> I've noticed the InterfaceStability (
>>>>>
>>>>>
>>>>
>> https://github.com/apache/hadoop/blob/trunk/hadoop-common-project/hadoop-annotations/src/main/java/org/apache/hadoop/classification/InterfaceStability.java
>>>>> )
>>>>> and InterfaceAudience (
>>>>>
>>>>>
>>>>
>> https://github.com/apache/hadoop/blob/trunk/hadoop-common-project/hadoop-annotations/src/main/java/org/apache/hadoop/classification/InterfaceAudience.java
>>>>> )
>>>>> classes are marked as "Evolving". These really haven't changed much in
>>>> the
>>>>> last few years, so I was wondering if it is reasonable to mark them as
>>>>> stable?
>>>>>
>>>>> -Abe
>>>>>
>>>>
>>
>>
>
> --
> CONFIDENTIALITY NOTICE
> NOTICE: This message is intended for the use of the individual or entity to
> which it is addressed and may contain information that is confidential,
> privileged and exempt from disclosure under applicable law. If the reader
> of this message is not the intended recipient, you are hereby notified that
> any printing, copying, dissemination, distribution, disclosure or
> forwarding of this communication is strictly prohibited. If you have
> received this communication in error, please contact the sender immediately
> and delete it from your system. Thank You.