Proposal: Changes to the PVP
Michael Snoyman
michael at snoyman.com
Wed Apr 9 08:47:14 UTC 2014
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.
1. The goal of the PVP needs to be clarified. Its purpose is not to ensure
reproducible builds of non-published software, but rather to provide for
more reliable builds of libraries on Hackage. Reproducible builds should be
handled exclusively through version freezing, the only known technique to
actually give the necessary guarantees.
2. 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.
3. We should be distinguishing between mostly-stable packages and unstable
packages. For a package like text, if you simply import Data.Text (Text,
pack, reverse), or some other sane subset, there's no need for upper
bounds. (Note that this doesn't provide a hard-and-fast rule like the
current PVP, but is rather a matter of discretion. Communication between
library authors and users (via documentation or other means) would be vital
to making this work well.)
4. For a package version A.B.C, a bump in A or B indicates some level of
breaking change. As an opt-in approach, package authors are free to
associated meaning to A and B beyond what the PVP requires. Libraries which
use these packages are free to rely on the guarantees provided by package
authors when placing upper bounds. (Note that this is very related to point
(3).)
Discussion period: 3 weeks.
[1] http://www.yesodweb.com/blog/2014/04/proposal-changes-pvp
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/libraries/attachments/20140409/3dcb6b4f/attachment.html>
More information about the Libraries
mailing list