-
Notifications
You must be signed in to change notification settings - Fork 25
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
condition 2 (Non-breaking changes) examples are too limited #41
Comments
I'm not sure what you mean by output formatting, but I'd say no.
Read carefully, non-visible change to allow different dependency range. That is one of a main use cases for patch versions. The fourth digit changes shouldn't be visible outside. That assumption is used in |
I see I had formerly assumed that even a small bug would allow keeping A.B.C unchanged. |
Okay but that should be made more explicit under Non-breaking change. Non-breaking change only talks about "new bindings, types, classes, non-orphan instances or modules (..) were added to the interface" whereas Other changes mentions "corrected documentation, non-visible change to allow different dependency range". I strongly feel the scope of Non-breaking change should be expanded to mention bugfixes, output changes, etc. Actually it would be clearer to rename Other changes to something closer to Trivial changes even I feel, but that might lead to more bike-shedding. |
Bugfix/feature is orthogonal to breaking/non-breaking axis PVP is talking about. I argue that is an aspect where e.g. semver goes wrong. Bugfix/feature is subjective, where PVP talks about objective language-specific changes. If bugfix require changing the context of the instance (to be more restrictive), than it's a breaking change, and no matter how you'd call it a bugfix, it still requires a major version bump. It's also arguable whether output change is breaking change or not.. E.g. for |
I agree 1 vs 2 is more grey area, but that is not the case for 2 vs 3 though it seems. |
But I argue that change of behaviour is a breaking change. Non-breaking changes are additions of new stuff. |
So any minor bugfix release requires a major version bump? Also I am even trying to apply pvp versioning to my non-library packages.... where I guess it makes less sense. |
It depends what that bugfix is. |
A recent example is {- cabal:
build-depends: base, mime-types ==0.1.0.9
-}
{-# LANGUAGE OverloadedStrings #-}
module Main (main) where
import Network.Mime
main = print $ defaultMimeLookup "foo.xml" prints {- cabal:
build-depends: base, mime-types ==0.1.1.0
-}
{-# LANGUAGE OverloadedStrings #-}
module Main (main) where
import Network.Mime
main = print $ defaultMimeLookup "foo.xml" prints |
Alright but "breaking" is a somewhat subjective word (I mean open to interpretation generally). |
Yes, it's somewhat subjective. But there are enough real world evidence, that if something like that to be added to PVP, it SHOULD be added to Breaking changes, so people would need to think hard if their change (of behavior) can be done in a minor version, and if they are unsure they would rather make a major version (or hold on releasing the change until more changes have accumulated). For example, a maintainer of |
Surely if I do a small tweak that improves output formatting say, that would also come under this, right?
Only mentioning documentation and dependency range changes here seems too small a class of examples to me, no?
The text was updated successfully, but these errors were encountered: