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

Reply via email to