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 <cnaur...@hortonworks.com> 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 <a...@altiscale.com> 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 <rkan...@cloudera.com> 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 <yuzhih...@gmail.com> wrote: >>> >>>> +1 >>>> >>>> On Tue, Jan 13, 2015 at 1:47 PM, Abraham Elmahrek <a...@cloudera.com> >>>> 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.