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