Proposal: Changes to the PVP

Johan Tibell johan.tibell at gmail.com
Wed Apr 9 21:30:45 UTC 2014


On Wed, Apr 9, 2014 at 11:13 PM, Michael Snoyman <michael at snoyman.com>wrote:

> And this is where I think the PVP is doing a disservice with its current
> wording. Users have this expectation, but it doesn't actually hold up in
> reality. Reasons why it may fail include:
>
> * Typeclass instance leaking from transitive dependencies.
> * Module reexports leaking from transitive dependencies.
>

We're aware of these two issues and the PVP page mentions one of them. It
should also mention the other together with a workaround. These issues seem
rare however. I've never run into them.


> * Someone made a mistake in an upload to Hackage (yes, that really does
> happy, and it's not that uncommon).
>

Nothing will help you in this case as a library author, as you cannot
freeze your deps in your .cabal file, which would be the only option if
you're worried about this.


> * The package you depend on doesn't itself follow the PVP, or so on down
> the stack.
>

Sure. You don't get benefits from the PVP if people don't follow the PVP.

You second sentence suggests that there are other failure modes, I'd love
to know about them so we can discuss them.

As I see it now there are two real failure modes (the first two you
listed), one we can fix with tooling (make sure people follow the PVP), and
one I don't think it's worth caring about (accidental uploads of broken
stuff.)


> So my point is: even though the *goal* of the PVP is to provide this
> guarantee, it *doesn't* provide this guarantee. Since we have a clear
> alternative that does provide this guarantee (version freezing), I think we
> should make it clear that the PVP does not solve all problems, and version
> freezing should be used.
>

It provides the guarantee with the exceptions of you two first points,
which don't worry me much as I've never seen them happen outside the Yesod
ecosystem (i.e. they seem rare.) Version freezing is orthogonal to the
stuff the PVP talks about so I think we will just confuse users by talking
about it in the PVP. Perhaps you could put together a little "how to build"
stuff guide and raise awareness of the issue that way?

-- Johan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/libraries/attachments/20140409/b1149495/attachment.html>


More information about the Libraries mailing list