
Hi Michael, On Wed, Apr 09, 2014 at 01:29:18PM +0300, Michael Snoyman wrote:
* From a library maintainer standpoint: decreased maintenance overhead. Being able to say `text < 2` or `case-insensitive < 2` means less time spent fiddling with cabal files.
I think that's mostly a tooling issue. It was my main motivation for writing 'cabal-bounds' (https://github.com/dan-t/cabal-bounds).
* From a library user standpoint: it makes it less likely that you'll run into a case where cabal cannot create a build plan. If package foo places a restrictive upper bound on text of `text < 1.1`, and package bar starts using a new feature in text 1.1 and therefore has a bound `text >= 1.1`, the user won't be able to use foo and bar together until the author of foo bumps the version number.
Yes, that's certainly a problem, but otherwise you also can't be sure that 'text 1.1' didn't introduce a breaking change. So with the new cabal flag '--allow-newer' the user could still try to build with 'text 1.1' and the package could still indicate that it wasn't tried with 'text 1.1', which at the end seems to be the best of both worlds. Greetings, Daniel