I'd be much more comfortable with that policy if a patch had been approved by consensus that actually added the annotations to all unstable public classes. Without that, our users have no ability to see what's stable and what's not. This policy been subject to any vote, only the code that permits us to declare scopes has.
HADOOP-5073 had nearly a year of discussion before it was committed; that clause was in the first draft. Still, if you feel strongly about it, start a discussion and call a vote. In Hadoop, a whitelist of "this is public" makes a lot more sense to me than a blacklist of "this is private," but I can see why some users would disagree.
UnixUserGroupInformation.java was added as a public class in December of 2007, in
HADOOP-2299. At that point in time Java visibility was used to define back-compatibility constraints.
Really? The scope of our back-compatibility constraints was not defined, which I thought was the motivation of
HADOOP-5073. Asserting that this undocumented policy should apply to this issue until HADOOP-5073 gets even more discussion isn't a gap easily bridged for me. Is functionality lost when UnixUserGroupInformation is removed or is it redundant in the new code? Is the issue only that a public class was removed without first deprecating it?