We currently have three levels of interface annotation:

- unannotated: stable public API
- DeveloperApi: A lower-level, unstable API intended for developers.
- Experimental: An experimental user-facing API.


After using this annotation for ~ 2 years, I would like to propose the
following changes:

1. Require explicitly annotation for public APIs. This reduces the chance
of us accidentally exposing private APIs.

2. Separate interface annotation into two components: one that describes
intended audience, and the other that describes stability, similar to what
Hadoop does. This allows us to define "low level" APIs that are stable,
e.g. the data source API (I'd argue this is the API that should be more
stable than end-user-facing APIs).

InterfaceAudience: Public, Developer

InterfaceStability: Stable, Experimental


What do you think?

Reply via email to