Re: InterfaceStability and InterfaceAudience stability
Change from Private to Contract might not be an issue. Change from Public to Contract might be incompatible behavior irrespective of whether InterfaceAudience is evolving or stable. On Sat, Jan 17, 2015 at 12:01 AM, Allen Wittenauer wrote: > > 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 > 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 > 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 > 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 wrote: > >>> > +1 > > On Tue, Jan 13, 2015 at 1:47 PM, Abraham Elmahrek > 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. > > -- Karthik Kambatla Software Engineer, Cloudera Inc. http://five.sentenc.es
Re: InterfaceStability and InterfaceAudience stability
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 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 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 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 wrote: >>> +1 On Tue, Jan 13, 2015 at 1:47 PM, Abraham Elmahrek 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.
Re: InterfaceStability and InterfaceAudience stability
Agreed. Any one interested in reviewing/committing https://issues.apache.org/jira/browse/HADOOP-11476? On Thu, Jan 15, 2015 at 11:27 AM, Chris Nauroth 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 > 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 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 wrote: > > > > > >> +1 > > >> > > >> On Tue, Jan 13, 2015 at 1:47 PM, Abraham Elmahrek > > >> 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. >
Re: InterfaceStability and InterfaceAudience stability
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 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 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 wrote: > > > >> +1 > >> > >> On Tue, Jan 13, 2015 at 1:47 PM, Abraham Elmahrek > >> 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.
Re: InterfaceStability and InterfaceAudience stability
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 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 wrote: > >> +1 >> >> On Tue, Jan 13, 2015 at 1:47 PM, Abraham Elmahrek >> 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 >>> >>
Re: InterfaceStability and InterfaceAudience stability
Patch attached. I'm not sure what is necessary for changing the stability of class. Please review. On Tue, Jan 13, 2015 at 5:09 PM, Abraham Elmahrek wrote: > Thanks for your thoughts guys. I've created > https://issues.apache.org/jira/browse/HADOOP-11476 to follow through on > this. > > On Tue, Jan 13, 2015 at 3:55 PM, Karthik Kambatla > wrote: > >> +1 >> >> On Wed, Jan 14, 2015 at 4:04 AM, Robert Kanter >> 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 wrote: >> > >> > > +1 >> > > >> > > On Tue, Jan 13, 2015 at 1:47 PM, Abraham Elmahrek >> > > 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 >> > > > >> > > >> > >> >> >> >> -- >> Karthik Kambatla >> Software Engineer, Cloudera Inc. >> >> http://five.sentenc.es >> > >
Re: InterfaceStability and InterfaceAudience stability
Thanks for your thoughts guys. I've created https://issues.apache.org/jira/browse/HADOOP-11476 to follow through on this. On Tue, Jan 13, 2015 at 3:55 PM, Karthik Kambatla wrote: > +1 > > On Wed, Jan 14, 2015 at 4:04 AM, Robert Kanter > 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 wrote: > > > > > +1 > > > > > > On Tue, Jan 13, 2015 at 1:47 PM, Abraham Elmahrek > > > 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 > > > > > > > > > > > > > -- > Karthik Kambatla > Software Engineer, Cloudera Inc. > > http://five.sentenc.es >
Re: InterfaceStability and InterfaceAudience stability
+1 On Wed, Jan 14, 2015 at 4:04 AM, Robert Kanter 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 wrote: > > > +1 > > > > On Tue, Jan 13, 2015 at 1:47 PM, Abraham Elmahrek > > 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 > > > > > > -- Karthik Kambatla Software Engineer, Cloudera Inc. http://five.sentenc.es
Re: InterfaceStability and InterfaceAudience stability
+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 wrote: > +1 > > On Tue, Jan 13, 2015 at 1:47 PM, Abraham Elmahrek > 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 > > >
Re: InterfaceStability and InterfaceAudience stability
+1 On Tue, Jan 13, 2015 at 1:47 PM, Abraham Elmahrek 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 >
InterfaceStability and InterfaceAudience stability
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