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?