
Hello Johan, On Tue, 2011-12-20 at 08:12 -0800, Johan Tibell wrote:
Introducing new instances is unlikely to break users, as they will only get into trouble if they use orphan instances, which is already asking for trouble!
Thoughts?
just a thought: what about using a more fine-grained versioning scheme, introducing a granularity somewhat in-between the current "major" and "minor" version components: *) X.Y.Z with X,Y and Z denoting major, minor and micro version components *) the new major component X gets incremented on major changes (= old major increments, except for typeclass-instance additions) *) the new minor component Y gets incremented on typeclass-instance additions *) the new micro component Z gets incremented when the old minor component would have been incremented this way, the client code can declare on a dependency, whether new typeclass instances would pose a potential break (e.g. if the client code doesn't define any orphan instances, then the "Y" component increment should pose no threat) -- hvr