
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.