Cabal versions, Debian versions and users' local libraries
I've been thinking about Haskell libraries' interface changing updates
and I'm starting to think that we're a bit out of luck with those.
The thing is, we'd need to bump the cabal version number when we make
such changes, or we'll risk breaking users' locally installed
libraries in non-obvious ways.
As an example, libraries A and B are in Debian, B depends on A. A
user has libraries X and Y, where Y depends on X and X depends on B.
If A's interface changes, we can trigger B's rebuild and even use
package relationships to ensure that the user can only have matching
versions of A and B on his system. But we can't binNMU X and Y and
those are broken and it may not be obvious that both of them need to
Having a distribution specific part of cabal version numbers could
work, a bit like the after dash part that Debian versions have. We
can't just bump the upstream version.
As it is, the first thing about interface changes would be "don't".
Wait until the next upstream version if you need them, preferrably
talk to them and get them there. Upstreams aren't scary, they could
make new minor releases if you ask nicely.
This would speak for using dependencies like (>= 1.2-3), (<< 1.2+),