Also I think a history of contribution of fixes or improvements for a thing in the state I described should count as much as someone on hand right at the time for immediate improvement. Either case shows real interest in the thing.
> On Apr 25, 2019, at 9:10 AM, Andrew Purtell <andrew.purt...@gmail.com> wrote: > > This is a good approach, I think. > > If something is incomplete or known to be broken, and no volunteer is willing > to work on it, then what choice do we have, really? Well, we can opt to do > nothing and perhaps at some future time someone shows up, that is an option > too, but if we want to take action without someone on hand willing to invest > in a fix, the right call and action any of us probably has time to take is > removal. > > >> On Apr 25, 2019, at 4:09 AM, Sean Busbey <bus...@apache.org> wrote: >> >> We're a do-acracy, which I think makes both of those things hard or >> impractical. >> >> Someone has to be available to do releasing with a regular period for >> X-month deprecation cycles to work. I doubt we can sustain e.g. something >> like "you have to find a dedicated RM for 6 months of monthly minor >> releases if you want to deprecate something". >> >> Similarly, how important a given feature is to our downstream users is >> important, but it's more important how many of them are willing to show up >> and do maintenance work on the feature. >> >> Take for example Distributed Log Replay. It was broken and either needed to >> be fixed or needed to go. It doesn't matter how many folks were using it >> despite our warnings about it's correctness or stability. When the call >> went out, no one showed up with the time to make it work correctly so it >> got yanked. >> >> >>> On Thu, Apr 25, 2019, 00:29 Misty Linville <mi...@apache.org> wrote: >>> >>> For features, I think we would need to understand the popularity of a given >>> feature by our user base, and that might vary wildly by feature. Do you >>> think it would be possible to generalize? >>> >>>>> 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 >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>>