Pretty much anything non-trivial that we want to add to wheels will be incompatible to some extent. If we split the world into just the two cases ācompatibleā and ābig scary rolloutā, weāre going to end up unable to do anything.
Iād assumed that a change which included a new incompatible feature that some projects might use, but was otherwise compatible, would be a good test here. In most cases, the new feature isnāt used and users can safely ignore a āversion is newer than I recogniseā warning. In the few cases where the new feature does get used, and hence the warning signals a genuine issue, we learn how best to manage the transition.
With a totally-compatible version bump we learn very little, because users can legitimately just ignore the warning, because 1.1 wheels will always be installable with existing installers.
But if you think differently, thatās OK. Assuming you go ahead with the idea and write a PEP, I wouldnāt reject it solely because I donāt think weāll learn anything from the exercise. I will reject it if everyone thinks that, and thereās no consensus in favour of the change, of course
If some wheels contain symlinks and are incompatible, and some donāt contain symlinks and are compatible, then we should put Wheel-Version: 2.0 in the ones that contain symlinks and Wheel-Version: 1.0 in the ones that donāt contain symlinks.
I canāt think of any situation where a minor version increase + warning is actually useful. IMO thatās just a vestigial feature of the format ā harmless but useless.
I admit Iām confused about the versioning rules here. And for that matter about what we mean by ācompatibilityā. If all 1.0 wheels are also valid 1.1 wheels, is that āforward compatibleā? If all 1.1 wheels are valid 1.0 wheels, is that ābackward compatibleā? If so, which is it we want to achieve? Forward or backward compatibility? And why?
My assumption was that minor version bumps were for forward compatible changes, and major version bumps were for completely incompatible changes. I donāt see what useful changes we can make that would warrant a new version, and are also backward compatible - they would basically be invalidating some previously valid wheels for no corresponding benefit (hence this thread!)
If we want to add functionality to the wheel format, we need a new major version bump. If we want to remove functionality from the wheel format, we need a minor version bump.
So far, this is the only proposed change that Iāve seen to remove functionality from the format.
Cool. If thatās the definition, then (on a purely personal basis) I see no benefit in ever having a minor version bump. That is, I generally donāt think the benefits of removing functionality outweigh the cost of a version increment.
I guess Iām just a little bit uncomfortable with semver-style versioning in general, and in particular for standards. But as long as it all makes sense to everyone else, and we can get consensus on whether a given change is āmajorā or āminorā and we can agree transition processes as needed, then Iām happy to go along with the majority.