Hi all,
The PVP says:
"A.B is known as the major version number, and C the minor version
number. When a package is updated, the following rules govern how the
version number must change relative to the previous version:
1. If any entity was removed, or the types of any entities or the
definitions of datatypes or classes were changed, or instances were
added or 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."
The part about adding instances and the one about modifying imports
makes it hard to follow the PVP. Bumping the major version number is a
quite disruptive change for your users if they use upper bounds on
their dependencies. Minor version bumps are not nearly as disruptive
as you can you can depend on x.y.* as long as you only use qualified
imports and/or explicit import lists.
Assuming no one uses orphan instances, adding instances is always safe
because you can only add instances for types from packages you depend
on, which means that they can't be depending on your package in turn
and have defined a non-orphan instance for a type or class defined in
your package.
I suggest that the rule be changed to not require a major version bump
if instances are added.
P.S. I believe the same reasoning can be applied to the import part of
the rule above.
-- Johan