hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sean Busbey <bus...@apache.org>
Subject Re: [DISCUSS] VisibleForTesting annotation as it pertains to our API compatibility guidelines
Date Thu, 25 Jun 2020 22:48:21 GMT
Agree on restoring the member and then getting this done for 2.4.0.


On Thu, Jun 25, 2020, 15:02 Nick Dimiduk <ndimiduk@apache.org> 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 <ndimiduk@apache.org> wrote:
>
> > On Thu, Jun 25, 2020 at 12:36 PM Andrew Purtell <apurtell@apache.org>
> > 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 <ndimiduk@apache.org>
> wrote:
> >>
> >> > On Wed, Jun 24, 2020 at 3:19 PM Andrew Purtell <apurtell@apache.org>
> >> > 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 <busbey@apache.org>
> 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 <apurtell@apache.org>
> >> > 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 <
> >> ndimiduk@apache.org>
> >> > > > 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 <
> >> vjasani@apache.org>
> >> > > > > 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 <busbey@apache.org>
> >> 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
<
> >> > apurtell@apache.org>
> >> > > > > > 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 <
> >> > > busbey@apache.org>
> >> > > > > > > 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 <
> >> > > ndimiduk@apache.org>
> >> > > > > > > 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 <
> >> > > > > > > > > > > wellington.chevreuil@gmail.com>
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)
> >> <
> >> > > > > > > > > > > palomino219@gmail.com
> >> > > > > > > > > > > > >
> >> > > > > > > > > > > > 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
<
> >> wellington.chevreuil@gmail.com
> >> > >
> >> > > > > > > > > 于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
> >> > > > > > <
> >> > > > > > > > > > > > > > bharathv@apache.org>
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 <
> >> > > > > > > > > > ndimiduk@apache.org>
> >> > > > > > > > > > > > > > wrote:
> >> > > > > > > > > > > > > > >
> >> > > > > > > > > > > > > > > > On
Mon, Jun 22, 2020 at 3:45 PM Bharath
> >> > > > Vissapragada
> >> > > > > <
> >> > > > > > > > > > > > > > > bharathv@apache.org>
> >> > > > > > > > > > > > > > > > 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 <
> >> > > > > > > > > > busbey@apache.org>
> >> > > > > > > > > > > > > > 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 <
> >> > > > > > > > > > > ndimiduk@apache.org>
> >> > > > > > > > > > > > > > > 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
> >>
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message