[
https://issues.apache.org/jira/browse/HADOOP-6668?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12865904#action_12865904
]
Doug Cutting commented on HADOOP-6668:
--------------------------------------
> if you really intend to make an interface audience-public please do so
> explicitly.
We need to make it clear to users what's stable and public: we don't want them
to start using something that's private or unstable without being well aware
that they're doing so. If an API appears in Javadoc as 'public class Foo' with
no further information then users might assume that it will be supported in the
future. So if we choose to make 'private' or 'evolving' the default for
otherwise unmarked public classes, then we should remove such classes from the
Javadoc.
> from the point of view of the user of an interface - unless is it declared as
> audience-public don't assume it is.
This is risky if they remain in the javadoc. Folks are accustomed to assuming
that documented APIs without other qualifications are APIs that will be
supported in the future.
If folks unwittingly use an evolving or private API and are broken by an
upgrade it doesn't help if we tell them they didn't read our fine print. If we
can get an "Evolving:" at the front of the javadoc for every evolving feature
(HADOOP-6675) and exclude all non-public APIs from javadoc then users would be
well forewarned.
We should use tools like JDiff to see what new APIs are introduced. We should
review the list of new APIs in each release and check that those that we might
not support long-term are clearly marked as evolving.
I don't fundamentally care what the default is. I do care what ends up in
javadoc and in releases. Getting javadoc and jdiff to exclude classes without
an explicit scope declaration seems perhaps a lot of work when we'll still need
to closely review what's in releases. If someone feels strongly that private
or evolving should be the default then perhaps they should work on getting
javadoc and jdiff to enforce that?
> Apply audience and stability annotations to classes in common
> -------------------------------------------------------------
>
> Key: HADOOP-6668
> URL: https://issues.apache.org/jira/browse/HADOOP-6668
> Project: Hadoop Common
> Issue Type: Sub-task
> Components: documentation
> Reporter: Tom White
> Assignee: Tom White
> Priority: Blocker
> Fix For: 0.21.0
>
> Attachments: common.interface-tw-annotated.txt, HADOOP-6668.patch,
> HADOOP-6668.patch, HADOOP-6668.patch, HADOOP-6668.patch, HADOOP-6668.patch,
> HADOOP-6668.patch
>
>
> Mark private implementation classes with the InterfaceAudience.Private or
> InterfaceAudience.LimitedPrivate annotation to exclude them from user Javadoc
> and JDiff.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.