I haven't tested this with the new cabal-install solver, but with the old one the user would get much worse error messages if 'template-haskell' had bounds - cabal-install would start trying to install the old version and fail, sending the user off on a wild goose chase trying to figure out how to make that install work.

If you have no bounds then the error is much easier to diagnose - the library needs to be modified to work with the version of template-haskell currently installed.

I'm +1 on this policy, even though I would prefer the fix be in cabal-install itself.



On Wed, Apr 9, 2014 at 3:24 PM, Michael Snoyman <michael@snoyman.com> wrote:
At Herbert's request, I'm splitting off this part of the PVP proposal I made[1] to its own separate proposal. Same discussion period of three weeks. The proposal is:

Upper bounds should not be included on non-upgradeable packages, such as base and template-haskell (are there others?). Alternatively, we should establish some accepted upper bound on these packages, e.g. many people place base < 5 on their code.

The purpose (elaborated in my blog post[2]) is that these upper bounds virtually never provide for a successful build. Instead, they are purely about what error messages the user receives. With this change:

* Some build plans that would have previously been impossible are now possible, without resorting to the nuclear option of --allow-newers.
* Instead of cabal version bound error messages, users get GHC compiler errors that can be fed back upstream to help get packages fixed more expediently.

Downsides I'm aware of:

* If you consider the cabal error messages more user friendly, then the error message quality goes down.
* Users may find out later than they do right now about a failing build.

[2] http://www.yesodweb.com/blog/2014/04/proposal-changes-pvp

_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://www.haskell.org/mailman/listinfo/libraries