Re: Private, LimitedPrivate and contrib modules

2009-11-05 Thread Sanjay Radia


Sorry for the late reply .. I missed in in my inbox.

On Sep 18, 2009, at 1:29 PM, Tom White wrote:


I'm trying to better understand the meaning of the annotations defined
in org.apache.hadoop.classification.InterfaceAudience.

1. Private is documented as being Intended for use only within Hadoop
itself. Does this mean the whole Hadoop project, or the subproject
that the annotated element is in? (Or another scope?)




Private means private to the subproject (ie private to HDFS, to MR,  
etc).

We should update the doc to clarify this.


2. Is a contrib module considered to be a part of the subproject? For
example, if something is marked as LimitedPrivate in Common say, with
intended audience MapReduce, can MapReduce contrib modules use it?



I believe the answer should be no.

Or, assuming the second meaning for 1, if something is marked as
Private in MapReduce, can MapReduce contrib modules use it?



Again I believe the answer should be no.

Any concrete examples that we can  use to examine/discuss this further


Thanks,
Tom





Re: Private, LimitedPrivate and contrib modules

2009-11-05 Thread Dhruba Borthakur
Hi sanjay,

Most of the contrib modules are in the same package as their containers. For
example, the fair share scheduler is in contrib but its package name is
org.apache.hadoop.mapred. Doesn't this mean that the fair-share scheduler
code can use LimitedPrivate methods from org.apache.hadoop.mapred package?

thanks,
dhruba

On Thu, Nov 5, 2009 at 11:05 AM, Sanjay Radia sra...@yahoo-inc.com wrote:


 Sorry for the late reply .. I missed in in my inbox.

 On Sep 18, 2009, at 1:29 PM, Tom White wrote:

  I'm trying to better understand the meaning of the annotations defined
 in org.apache.hadoop.classification.InterfaceAudience.

 1. Private is documented as being Intended for use only within Hadoop
 itself. Does this mean the whole Hadoop project, or the subproject
 that the annotated element is in? (Or another scope?)



 Private means private to the subproject (ie private to HDFS, to MR, etc).
 We should update the doc to clarify this.


 2. Is a contrib module considered to be a part of the subproject? For
 example, if something is marked as LimitedPrivate in Common say, with
 intended audience MapReduce, can MapReduce contrib modules use it?


 I believe the answer should be no.

 Or, assuming the second meaning for 1, if something is marked as
 Private in MapReduce, can MapReduce contrib modules use it?


 Again I believe the answer should be no.

 Any concrete examples that we can  use to examine/discuss this further


 Thanks,
 Tom





-- 
Connect to me at http://www.facebook.com/dhruba


Re: Private, LimitedPrivate and contrib modules

2009-11-05 Thread Sanjay Radia


On Nov 5, 2009, at 12:15 PM, Dhruba Borthakur wrote:


Hi sanjay,

Most of the contrib modules are in the same package as their  
containers. For
example, the fair share scheduler is in contrib but its package name  
is
org.apache.hadoop.mapred. Doesn't this mean that the fair-share  
scheduler
code can use LimitedPrivate methods from org.apache.hadoop.mapred  
package?





The package/java public private does not imply an API's visibility.
We have often made certain API's java-public because of java's  
limitations on visibility rules (eg. if java had
subpackage-private, then a number of apis would change from java- 
public to java-subpackage-private.


Generally contrib should be using API that are audience-public.

The FS/C schedulers are very good examples. I assume that it is using  
the scheduler's plugin interfaces. Is it using any other internal  
interfaces of MR?


Plugin interfaces or Abstract classes that are to be used by  
implementors are current planned to be marked

audience-public. (See AbstractFileSystem).
Makes sense?

As a side note:
Perhaps we need to add tag to the audience-public of applicationUse  
implementorsOfInteface or something like that.

(like the tag for limited-private).


sanjay


thanks,
dhruba

On Thu, Nov 5, 2009 at 11:05 AM, Sanjay Radia sra...@yahoo-inc.com  
wrote:



 Sorry for the late reply .. I missed in in my inbox.

 On Sep 18, 2009, at 1:29 PM, Tom White wrote:

  I'm trying to better understand the meaning of the annotations  
defined

 in org.apache.hadoop.classification.InterfaceAudience.

 1. Private is documented as being Intended for use only within  
Hadoop

 itself. Does this mean the whole Hadoop project, or the subproject
 that the annotated element is in? (Or another scope?)



 Private means private to the subproject (ie private to HDFS, to  
MR, etc).

 We should update the doc to clarify this.


 2. Is a contrib module considered to be a part of the subproject?  
For
 example, if something is marked as LimitedPrivate in Common say,  
with

 intended audience MapReduce, can MapReduce contrib modules use it?


 I believe the answer should be no.

 Or, assuming the second meaning for 1, if something is marked as
 Private in MapReduce, can MapReduce contrib modules use it?


 Again I believe the answer should be no.

 Any concrete examples that we can  use to examine/discuss this  
further



 Thanks,
 Tom





--
Connect to me at http://www.facebook.com/dhruba