hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mikhail Antonov <olorinb...@gmail.com>
Subject Re: Semantic Versioning Worksheet
Date Fri, 26 Jun 2015 19:43:21 GMT
Thinking more on that.. What's the correlation between Public/Private
annotations and Deprecated annotation? I'm not sure SemVer has notion
of deprecation of non-public API. Should we say that we don't have it
too, or we do, but deprecation cycle of such API is more aggressive
than for public?


On Fri, Jun 26, 2015 at 12:31 PM, Mikhail Antonov <olorinbant@gmail.com> wrote:
> In branch-1.0 HTable is {Private, Stable} with comment -
> * <p>HTable is no longer a client API. Use {@link Table} instead. It is marked
> * InterfaceAudience.Private indicating that this is an HBase-internal
> class as defined in
> * <a href="https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/InterfaceClassification.html">Hadoop
> * Interface Classification</a>
> * There are no guarantees for backwards source / binary compatibility
> and methods or class can
> * change or go away without deprecation.
> So I think it's OK to remove such methods in 2.0. Otherwise, IMO,
> having to go thru full major version of deprecation kind of makes
> Private audience annotation meaningless?
> semver.org says:
> "Software using Semantic Versioning MUST declare a public API. This
> API could be declared in the code itself or exist strictly in
> documentation. However it is done, it should be precise and
> comprehensive.
> ..<skipped>
> Version 1.0.0 defines the public API. The way in which the version
> number is incremented after this release is dependent on this public
> API and how it changes."
> -Mikhail
> On Fri, Jun 26, 2015 at 11:20 AM, Sean Busbey <busbey@cloudera.com> wrote:
>> For a given major version, we should make sure to keep at least the promise
>> we made when it started.
>> For HBase 1.y, we said at 1.0 that we wouldn't remove public API without
>> having a full major version of deprecation. If only for that reason I agree
>> wholeheartedly on the principle.
>> But I thought HTable wasn't public API as of the 1.0 release. Is that not
>> correct?
>> --
>> Sean
>> On Jun 26, 2015 12:59 PM, "Stack" <stack@duboce.net> wrote:
>>> (Intent is that this is a long-lived thread where we work out our
>>> transition to semantic versioning).
>>> In HBASE-13214 "Remove deprecated and unused methods from HTable class",
>>> Ashish Singhi is doing nice cleanup work. His patch is removing deprecated
>>> methods from HTable for hbase-2.0.0.  A few methods up for removal are
>>> deprecated in hbase-1.1.0 but not in hbase-1.0.0. Ashish quotes Semantic
>>> Versioning:
>>> "...issue a new minor release with the deprecation in place. Before you
>>> completely remove the functionality in a new major release there should be
>>> at least one minor release that contains the deprecation so that users can
>>> smoothly transition to the new API."
>>> So, Ashish's patch is well within what SV allows but to my mind we need to
>>> be even more conservative if only during this period of transition to SV. I
>>> think we should not remove deprecated methods, especially high-profile
>>> client-facing ones, until a major version has elapsed with the method
>>> deprecated.
>>> Opinions?
>>> Thanks,
>>> St.Ack
> --
> Thanks,
> Michael Antonov

Michael Antonov

View raw message