
On Wed, Apr 9, 2014 at 12:03 PM, Henning Thielemann < schlepptop@henning-thielemann.de> wrote:
Am 09.04.2014 10:47, schrieb Michael Snoyman:
I would like to propose the following changes to the PVP. These are the
same changes that I recently published on the Yesod blog[1]. For more information on the motivations behind these changes, please see that blog post.
I see no need to complicate the PVP with distinctions about stable and unstable, published and unpublished packages. My preferred solution is to declare lower and upper version bounds in Build-Depends according to current PVP and ignore these bounds on demand via options that are passed to cabal-install.
There are two concrete needs I'm trying to address: * 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. * 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. The other needs I previously considered for this was testing newer versions of GHC, but the --allow-newer flag in cabal mostly[1] addresses this issue, so I don't think it's pertinent. Note: this proposal doesn't actually impose a difference in behavior between published and non-published software. The PVP is already clearly not trying to ensure reproducible builds of packages on Hackage. I just want that clarity to extend to non-published code as well, since there seems to be some confusion. Michael [1] http://www.reddit.com/r/haskell/comments/22jlis/proposal_changes_to_the_pvp/...