I’m late on this, but I had this thought. Why not have a minimum
deprecation period of, say, 6 months, after which the API is eligible for
depreciation. At that point, a deprecation can be proposed on a DISCUSS
thread, with plenty of time given for discussion.

On Wed, Apr 24, 2019 at 9:56 PM Stack <st...@duboce.net> wrote:

> On Wed, Apr 24, 2019 at 9:04 PM Yu Li <car...@gmail.com> wrote:
>
> > ...
> > Thirdly, besides API deprecation, I think we should also discuss about
> the
> > rule for feature deprecation. We ever deprecated DLR, I could observe
> some
> > discussion on deprecating preemptive fast fail recently, and personally I
> > think there're some more features with few usage but making code base
> > complicated.
> >
> >
> I like this suggestion. Lets start a new topic on stuff to remove.
>
> Thanks Yu Li,
> S
>
>
>
>
> > Lastly, I think we need to emphasize on adding the incompatible flag and
> > release note to JIRA and updating document whenever a deprecated
> > feature/API is removed, which IMHO is not followed quite well recently.
> >
> > Thanks.
> >
> > Best Regards,
> > Yu
> >
> >
> > On Thu, 25 Apr 2019 at 10:24, 张铎(Duo Zhang) <palomino...@gmail.com>
> wrote:
> >
> > > Let's get a conclusion here?
> > >
> > > By default, we should try our best to keep the deprecated APIs for at
> > least
> > > a whole major release. All committers should have this in mind, when
> > there
> > > is patch which deprecates a public API, we should make sure that there
> is
> > > a @deprecated javadoc comment says on which version it is deprecated,
> and
> > > on which version it is expected to be removed.
> > >
> > > And due to the difficulties in real world, if you think the above rule
> > > makes it really hard to maintain a clean and stable code base, you can
> > > break the rule. But you should have a strong enough reason, and also, a
> > > nice written release note, and also update the upgrading section in our
> > ref
> > > guide.
> > >
> > > Is this OK?
> > >
> > > Thanks.
> > >
> > > 张铎(Duo Zhang) <palomino...@gmail.com> 于2019年4月24日周三 下午2:38写道:
> > >
> > > > Phoenix is a good example I'd say, we have done a lot of CP related
> > > > changes before releasing 2.0.0. But until now, Phoenix still has
> > troubles
> > > > to work together with 2.x, although we have already fixed several
> > > > compatibility issues... It shows that, usually people will take much
> > care
> > > > on the alpha and beta releases...
> > > >
> > > > Reid Chan <reidddc...@outlook.com> 于2019年4月24日周三 上午10:58写道:
> > > >
> > > >>
> > > >> As a strong coupling system to HBase, Phoenix has always been the
> > first
> > > >> sufferer, not only client APIs, but also some internal APIs.
> > > >> Maybe we can ask Phoenix dev team what do they think, and get some
> > > >> thoughts from them.
> > > >>
> > > >>
> > > >> --------------------------
> > > >>
> > > >> Best regards,
> > > >> R.C
> > > >>
> > > >>
> > > >>
> > > >> ________________________________________
> > > >> From: Sean Busbey <bus...@apache.org>
> > > >> Sent: 24 April 2019 10:16
> > > >> To: dev
> > > >> Subject: Re: [DISCUSS] Handling removal of deprecated methods and
> > > classes
> > > >>
> > > >> Isn't API stabilization what we have alpha and beta releases for?
> > > >>
> > > >> There was nearly a year between the first alpha version of 2.0.0 and
> > the
> > > >> GA
> > > >> release. Surely that should be a reasonable window for "trying out"
> a
> > > new
> > > >> major release.
> > > >>
> > > >> I don't like the idea of telling our downstreamers that they can't
> > > >> "really"
> > > >> use or rely on our major releases until several minor releases in.
> > > Either
> > > >> we should say "API locks at X.0.0" or we should say "any API change
> > > might
> > > >> happen at a major version".
> > > >>
> > > >> We can always document what went away between minor releases even if
> > we
> > > >> can't give a compile time warning in advance (e.g. for the 2.0.0 to
> > > 3.0.0
> > > >> user in your example Duo).
> > > >>
> > > >> We ended up trying to do that for 2.0.0 because so much had changed
> > from
> > > >> 1.0.0.
> > > >>
> > > >>
> > > >> On Tue, Apr 23, 2019, 20:51 张铎(Duo Zhang) <palomino...@gmail.com>
> > > wrote:
> > > >>
> > > >> > Ideally, we'd better keep the deprecated APIs for at least a whole
> > > major
> > > >> > version, that means user can upgrade to a new major release from
> any
> > > >> minor
> > > >> > releases, without seeing the removal of any non-deprecated APIs.
> > > >> >
> > > >> > For example, if we deprecate a method in 2.1.0, and remove it in
> > > 3.0.0,
> > > >> > then the users who upgrade to 3.0.0 from 2.0.0 will see the
> removal
> > of
> > > >> this
> > > >> > method, although the method is not deprecated on 2.0.0.
> > > >> >
> > > >> > But considering the current status of our project(as Sean
> mentioned
> > > >> above),
> > > >> > I do not think it is a good idea to fully follow the rule. One
> more
> > > >> thing
> > > >> > is that, for a new major release, usually the code base is not
> > stable
> > > >> > enough, need to be polished. Ideally it will be stable enough
> after
> > > one
> > > >> or
> > > >> > two minor releases. This means we will introduced new APIs and
> > > >> deprecated
> > > >> > old APIs in these minor releases. I think this is because that we
> do
> > > not
> > > >> > have enough test before making a new major release, but this is a
> > dead
> > > >> lock
> > > >> > problem. If we do not publish a new major release, users will not
> > try
> > > it
> > > >> > which means we can not get enough test, since HBase is widely used
> > > >> > everywhere and the release manager can only test a small set of
> core
> > > >> > features...
> > > >> >
> > > >> > For me, I think a better way is to not follow the rule for the
> first
> > > >> > several releases, i.e, we are free to remove APIs in the next
> major
> > > >> release
> > > >> > if they are deprecated in x.1.0 and x.2.0 releases. But once we
> > think
> > > >> the
> > > >> > APIs are stable enough, we should follow the rule again, i.e,
> newly
> > > >> > deprecated APIs should be retained in the next major release. For
> > > >> example,
> > > >> > for 2.x release, I think the stable minor release would be 2.3.0
> or
> > > >> 2.4.0,
> > > >> > which means if the APIs you used are not deprecated in these minor
> > > >> release,
> > > >> > then you can confirm that you can still use it in the next major
> > > >> release.
> > > >> > But for minor releases before it, for example, 2.1.x and 2.0.x,
> > you'd
> > > >> > better upgrade to 2.3.0 or 2.4.0 first, as the APIs you used may
> > > >> disappear
> > > >> > even if they are not deprecated.
> > > >> >
> > > >> > And we can add the above words in the upgrading part in our ref
> > guide.
> > > >> >
> > > >> > Thanks.
> > > >> >
> > > >> > Zach York <zyork.contribut...@gmail.com> 于2019年4月24日周三 上午3:04写道:
> > > >> >
> > > >> > > Always good to see the history of the discussion :) It looks
> like
> > > >> nothing
> > > >> > > really was decided last time (use caution if removing before a
> > full
> > > >> major
> > > >> > > version), hopefully we can come up with something more
> descriptive
> > > >> this
> > > >> > > time.
> > > >> > >
> > > >> > > I think the idea of having a tag/annotation for detailing when
> the
> > > >> > > method/feature is set for removal is a cool idea that we should
> > > >> > investigate
> > > >> > > further. If every deprecated method/feature had such an
> > annotation,
> > > it
> > > >> > > would be easy to build automation around generating release
> > > >> > > notes/documentation on what was removed in a particular version
> > > >> (instead
> > > >> > of
> > > >> > > relying on someone to manually update the release note/docs).
> > > >> > >
> > > >> > > I agree that major releases are taking a long time to release
> and
> > > that
> > > >> > > causes deprecated features to hang around for a long time, but I
> > > also
> > > >> > feel
> > > >> > > like moving it to >= 1 minor release is a bit too quick and
> would
> > > add
> > > >> to
> > > >> > > upgrade burden. Not everyone uses every minor version so they
> > might
> > > be
> > > >> > > taken unaware by the change or be less likely to upgrade as
> > quickly.
> > > >> > > I'm not necessarily against shortening the time. Maybe there is
> > some
> > > >> sort
> > > >> > > of middle ground (>=2 minor releases), but that gets a little
> > muddy
> > > >> and
> > > >> > > would need to be documented heavily.
> > > >> > >
> > > >> > > Thanks,
> > > >> > > Zach
> > > >> > >
> > > >> > > On Tue, Apr 23, 2019 at 9:37 AM Lars Francke <
> > > lars.fran...@gmail.com>
> > > >> > > wrote:
> > > >> > >
> > > >> > > > We had this exact same discussion four years ago (I thought it
> > was
> > > >> last
> > > >> > > > year :O ): <
> > > >> > > >
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> https://lists.apache.org/thread.html/bbdbf135abe7d8a0a4e7e9563f0bdc3dd6b555a0d3cdc1b1fdd688c2@1427759561@%3Cdev.hbase.apache.org%3E
> > > >> > > > >
> > > >> > > >
> > > >> > > > On Tue, Apr 23, 2019 at 6:32 PM Sean Busbey <
> bus...@apache.org>
> > > >> wrote:
> > > >> > > >
> > > >> > > > > I have the same interpretation as stack. However, I think
> the
> > > >> > > > > expectation back when 1.0.0 was rolling out was that we'd
> > have a
> > > >> > > > > regular cadence of major releases to use for removing things
> > > that
> > > >> had
> > > >> > > > > been deprecated. I don't think that cadence has actually
> > > happened.
> > > >> > > > >
> > > >> > > > > For example, here's a set of major releases and how long it
> > had
> > > >> been
> > > >> > > > > since the prior major release at the time it came out:
> > > >> > > > >
> > > >> > > > > * 0.94 - 4 months
> > > >> > > > > * 0.96 - 1.5 years
> > > >> > > > > * 0.98 - 4 months
> > > >> > > > > * 1.0 - 1 year
> > > >> > > > > * 2.0 - 3.25 years
> > > >> > > > >
> > > >> > > > > If we started a vote today 3.0 would be at 1 year. I suspect
> > > it's
> > > >> > more
> > > >> > > > > likely to end up landing around the 2 year mark.
> > > >> > > > >
> > > >> > > > > Given this rate and the fact that we've made exceptions in
> the
> > > >> past
> > > >> > > > > (e.g. removing things in 2.0 that were deprecated after 1.0
> > was
> > > >> > > > > already out), should we change our behavior or change what
> we
> > > >> > document
> > > >> > > > > to allow removal at a major version without such a long lead
> > > time?
> > > >> > > > >
> > > >> > > > > On Tue, Apr 23, 2019 at 10:17 AM Jan Hentschel
> > > >> > > > > <jan.hentsc...@ultratendency.com> wrote:
> > > >> > > > > >
> > > >> > > > > > Hi everyone,
> > > >> > > > > >
> > > >> > > > > > in the PR for HBASE-22262<
> > > >> https://github.com/apache/hbase/pull/162
> > > >> > >
> > > >> > > we
> > > >> > > > > noticed that there could be easily a misunderstanding on
> when
> > to
> > > >> > remove
> > > >> > > > > deprecated methods. In the book<
> > > >> > > > > http://hbase.apache.org/book.html#hbase.versioning.post10>
> it
> > > is
> > > >> > > > > documented “an API needs to be deprecated for a major
> version
> > > >> before
> > > >> > we
> > > >> > > > > will change/remove it.”. As the discussion on the PR shows
> it
> > > >> leaves
> > > >> > > some
> > > >> > > > > room for interpretation and should be made more specific,
> > > >> including
> > > >> > > some
> > > >> > > > > examples. I think we all agree that removing a method in
> 3.0.0
> > > is
> > > >> ok
> > > >> > > when
> > > >> > > > > it was deprecated back in 2.0.0, but what do we do with
> > methods
> > > or
> > > >> > > > classes
> > > >> > > > > which were deprecated in a minor or patch version? As an
> > > example,
> > > >> if
> > > >> > we
> > > >> > > > > deprecate a method in 2.3.0, should it be removed in 3.0.0
> or
> > > >> 4.0.0?
> > > >> > > > > >
> > > >> > > > > > Best, Jan
> > > >> > > > >
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > > >
> > >
> >
>

Reply via email to