Attached file has interface classification for classes in hadoop common. This needs extensive review.
How InterfaceAudience classification was done:
- Classes that are expected to be used by the applications are tagged as Public
- Searched for uses of clasess from common in hdfs and mapreduce, with the exception of tests. The classes used in hdfs and mapreduce are classified as LimitedPrivate with projects set to (HDFS, MAPREDUCE).
- Rest of the classes are marked as Private.
How InterfaceStability classification was done:
- All Audience=Public classes are marked either Stable or Evolving based on its stability. All Evolving classes are candidates for eventually becoming Stable.
- All the super classes of Stable or Evolving classess, the return values and the parameters in public methods are recursively marked Stable/Evolving.
How labeling will be done:
- Classes that are private and unstable are not labelled.
- Classes that are marked as stable will need backward/forward compatibility tests.
- A separate jira is needed to track writing tests for backward/forward compatility of Stable classes.
- Labelng clarifies where a class can be used and the stability expectation. But there is no tool available to check if a class is being misused. Alternatively instead of tool, we could have separate jars (a jar for application, a jar for internal projects and a jar with all the classes?). Applications use a jar that includes only classes relevant to it, avoiding misuse of classes. tool or separate jars. Will open a separate jira track this.