Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incorrectly tagged breaking change #59

Closed
LilithHafner opened this issue Aug 9, 2022 · 4 comments
Closed

Incorrectly tagged breaking change #59

LilithHafner opened this issue Aug 9, 2022 · 4 comments

Comments

@LilithHafner
Copy link

I think that tagging this as a breaking change was a mistake because it is impossible for dropping a Julia version to result in broken code. c.f. https://github.com/SciML/ColPrac#dropping-support-for-earlier-versions-of-julia.

This is a problem because NaNMath has a lot of dependants and they now need to update their compact entries for NaNMath if they wish to receive future updates (e.g. the changes made in v1.0.1).

One possible resolution would be to yank 1.0.0 and 1.0.1 from the registry and tag master as 0.3.8, the next breaking change could then be tagged as either 0.4.0 or 2.0.0.

Another possible resolution would be to update every package that depends on NaNMath to declare compatibility with 1.0.0. Concretely, I am aware of 35 packages that depend on NaN math, 13 of which do not declare compatibility with v1.0.1:

StaticOptim
ClimateTools
Winston
HetaSimulator
HyperDualNumbers
RvSpectMLBase
GraphRecipes
YAAD
EAGO
ReverseDiffSparse
McCormick
LineSearches
RvSpectML

Resolution 1 requires fewer changes (there is no need to change the 22 registered packages that already declared support for NaNMath v1 or the 13 packages that do declare support for v1) and eliminates an erroneous breaking change.

Resolution 2 lets this package keep the visually appealing 1.x version numbers.

cc @mlubin

@mlubin
Copy link
Collaborator

mlubin commented Aug 9, 2022

I have to respectfully disagree that tagging a 1.0 release of a package is a "mistake" if there are no breaking changes. 1.0 defines the public API (https://semver.org/) and is good for the Julia ecosystem, see various discussions:
https://discourse.julialang.org/t/how-can-we-encourage-julia-package-developers-to-release-version-1-0-0/29124
https://discourse.julialang.org/t/getting-to-1-0-how-can-we-get-packages-to-make-that-tag/59608

Packages that depend on NaNMath should update their compatibility if they want new releases, it's very easy to do.

@LilithHafner
Copy link
Author

It is certainly not a clearcut issue, but I agree with @KristofferC's comments from one of the discussions you linked. The primary purpose of these versions is to support automatic compatibility analysis, not a commitment to maintenance.

Documentation defines the public API, not the release of 1.0. And the Julia package manager uses a modified version of SymVer that attributes semantic meaning to pre-1.0 versions as well.

The reason I'm bringing this up here is because this package has an out of date version that is widely used while I imagine the latest version is appropriate for the vast majority of users. For example, OrdinaryDiffEq is a reasonably popular end user package that indirectly depends on an out of date version of NaNMath.

I could certainly make those 13 PRs, but it feels like a roundabout way of dealing with this.

As an aside, It would be lovely if there were a better way to signify "no more breaking changes for a while" without simultaneously saying "here's a breaking change".

@LilithHafner
Copy link
Author

From @StefanKarpinski on discourse

This is what I’d recommend and what I’ve done myself with the handful of packages I maintain: bite the bullet and go to 1.0 when it seems ready and adjust anything that has compat bounds that include the last version to also include 1.0.

@mlubin
Copy link
Collaborator

mlubin commented Sep 2, 2022

I opened PRs on a handful of the packages you listed. About half of the 13 are either unmaintained packages or already have the correct compat bounds and just haven't tagged a release.

@mlubin mlubin closed this as completed Sep 2, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants