Hi folks! I'd like us to start moving towards using the audience annotations from the Apache Yetus project[1] so we can remove the same kind of implementation code from our codebase.
For background, a while ago Apache Hadoop made some Java annotations to denote what APIs were appropriate for downstream use (rather than those intended for use by the project itself). This was to deal with the disconnect between the access modifiers available in Java and the project's structure wrt downstream. When HBase grew out of the Hadoop project, we adopted the same annotations[2]. Eventually, we moved to having our own copy of those classes and the attendant javadocs plugin for customizing our downstream facing docs[3]. Apache Yetus formed about about a year and a half ago to serve as a common point of support for tools that help projects handle community matters, you may recognize it from the precommit test framework we rely on to vet incoming patches. Yetus also provides a single implementation of the annotations and javadoc work that currently resides in both the Hadoop and HBase projects. Since 2.0 is a major version, we could just switch wholesale from our own implementations to the most recent Apache Yetus release. Alternatively, we could have 2.0 serve as a transitionary release line that annotates things with both our own and the Yetus versions of the Inteface Audience markings. Personally, I'd prefer just swapping things out all at once. This would have the happy side-effect of removing a cyclic dependency in our build (where one needs to have built our annotation processing javadoc plugin). What do folks think? -Sean [1]: http://yetus.apache.org/documentation/0.4.0/interface-classification/ [2]: http://hbase.apache.org/book.html#hbase.client.api.surface [3]: https://issues.apache.org/jira/browse/HBASE-12059