On Mon, Nov 12, 2012 at 5:13 PM, Johan Tibell <span dir="ltr">&lt;<a href="mailto:johan.tibell@gmail.com" target="_blank">johan.tibell@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im">On Mon, Nov 12, 2012 at 1:06 AM, Erik Hesselink <span dir="ltr">&lt;<a href="mailto:hesselink@gmail.com" target="_blank">hesselink@gmail.com</a>&gt;</span> wrote:<br></div><div class="gmail_quote"><div class="im">

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

tl;dr: Breakages without upper bounds are annoying and hard to solve for package consumers. With upper bounds, and especially with sandboxes, breakage is almost non-existent.<br><br>I don&#39;t see how things break with upper bounds, at least in the presence of sandboxes. If all packages involved follow the PVP, a build that worked once, will always work. Cabal 0.10 and older had problems here, but 0.14 and later will always find a solution to the dependencies if there is one (if you set max-backjumps high enough).<br>



</blockquote><div><br></div></div><div>The &quot;breakage&quot; people are talking about with regards to upper bounds is that every time a new version of a dependency comes out, packages with upper bounds can&#39;t compile with it, even if they would without the upper bound. For example, the version number of base is bumped with almost every GHC release, yet almost no packages would actually break to the changes that caused that major version number to go up.</div>

</div></blockquote><div><br>Yes, this is why I talk about living on the bleeding edge, and shifting the burden from package maintainers to package users.<br><br>And I believe the last base changes included a change to &#39;catch&#39; which would have broken a lot of packages. The Num changes also caused a lot of code changes, and there were probably more I don&#39;t remember.<br>

<br>Erik<br></div></div></div>