PVP proposal: don't require major version bump when adding non-orphan instances
Mario Blažević
mblazevic at stilo.com
Wed Feb 26 16:01:27 UTC 2014
On 14-02-26 07:37 AM, Johan Tibell wrote:
>...
>
> If this is true, we could change the first two PVP rules to (differences
> in /italics/):
>
> * If any entity was removed, or the types of any entities or the
> definitions of datatypes or classes were changed, or /orphan/
> instances were added or /any instances were/ removed, then the new
> A.B must be greater than the previous A.B. Note that modifying
> imports or depending on a newer version of another package may cause
> extra instances to be exported and thus force a major version change.
>
> * Otherwise, if only new bindings, types, classes, /non-orphan
> instances/, or modules (but see below) were added to the interface,
> then A.B may remain the same but the new C must be greater than the
> old C.
>
> and add the following clarifying sentence:
>
> /If a package defines an orphan instance, it must depend on the minor
> version of the packages that define the data type and the type class to
> be backwards compatible. For example, build-depends: mypkg >= 2.1.1 && <
> 2.1.2./
>
+1, except I'd add the following ammendment:
In the interim period (for a year or so after the PVP change), the
library maintainers that wish to take advantage of the change (i.e., add
a new instance while incrementing only the minor package version) should
check if any of the packages depending on their libraries contain
clashing orphan instances. If so, they need to try to contact the
depending package maintainers and get them to tighten the dependency
bounds before the minor release. After the interim period is over, the
responsibility falls onto the maintainers of the depending packages.
Also, we should consider reserving the third component of the version
for instance additions, and relegating function and type additions to
lower components.
More information about the Libraries
mailing list