For the LoadIncrementalHFiles class, the IA.Public annotation itself is a
problem. It should be IA.LimitPrivate(TOOLS). So I'm fine with either
adding the method back or not, the opinion of the release manager is
most important I think.

Thanks.

Viraj Jasani <[email protected]> 于2020年6月26日周五 下午9:50写道:

> Agree on replacing VFT in next 2.4.0 or 3.0.0 release and restoring the
> required
> method for now to unblock 2.3.0 RC1.
>
>
> On 2020/06/26 01:11:31, Andrew Purtell <[email protected]> wrote:
> > Sounds fine to me.
> >
> > My earlier objection was to talk of an HBase 3 followed by an HBase 4. We
> > don't need to do a full deprecation cycle across two major versions to
> > remove an annotation that never promised public access. (By definition,
> > tagged fields and members were VisibleForTesting (only). The 'only' was
> > implied, but I think a reasonable assumption and common knowledge.)
> >
> > On Thu, Jun 25, 2020 at 3:48 PM Sean Busbey <[email protected]> wrote:
> >
> > > Agree on restoring the member and then getting this done for 2.4.0.
> > >
> > >
> > > On Thu, Jun 25, 2020, 15:02 Nick Dimiduk <[email protected]> wrote:
> > >
> > > > And now by module,
> > > >
> > > > $ find . -iname '*.java' -exec grep -n '@VisibleForTesting' {} \+ |
> cut
> > > -d/
> > > > -f2 | sort | uniq -c
> > > >    6 hbase-backup
> > > >   87 hbase-client
> > > >   40 hbase-common
> > > >    1 hbase-endpoint
> > > >    7 hbase-hadoop-compat
> > > >    3 hbase-http
> > > >   18 hbase-mapreduce
> > > >    1 hbase-metrics-api
> > > >   24 hbase-procedure
> > > >   10 hbase-replication
> > > >  456 hbase-server
> > > >    2 hbase-thrift
> > > >    1 hbase-zookeeper
> > > >
> > > > I prefer we not make this change a prerequisite to 2.3. I would
> rather we
> > > > restore the one method modified by HBASE-24221 and do the work for
> > > > VisibleForTesting for 2.4.0.
> > > >
> > > > On Thu, Jun 25, 2020 at 12:57 PM Nick Dimiduk <[email protected]>
> > > wrote:
> > > >
> > > > > On Thu, Jun 25, 2020 at 12:36 PM Andrew Purtell <
> [email protected]>
> > > > > wrote:
> > > > >
> > > > >> I think we are in agreement except for a need to have a
> deprecation
> > > > cycle.
> > > > >> Just remove VisibleForTesting and replace with whatever
> alternative
> > > you
> > > > >> like. Certainly in the next minors. No strong opinion either way
> about
> > > > >> patch releases, leave as is?
> > > > >>
> > > > >
> > > > > Thanks Andrew and Bharath, I now better understand your positions.
> > > > >
> > > > > The annotation is fairly common in our codebase, from branch-2.3,
> > > > >
> > > > > $ find . -iname '*.java' -exec grep -n '@VisibleForTesting' {} \+
> | wc
> > > -l
> > > > >      668
> > > > >
> > > > > I don't have an easy way to cross-reference this with our AI
> > > annotations,
> > > > > but my concern is that any change we make here without a
> deprecation
> > > > cycle
> > > > > will be disruptive to users.
> > > > >
> > > > > On Thu, Jun 25, 2020 at 11:30 AM Nick Dimiduk <[email protected]
> >
> > > > wrote:
> > > > >>
> > > > >> > On Wed, Jun 24, 2020 at 3:19 PM Andrew Purtell <
> [email protected]
> > > >
> > > > >> > wrote:
> > > > >> >
> > > > >> > > It is possible some users may not understand what Guava's
> > > > >> > VisibleForTesting
> > > > >> > > implies, but those users are much more likely to be Java
> > > developers
> > > > or
> > > > >> > Java
> > > > >> > > developer adjacent, and familiar with what this fad entailed.
> Such
> > > > >> > tagging
> > > > >> > > was/is done specifically to indicate the exposed field or
> method
> > > was
> > > > >> only
> > > > >> > > made to allow test access to internals, as something less than
> > > > public.
> > > > >> > >
> > > > >> > > For us to treat such annotated fields and methods as public
> after
> > > > all
> > > > >> is
> > > > >> > > unnecessary, possibly surprising, and not semantically sound
> > > (IMHO).
> > > > >> > >
> > > > >> >
> > > > >> > I don't want to preserve use of VisibleForTesting as an
> indicator of
> > > > >> public
> > > > >> > API. I want to ensure that we're clear to our downstream users
> > > > >> > that its presence is not a factor in determining public API. For
> > > > >> example, I
> > > > >> > don't want to update our book to give any meaning to this
> > > annotation,
> > > > >> and I
> > > > >> > don't want to update our javadoc filters to take it into account
> > > when
> > > > >> > generating the various versions of javadoc that we publish. I
> want
> > > to
> > > > >> purge
> > > > >> > it from the discussion by annotating the methods it decorates
> with
> > > the
> > > > >> > symbols we do use to define our public API. The steps I propose
> > > above
> > > > >> are
> > > > >> > my suggestion of how we work toward that goal.
> > > > >> >
> > > > >> > Does anyone have a counter-proposal to the steps I've outlined
> > > above?
> > > > A
> > > > >> > resolution to this discussion is now the final blocker on
> 2.3.0rc1.
> > > > >> >
> > > > >> > Thanks,
> > > > >> > Nick
> > > > >> >
> > > > >> > On Wed, Jun 24, 2020 at 2:53 PM Sean Busbey <[email protected]>
> > > > wrote:
> > > > >> > >
> > > > >> > > > Andrew are you specifically opposed to using a deprecation
> cycle
> > > > to
> > > > >> > > > formally label as private anything that currently has a
> > > > >> > VisibleForTesting
> > > > >> > > > annotation?
> > > > >> > > >
> > > > >> > > > On Wed, Jun 24, 2020, 16:07 Andrew Purtell <
> [email protected]
> > > >
> > > > >> > wrote:
> > > > >> > > >
> > > > >> > > > > I am -1 on treating VisibleForTesting as public API.
> > > > Semantically
> > > > >> it
> > > > >> > > > makes
> > > > >> > > > > no sense.
> > > > >> > > > >
> > > > >> > > > > On Wed, Jun 24, 2020 at 12:22 PM Nick Dimiduk <
> > > > >> [email protected]>
> > > > >> > > > wrote:
> > > > >> > > > >
> > > > >> > > > > > I'd like to get this [DISCUSS] wrapped up so we can
> proceed
> > > > with
> > > > >> > > > release
> > > > >> > > > > > candidates.
> > > > >> > > > > >
> > > > >> > > > > > I don't see a clear consensus here. The conclusion I
> read is
> > > > >> that
> > > > >> > > > > > developers generally intended the VisibleForTesting
> > > annotation
> > > > >> to
> > > > >> > > > > indicate
> > > > >> > > > > > a method is not a part of our public API, but because we
> > > don't
> > > > >> > > > explicitly
> > > > >> > > > > > say this in our guide, we can't really stand on that
> for the
> > > > >> > > community.
> > > > >> > > > > >
> > > > >> > > > > > I propose we take the following, conservative steps
> going
> > > > >> forward:
> > > > >> > > > > >
> > > > >> > > > > > 1. restore any VisibleForTesting method signatures for
> > > 2.3.0,
> > > > >> treat
> > > > >> > > > this
> > > > >> > > > > as
> > > > >> > > > > > public API going forward.
> > > > >> > > > > > 2. annotate any existing methods carrying the
> > > > VisibleForTesting
> > > > >> > > > > annotation
> > > > >> > > > > > as Deprecated in 2.3.x+, for removal in 4.0.0
> > > > >> > > > > > 3. purge the VisibleForTesting annotation from our
> codebase
> > > > for
> > > > >> > > 4.0.0,
> > > > >> > > > > > involving:
> > > > >> > > > > > 3a. replace VisibleForTesting with IA.Private anywhere
> > > method
> > > > >> > > > visibility
> > > > >> > > > > > cannot be limited
> > > > >> > > > > > 3b. perhaps add a new Yetus check that would ban new
> use of
> > > > >> > > > > > VisibleForTesting
> > > > >> > > > > >
> > > > >> > > > > > Did I miss anything?
> > > > >> > > > > >
> > > > >> > > > > > Thanks,
> > > > >> > > > > > Nick
> > > > >> > > > > >
> > > > >> > > > > > On Wed, Jun 24, 2020 at 12:22 AM Viraj Jasani <
> > > > >> [email protected]>
> > > > >> > > > > wrote:
> > > > >> > > > > >
> > > > >> > > > > > > +1 to "be clear in javadoc" and to the fact that guava
> > > > >> dependency
> > > > >> > > > just
> > > > >> > > > > to
> > > > >> > > > > > > express intention which can be done through javadoc
> is not
> > > > >> > > > > > > required unless the library is capable of breaking
> > > > >> compilation of
> > > > >> > > > > > > downstream
> > > > >> > > > > > > projects if they use VFT annotated classes/methods
> saying
> > > > you
> > > > >> > can't
> > > > >> > > > use
> > > > >> > > > > > > this
> > > > >> > > > > > > (what if we have such fancy thing? :) ).
> > > > >> > > > > > >
> > > > >> > > > > > >
> > > > >> > > > > > > On 2020/06/23 20:01:40, Sean Busbey <
> [email protected]>
> > > > >> wrote:
> > > > >> > > > > > > > +1 to "do it in javadoc" unless there's some magic
> for
> > > > IDEs
> > > > >> > > brought
> > > > >> > > > > > about
> > > > >> > > > > > > > via the VFT annotation that I'm missing.
> > > > >> > > > > > > >
> > > > >> > > > > > > > On Tue, Jun 23, 2020, 13:04 Andrew Purtell <
> > > > >> > [email protected]>
> > > > >> > > > > > wrote:
> > > > >> > > > > > > >
> > > > >> > > > > > > > > I don't find the VisibleForTesting annotation
> > > provides a
> > > > >> lot
> > > > >> > of
> > > > >> > > > > > value.
> > > > >> > > > > > > It
> > > > >> > > > > > > > > became fashionable to use this annotation when a
> > > single
> > > > >> line
> > > > >> > of
> > > > >> > > > > > Javadoc
> > > > >> > > > > > > > > would serve the same purpose and not make yet
> another
> > > > >> > > dependency
> > > > >> > > > on
> > > > >> > > > > > > Guava.
> > > > >> > > > > > > > > My advice is to remove them all and replace with
> > > > Javadoc.
> > > > >> > > > > > > > >
> > > > >> > > > > > > > > Even if in an IA.Public or LimitedPrivate we can
> > > > decorate
> > > > >> > > > > individual
> > > > >> > > > > > > > > field/methods that are public but not intended to
> be
> > > > part
> > > > >> of
> > > > >> > > the
> > > > >> > > > > > public
> > > > >> > > > > > > > > portion of the API with a field or method level
> > > > IA.Private
> > > > >> > > > > > decoration.
> > > > >> > > > > > > It's
> > > > >> > > > > > > > > maybe not nice to do, but that would directly and
> > > > clearly
> > > > >> > > express
> > > > >> > > > > > > intent.
> > > > >> > > > > > > > >
> > > > >> > > > > > > > > On Tue, Jun 23, 2020 at 10:15 AM Sean Busbey <
> > > > >> > > [email protected]>
> > > > >> > > > > > > wrote:
> > > > >> > > > > > > > >
> > > > >> > > > > > > > > > I think the intent behind VisibleForTesting is
> > > clear:
> > > > >> the
> > > > >> > > > person
> > > > >> > > > > > > using
> > > > >> > > > > > > > > that
> > > > >> > > > > > > > > > annotation does not intend for it to be used by
> > > > >> > > downstreamers.
> > > > >> > > > > > > > > >
> > > > >> > > > > > > > > > However, our stated API promises are in terms
> of the
> > > > >> > > Interface
> > > > >> > > > > > > Audience
> > > > >> > > > > > > > > > annotations only. So I think a downsteamer who
> e.g.
> > > > used
> > > > >> > > > > automated
> > > > >> > > > > > > > > tooling
> > > > >> > > > > > > > > > to ensure they only used things marked IA.Public
> > > would
> > > > >> be
> > > > >> > > > correct
> > > > >> > > > > > to
> > > > >> > > > > > > be
> > > > >> > > > > > > > > > upset with us if we incompatibly changed an
> > > IA.Public
> > > > >> > member
> > > > >> > > > that
> > > > >> > > > > > is
> > > > >> > > > > > > > > > annotated VisibleForTesting.
> > > > >> > > > > > > > > >
> > > > >> > > > > > > > > > Given that VisibleForTesting is in guava and we
> go
> > > to
> > > > >> pains
> > > > >> > > to
> > > > >> > > > > > about
> > > > >> > > > > > > > > > exposing downstream to non-relocated guava I
> think
> > > it
> > > > >> would
> > > > >> > > be
> > > > >> > > > a
> > > > >> > > > > > bad
> > > > >> > > > > > > idea
> > > > >> > > > > > > > > > to use it when defining our public API.
> > > > >> > > > > > > > > >
> > > > >> > > > > > > > > > We should find places that use it, make sure
> they
> > > also
> > > > >> > carry
> > > > >> > > an
> > > > >> > > > > > > > > IA.Private
> > > > >> > > > > > > > > > if needed, and make sure our docs for
> developers are
> > > > >> clear
> > > > >> > > > about
> > > > >> > > > > > > which
> > > > >> > > > > > > > > > annotations carry meaning for downstreamers
> (i.e.
> > > only
> > > > >> > > > Interface
> > > > >> > > > > > > Audience
> > > > >> > > > > > > > > > and Interface Stability).
> > > > >> > > > > > > > > >
> > > > >> > > > > > > > > > On Tue, Jun 23, 2020, 11:29 Nick Dimiduk <
> > > > >> > > [email protected]>
> > > > >> > > > > > > wrote:
> > > > >> > > > > > > > > >
> > > > >> > > > > > > > > > > My hope is that we can clarify our policy and
> > > update
> > > > >> the
> > > > >> > > book
> > > > >> > > > > > > > > > accordingly.
> > > > >> > > > > > > > > > >
> > > > >> > > > > > > > > > > On Tue, Jun 23, 2020 at 9:01 AM Wellington
> > > > Chevreuil <
> > > > >> > > > > > > > > > > [email protected]> wrote:
> > > > >> > > > > > > > > > >
> > > > >> > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > For the current problem, what is the
> class? I
> > > > >> think
> > > > >> > > > > changing
> > > > >> > > > > > a
> > > > >> > > > > > > > > method
> > > > >> > > > > > > > > > > > > signature for a protected method will only
> > > break
> > > > >> the
> > > > >> > > > > > > compatibility
> > > > >> > > > > > > > > > when
> > > > >> > > > > > > > > > > > > users extend the class.
> > > > >> > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > This specific case is
> > > > >> > > > > > *LoadIncrementalHFiles.tryAtomicRegionLoad,
> > > > >> > > > > > > > > > *mostly
> > > > >> > > > > > > > > > > > an end user tool, not likely to be extended.
> > > Bring
> > > > >> back
> > > > >> > > the
> > > > >> > > > > > > original
> > > > >> > > > > > > > > > > method
> > > > >> > > > > > > > > > > > would not be much of an issue, though, I
> guess
> > > the
> > > > >> > > > discussion
> > > > >> > > > > > is
> > > > >> > > > > > > more
> > > > >> > > > > > > > > > on
> > > > >> > > > > > > > > > > > how to interpret @VisibleForTesting in
> general.
> > > > >> > > > > > > > > > > >
> > > > >> > > > > > > > > > > > Em ter., 23 de jun. de 2020 às 15:42, 张铎(Duo
> > > > Zhang)
> > > > >> <
> > > > >> > > > > > > > > > > [email protected]
> > > > >> > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > escreveu:
> > > > >> > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > Technically, I do not think the developer
> who
> > > > >> makes a
> > > > >> > > > field
> > > > >> > > > > > or
> > > > >> > > > > > > > > method
> > > > >> > > > > > > > > > > > > public for an IA.Public class but marks it
> > > with
> > > > >> > > > > > > @VisibleForTesting,
> > > > >> > > > > > > > > > > > > actually wants to expose this field or
> method
> > > to
> > > > >> end
> > > > >> > > > users.
> > > > >> > > > > > > > > > > > > But this could be a problem for end
> users, so
> > > I
> > > > >> think
> > > > >> > > we
> > > > >> > > > > > should
> > > > >> > > > > > > > > avoid
> > > > >> > > > > > > > > > > > doing
> > > > >> > > > > > > > > > > > > this on an IA.Public class in the future.
> > > > >> > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > For the current problem, what is the
> class? I
> > > > >> think
> > > > >> > > > > changing
> > > > >> > > > > > a
> > > > >> > > > > > > > > method
> > > > >> > > > > > > > > > > > > signature for a protected method will only
> > > break
> > > > >> the
> > > > >> > > > > > > compatibility
> > > > >> > > > > > > > > > when
> > > > >> > > > > > > > > > > > > users extend the class. In fact, most of
> the
> > > > >> classes
> > > > >> > in
> > > > >> > > > our
> > > > >> > > > > > > public
> > > > >> > > > > > > > > > API
> > > > >> > > > > > > > > > > > are
> > > > >> > > > > > > > > > > > > not designed to be extended by end users.
> > > > >> > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > Thanks.
> > > > >> > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > Wellington Chevreuil <
> > > > >> [email protected]
> > > > >> > >
> > > > >> > > > > > > > > 于2020年6月23日周二
> > > > >> > > > > > > > > > > > > 下午10:33写道:
> > > > >> > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > My opinion expressed on the 2.3.0RC0
> thread
> > > > was
> > > > >> > that
> > > > >> > > > > > > > > > > @VisibleForTesting
> > > > >> > > > > > > > > > > > > > would flag class/method/variable as
> > > private. I
> > > > >> > > believe
> > > > >> > > > > the
> > > > >> > > > > > > > > > annotation
> > > > >> > > > > > > > > > > > > label
> > > > >> > > > > > > > > > > > > > is pretty suggestive and (I also
> believe)
> > > it's
> > > > >> > common
> > > > >> > > > > sense
> > > > >> > > > > > > that
> > > > >> > > > > > > > > it
> > > > >> > > > > > > > > > > > > should
> > > > >> > > > > > > > > > > > > > be treated as private by developers. I
> don't
> > > > >> think
> > > > >> > > the
> > > > >> > > > > fact
> > > > >> > > > > > > it's
> > > > >> > > > > > > > > > > > > > omitted from our guidelines changes
> > > perception
> > > > >> of
> > > > >> > it.
> > > > >> > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > Em ter., 23 de jun. de 2020 às 01:15,
> > > Bharath
> > > > >> > > > > Vissapragada
> > > > >> > > > > > <
> > > > >> > > > > > > > > > > > > > [email protected]> escreveu:
> > > > >> > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > Sorry, I should've been clearer. It's
> the
> > > > >> former.
> > > > >> > > My
> > > > >> > > > > > point
> > > > >> > > > > > > is,
> > > > >> > > > > > > > > > any
> > > > >> > > > > > > > > > > > > method
> > > > >> > > > > > > > > > > > > > > tagged with @VisibleForTesting is only
> > > > >> intended
> > > > >> > for
> > > > >> > > > > > testing
> > > > >> > > > > > > > > > > purposes
> > > > >> > > > > > > > > > > > > and
> > > > >> > > > > > > > > > > > > > > should _not_ be considered public, its
> > > > >> visibility
> > > > >> > > > scope
> > > > >> > > > > > is
> > > > >> > > > > > > > > wider
> > > > >> > > > > > > > > > > than
> > > > >> > > > > > > > > > > > > > > necessary only because it was needed
> by
> > > some
> > > > >> test
> > > > >> > > > > method.
> > > > >> > > > > > > > > That's
> > > > >> > > > > > > > > > > how
> > > > >> > > > > > > > > > > > > I'd
> > > > >> > > > > > > > > > > > > > > interpret it (Actually, that's what I
> > > > thought
> > > > >> you
> > > > >> > > > > meant,
> > > > >> > > > > > > now
> > > > >> > > > > > > > > I'm
> > > > >> > > > > > > > > > > > > confused
> > > > >> > > > > > > > > > > > > > > :-)).
> > > > >> > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > On Mon, Jun 22, 2020 at 4:02 PM Nick
> > > > Dimiduk <
> > > > >> > > > > > > > > > [email protected]>
> > > > >> > > > > > > > > > > > > > wrote:
> > > > >> > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > > On Mon, Jun 22, 2020 at 3:45 PM
> Bharath
> > > > >> > > > Vissapragada
> > > > >> > > > > <
> > > > >> > > > > > > > > > > > > > > [email protected]>
> > > > >> > > > > > > > > > > > > > > > wrote:
> > > > >> > > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > > > I share the same opinion. Infact
> > > hadoop
> > > > >> (from
> > > > >> > > > which
> > > > >> > > > > > our
> > > > >> > > > > > > > > > > > annotations
> > > > >> > > > > > > > > > > > > > are
> > > > >> > > > > > > > > > > > > > > > > derived I believe), talks about
> this,
> > > > >> "Also,
> > > > >> > > > > certain
> > > > >> > > > > > > APIs
> > > > >> > > > > > > > > are
> > > > >> > > > > > > > > > > > > > annotated
> > > > >> > > > > > > > > > > > > > > > as
> > > > >> > > > > > > > > > > > > > > > > @VisibleForTesting (from
> > > > com.google.common
> > > > >> > > > > > > > > > > > > > > > .annotations.VisibleForTesting)
> > > > >> > > > > > > > > > > > > > > > > - these are meant to be used
> strictly
> > > > for
> > > > >> > unit
> > > > >> > > > > tests
> > > > >> > > > > > > and
> > > > >> > > > > > > > > > should
> > > > >> > > > > > > > > > > > be
> > > > >> > > > > > > > > > > > > > > > treated
> > > > >> > > > > > > > > > > > > > > > > as “Private” APIs."
> > > > >> > > > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > >
> > > > >> > > > > > > > > > > >
> > > > >> > > > > > > > > > >
> > > > >> > > > > > > > > >
> > > > >> > > > > > > > >
> > > > >> > > > > > >
> > > > >> > > > > >
> > > > >> > > > >
> > > > >> > > >
> > > > >> > >
> > > > >> >
> > > > >>
> > > >
> > >
> https://hadoop.apache.org/docs/r3.1.2/hadoop-project-dist/hadoop-common/InterfaceClassification.html
> > > > >> > > > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > > Sorry Bharath, I don't follow. Are
> you
> > > > >> saying
> > > > >> > "I
> > > > >> > > > > share
> > > > >> > > > > > > the
> > > > >> > > > > > > > > > > opinion
> > > > >> > > > > > > > > > > > > that
> > > > >> > > > > > > > > > > > > > > the
> > > > >> > > > > > > > > > > > > > > > VisibleForTesting annotation should
> be
> > > > >> > considered
> > > > >> > > > as
> > > > >> > > > > > > > > defining a
> > > > >> > > > > > > > > > > > > method
> > > > >> > > > > > > > > > > > > > as
> > > > >> > > > > > > > > > > > > > > > IA.Private," and this is an omission
> > > from
> > > > >> our
> > > > >> > > > > community
> > > > >> > > > > > > > > > > guidelines
> > > > >> > > > > > > > > > > > > > > > document? Or are you saying "no, it
> does
> > > > not
> > > > >> > > count
> > > > >> > > > as
> > > > >> > > > > > an
> > > > >> > > > > > > > > > > interface
> > > > >> > > > > > > > > > > > > > > audience
> > > > >> > > > > > > > > > > > > > > > marker," and we are obliged to treat
> > > > methods
> > > > >> > such
> > > > >> > > > as
> > > > >> > > > > in
> > > > >> > > > > > > this
> > > > >> > > > > > > > > > > > example
> > > > >> > > > > > > > > > > > > as
> > > > >> > > > > > > > > > > > > > > > public API?
> > > > >> > > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > > Thanks,
> > > > >> > > > > > > > > > > > > > > > Nick
> > > > >> > > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > > On Mon, Jun 22, 2020 at 10:15 AM
> Sean
> > > > >> Busbey <
> > > > >> > > > > > > > > > [email protected]>
> > > > >> > > > > > > > > > > > > > wrote:
> > > > >> > > > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > > > > Yeah I would say no as well. We
> > > should
> > > > >> make
> > > > >> > > > clear
> > > > >> > > > > > on
> > > > >> > > > > > > our
> > > > >> > > > > > > > > > dev
> > > > >> > > > > > > > > > > > > guide
> > > > >> > > > > > > > > > > > > > > that
> > > > >> > > > > > > > > > > > > > > > > you
> > > > >> > > > > > > > > > > > > > > > > > also should be marking those
> things
> > > > >> with an
> > > > >> > > > > > Interface
> > > > >> > > > > > > > > > > Audience
> > > > >> > > > > > > > > > > > > > > marking
> > > > >> > > > > > > > > > > > > > > > if
> > > > >> > > > > > > > > > > > > > > > > > you don't intend them to be at
> the
> > > > >> > downstream
> > > > >> > > > API
> > > > >> > > > > > > > > > visibility
> > > > >> > > > > > > > > > > of
> > > > >> > > > > > > > > > > > > the
> > > > >> > > > > > > > > > > > > > > > > parent
> > > > >> > > > > > > > > > > > > > > > > > class.
> > > > >> > > > > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > > > > (IIRC we also use
> VisibleForTesting
> > > in
> > > > >> > > > IA.Private
> > > > >> > > > > > > classes
> > > > >> > > > > > > > > > to
> > > > >> > > > > > > > > > > > > > > > proactively
> > > > >> > > > > > > > > > > > > > > > > > explain why some internal
> looking
> > > > >> member is
> > > > >> > > at
> > > > >> > > > a
> > > > >> > > > > > > wider
> > > > >> > > > > > > > > Java
> > > > >> > > > > > > > > > > > > access
> > > > >> > > > > > > > > > > > > > > > > scope.)
> > > > >> > > > > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > > > > On Mon, Jun 22, 2020, 11:39 Nick
> > > > >> Dimiduk <
> > > > >> > > > > > > > > > > [email protected]>
> > > > >> > > > > > > > > > > > > > > wrote:
> > > > >> > > > > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > > > > > Hello,
> > > > >> > > > > > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > > > > > This came up over on the
> 2.3.0RC0
> > > > >> thread,
> > > > >> > > so
> > > > >> > > > > > let's
> > > > >> > > > > > > open
> > > > >> > > > > > > > > > it
> > > > >> > > > > > > > > > > > for
> > > > >> > > > > > > > > > > > > > > proper
> > > > >> > > > > > > > > > > > > > > > > > > discussion. In that context,
> we
> > > > >> observe
> > > > >> > > > method
> > > > >> > > > > > > > > signature
> > > > >> > > > > > > > > > > > > changes
> > > > >> > > > > > > > > > > > > > > to a
> > > > >> > > > > > > > > > > > > > > > > > > method marked with the Guava
> > > > >> > > > VisibleForTesting
> > > > >> > > > > > > > > > annotation.
> > > > >> > > > > > > > > > > > The
> > > > >> > > > > > > > > > > > > > > method
> > > > >> > > > > > > > > > > > > > > > > is
> > > > >> > > > > > > > > > > > > > > > > > a
> > > > >> > > > > > > > > > > > > > > > > > > protected method on a
> IA.Public
> > > > class.
> > > > >> > > There
> > > > >> > > > is
> > > > >> > > > > > no
> > > > >> > > > > > > > > > > > method-level
> > > > >> > > > > > > > > > > > > > IA
> > > > >> > > > > > > > > > > > > > > > > > > annotation.
> > > > >> > > > > > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > > > > > Do we consider the
> > > VisibleForTesting
> > > > >> > > > annotation
> > > > >> > > > > > as
> > > > >> > > > > > > a
> > > > >> > > > > > > > > > > > specifier
> > > > >> > > > > > > > > > > > > > for
> > > > >> > > > > > > > > > > > > > > > our
> > > > >> > > > > > > > > > > > > > > > > > > compatibility guidelines?
> > > > >> > > > > > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > > > > > I am of the opinion that no,
> it is
> > > > >> not an
> > > > >> > > > > > > > > > InterfaceAudience
> > > > >> > > > > > > > > > > > > > > > annotation,
> > > > >> > > > > > > > > > > > > > > > > > and
> > > > >> > > > > > > > > > > > > > > > > > > so it is not applicable for
> > > defining
> > > > >> our
> > > > >> > > > public
> > > > >> > > > > > > API.
> > > > >> > > > > > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > > > > > What do you think?
> > > > >> > > > > > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > > > > > Thanks,
> > > > >> > > > > > > > > > > > > > > > > > > Nick
> > > > >> > > > > > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > > >
> > > > >> > > > > > > > > > > > >
> > > > >> > > > > > > > > > > >
> > > > >> > > > > > > > > > >
> > > > >> > > > > > > > > >
> > > > >> > > > > > > > >
> > > > >> > > > > > > > >
> > > > >> > > > > > > > > --
> > > > >> > > > > > > > > Best regards,
> > > > >> > > > > > > > > Andrew
> > > > >> > > > > > > > >
> > > > >> > > > > > > > > Words like orphans lost among the crosstalk,
> meaning
> > > > torn
> > > > >> > from
> > > > >> > > > > > truth's
> > > > >> > > > > > > > > decrepit hands
> > > > >> > > > > > > > >    - A23, Crosstalk
> > > > >> > > > > > > > >
> > > > >> > > > > > > >
> > > > >> > > > > > >
> > > > >> > > > > >
> > > > >> > > > >
> > > > >> > > > >
> > > > >> > > > > --
> > > > >> > > > > Best regards,
> > > > >> > > > > Andrew
> > > > >> > > > >
> > > > >> > > > > Words like orphans lost among the crosstalk, meaning torn
> from
> > > > >> > truth's
> > > > >> > > > > decrepit hands
> > > > >> > > > >    - A23, Crosstalk
> > > > >> > > > >
> > > > >> > > >
> > > > >> > >
> > > > >> > >
> > > > >> > > --
> > > > >> > > Best regards,
> > > > >> > > Andrew
> > > > >> > >
> > > > >> > > Words like orphans lost among the crosstalk, meaning torn from
> > > > truth's
> > > > >> > > decrepit hands
> > > > >> > >    - A23, Crosstalk
> > > > >> > >
> > > > >> >
> > > > >>
> > > > >>
> > > > >> --
> > > > >> Best regards,
> > > > >> Andrew
> > > > >>
> > > > >> Words like orphans lost among the crosstalk, meaning torn from
> truth's
> > > > >> decrepit hands
> > > > >>    - A23, Crosstalk
> > > > >>
> > > > >
> > > >
> > >
> >
> >
> > --
> > Best regards,
> > Andrew
> >
> > Words like orphans lost among the crosstalk, meaning torn from truth's
> > decrepit hands
> >    - A23, Crosstalk
> >
>

Reply via email to