<div dir="ltr"><br><br><div class="gmail_quote">On Thu, Aug 16, 2012 at 5:38 AM, Conrad Parker <span dir="ltr">&lt;<a href="mailto:conrad@metadecks.org" target="_blank">conrad@metadecks.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im">On 16 August 2012 03:38, Bryan O&#39;Sullivan &lt;<a href="mailto:bos@serpentine.com">bos@serpentine.com</a>&gt; wrote:<br>
&gt; Hi, folks -<br>
&gt;<br>
&gt; I&#39;m sure we are all familiar with the phrase &quot;cabal dependency hell&quot; at this<br>
&gt; point, as the number of projects on Hackage that are intended to hack around<br>
&gt; the problem slowly grows.<br>
&gt;<br>
&gt; I am currently undergoing a fresh visit to that unhappy realm, as I try to<br>
&gt; rebuild some of my packages to see if they work with the GHC 7.6 release<br>
&gt; candidate.<br>
<br>
</div>Likewise ...<br>
<div class="im"><br>
&gt; A substantial number of the difficulties I am encountering are related to<br>
&gt; packages specifying upper bounds on their dependencies. This is a recurrent<br>
&gt; problem, and its source lies in the recommendations of the PVP itself<br>
&gt; (problematic phrase highlighted in bold):<br>
<br>
</div>I think part of the problem might be that some packages (like<br>
bytestring, transformers?) have had their major version number<br>
incremented even despite being backwards-compatible. Perhaps there are<br>
incompatible changes, but most of the cabal churn I&#39;ve seen recently<br>
has involved incrementing the bytestring upper bound to &lt;0.11 without<br>
requiring any code changes to modules using Data.ByteString.<br>
<br></blockquote><div><br></div><div>In general, I&#39;ve been taking the approach recently that we have two classes of packages: some (like transformers and bytestring) have mostly-stable APIs, and most code I write only relies on those APIs. If I&#39;m just using Data.ByteString for the ByteString type and a few functions like readFile and map, it&#39;s highly unlikely that the next version will introduce some breaking change. In those cases, I&#39;ve been leaving off the upper bound entirely.</div>

<div><br></div><div>For other packages that haven&#39;t yet stabilized, I&#39;ve still been keeping the upper bound. In many cases, even that isn&#39;t necessary. I&#39;ve tried removing the upper bounds on those as well, but I almost always end up getting someone filing a bug report that I left off some upper bound and therefore a compile failed.</div>

<div><br></div><div>I agree with Bryan&#39;s argument, but I&#39;d like to keep consistency for most packages on Hackage. If the community goes in this direction, I&#39;ll go along too.</div><div><br></div><div>Michael</div>

</div></div>