I would be very upset and surprised as a user or developer if Geode never has any major releases.
Using semver as the main argument to not remove a feature that has been deprecated for 7 years is silly. Let’s have a major release! 2.0 by summer. On Fri, Apr 5, 2019 at 8:38 AM Jacob Barrett <jbarr...@pivotal.io> wrote: > I figured I’d take this discussion up with the experts and founding > fathers. ;) > > https://github.com/semver/semver/issues/508 > > -jake > > > > On Apr 4, 2019, at 8:23 AM, Anthony Baker <aba...@pivotal.io> wrote: > > > > Let’s separate the discussion into these parts: > > > > - What does SemVer say and how do we apply it > > - When should we remove deprecated code > > - Should we remove the admin source code entirely > > > > > > 1) SemVer > > > > Straight from the spec: > > > >> Major version X (X.y.z | X > 0) MUST be incremented if any backwards > incompatible changes are introduced to the public API > > > > @Jens - doesn’t “new major version” imply n.0.0? > > > > Downstream consumers of SemVer-compliant software expect that “backwards > compatibility” means they can upgrade to a new minor or patch release and > things will continue to just work—no changes required. If you think about > how we upgrade our library dependencies we have that same expectation. > When I upgrade from log4j 2.11.1 to log4j 2.11.2 I don’t expect to have to > modify any source code. > > > > IMO, the clarity that SemVer brings to the question of “Can I upgrade > safely?” Is its main benefit. If we blur the lines and break stuff without > signaling via major versions, then our users will be less inclined to trust > us and will upgrade less frequently IMO. > > > > 3) Deprecation > > > > Unlike users, SemVer places no value judgement on version numbers and > assumes that major version numbers are “free” (aka infinite). Some > projects have major versions like 42.0.0 (wow!). Unfortunately most users > *do* expect certain things like new features from major versions. And if > the cost of the upgrade is higher than the value gained from the upgrade > then there’s a strong disincentive to move forward. We’ve all seen OSS > communities that have fragmented due to the cost of changing to a new major > version (e.g. python). I’d sure like to avoid that. > > > > Clearly we have a lot of long-deprecated API’s that we want to clean > up. That’s important to *us*. I also want to understand why our *users* > will want to upgrade to a geode-2.0.0 release. Let’s spin off a separate > thread to discuss what that looks like and how we handle the transition > using branches, prereleases, or other mechanisms to manage breaking changes. > > > > 2) Admin source code > > > > This is a grey area for me. While technically it is part of the API, > it’s also true that it’s been broken / unusable (not to mention obsolete) > for the entire time it’s been part of the geode project. +1 to remove. > > > > > > Anthony > > > > > >> On Apr 4, 2019, at 6:36 AM, Jens Deppe <jensde...@apache.org> wrote: > >> > >> I'm not sure if I'm interpreting various parts of this conversation > >> correctly, but it seems that one view being assumed is that the actual > >> removal of deprecated APIs *must* happen in the first version of a major > >> release bump. i.e. for this discussion that would be *2.0.0*. I don't > >> believe this is a correct interpretation of the following; taken from > >> https://semver.org/ > >> > >> 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. > >> > >> > >> There is no mention of it needing to happen in the *n.0.0* version; just > >> *sometime* within a new major version. > >> > >> Given that, these APIs were definitely deprecated before 1.0 and I > believe > >> we're within the definition of *semver* to be free to remove them now. > >> > >> +1 to removing them any time before 2.0.0. > >> > >> --Jens > >> > >>> On Wed, Apr 3, 2019 at 7:38 PM Jacob Barrett <jbarr...@pivotal.io> > wrote: > >>> > >>> That’s your interpretation of semver. I interpret The API not to be > broken > >>> within a major as those that are still valid when the major is released > >>> despite the availability of deprecated symbols from previous major. > Just > >>> because I can access symbols does not make it API. API is the > combination > >>> of documentation, annotation and availability of the symbols. If the > >>> symbols are available but marked deprecated and not documented anymore > then > >>> it is. It API. > >>> > >>> Yes under your interpretation it would require that availability be > >>> removed at the major release too so that a consumer that ignore > deprecation > >>> warnings when compiling with the new version got a compilation or > runtime > >>> error later up updating a minor. > >>> > >>> I think that error is well deserved. We do a disservice to our > customers > >>> by allowing them to continue to limp along on deprecated, unmaintained > and > >>> untested APIs because we missed an arbitrary window to remove the > symbols. > >>> > >>> If however the community agrees with you interpretation then we must > make > >>> sure a ticket is created for the next major with a list of deprecated > items > >>> and updated when new items are deprecated so that the task is > performed at > >>> the major release. A chore needs to be undertaken to remove all > deprecated > >>> APIs at the start of each major development cycle. The short of it is > we > >>> can’t miss this arbitrarily limiting window. > >>> > >>> -Jake > >>> > >>> > >>>> On Apr 3, 2019, at 3:58 PM, Alexander Murmann <amurm...@apache.org> > >>> wrote: > >>>> > >>>> Would we announce that we aren't following semver anymore because > bumping > >>>> the major version is somehow too expensive? > >>>> > >>>>> On Wed, Apr 3, 2019 at 3:29 PM Kirk Lund <kl...@apache.org> wrote: > >>>>> > >>>>> 1) +1 YES. If we continue to *not* have at least one major release > per > >>>>> year, then I 100% support the removal of deprecated APIs and features > >>> in a > >>>>> minor release such as 1.10. If we decide to have at least one major > >>> release > >>>>> per year, then I'd be willing to revisit this and consider not > allowing > >>>>> removal in a minor release. I do *not* support perpetually deferring > >>> major > >>>>> releases to avoid facing the removal of deprecated APIs -- that's > just > >>>>> ridiculous as it keeps our maintenance costs much higher than they > need > >>> to > >>>>> be. > >>>>> > >>>>> 2) +1 to remove anything in 1.10, or any other minor release, that > was > >>>>> already deprecated in Geode 1.0 > >>>>> > >>>>>> On Tue, Apr 2, 2019 at 5:05 PM Dan Smith <dsm...@pivotal.io> wrote: > >>>>>> > >>>>>> Hi devs, > >>>>>> > >>>>>> The org.apache.geode.admin package has been deprecated for about 7 > >>> years > >>>>>> [1]. > >>>>>> > >>>>>> I'd like to remove it, or at least move it to a separate module. I > >>>>> actually > >>>>>> started some work to move it to a separate module [2]. However in > the > >>>>>> course of this process, I've found that this module has extremely > >>> little > >>>>>> test coverage, so I'm not confident in the move. For example, it > has a > >>>>>> whole JMX manager feature (different than our current JMX manager) > >>> which > >>>>>> does not appear to have any tests. This JMX manager feature won't > work > >>> as > >>>>>> shipped unless you find and add some mx4j jars to your classpath. > >>>>>> > >>>>>> I think the best course of action is probably to remove it entirely. > >>>>>> However, this does bring up a couple of questions: > >>>>>> > >>>>>> 1) Is it ok in general to remove deprecated API in a non X.0 release > >>> (eg > >>>>>> geode 1.10 instead of geode 2.0)? > >>>>>> > >>>>>> 2) How about in this case, when this feature has been deprecated > for so > >>>>>> long, and may or may not work? > >>>>>> > >>>>>> -Dan > >>>>>> > >>>>>> [1] > >>>>>> > >>>>>> > >>>>> > >>> > https://geode.apache.org/releases/latest/javadoc/org/apache/geode/admin/package-summary.html > >>>>>> [2] Draft PR for moving the org.apache.geode.admin to a separate > >>> module - > >>>>>> https://github.com/apache/geode/pull/3392 > >>>>>> > >>>>> > >>> > > >