haskell / pvp

Haskell Package Version Policy (PVP)
http://pvp.haskell.org/
38 stars 26 forks source link

Is the PVP transitive? #23

Open sol opened 6 years ago

sol commented 6 years ago

Question

Can a package that adheres to the PVP depend on a package that violates the PVP?

Assumption

My assumption so far has been that the answer to this question is "no".

Rational

Looking at the following sentence:

Note that modifying imports or depending on a newer version of another package may cause extra orphan instances to be exported and thus force a major version change.

This suggests that a package a is "responsible" for orphan instances from transitive dependencies. Now if there is a package c in the transitive dependency graph of a and c is not constrained with a valid upper bound then package a does not honor the PVP as it is not guarded against possible additions of orphan instances to c in the future.

For completeness, the scenario here is:

Does this make sense or do I miss something?

bergmark commented 6 years ago

I think you're right. To be strictly compliant a would need to directly depend on all of b's dependencies so that it can take this responsibility instead.