<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Jan 31, 2013 at 3:28 PM, Herbert Valerio Riedel <span dir="ltr"><<a href="mailto:hvr@gnu.org" target="_blank">hvr@gnu.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Michael Snoyman <<a href="mailto:michael@snoyman.com">michael@snoyman.com</a>> writes:<br>
<br>
<br>
[...]<br>
<div class="im"><br>
> * Release a new version of network (1.5) that does not include the<br>
> Network.URI module.<br>
> * Create a network-uri package that uses conditionals in the cabal file.<br>
> * If it's compiled against network version 1.4 or earlier, it doesn't<br>
> provide any modules.<br>
> * If it's compiled against network 1.5 or later, it provides the<br>
> Network.URI module.<br>
><br>
> This way, there's only ever one package which is providing Network.URI.<br>
<br>
</div>Alas, this causes some of the conditional-API issues mentioned in [1],<br>
specifically the following situation:<br>
<br>
Say, I have a package which specifies only its dependancy on<br>
'network-uri' (but not 'network') for its 'Network.URI' module, then the<br>
package compilation breaks depending on the actual version of the<br>
'network' package linked against.<br>
<br>
<br>
<br>
[1]: <a href="http://www.haskell.org/pipermail/libraries/2012-November/018750.html" target="_blank">http://www.haskell.org/pipermail/libraries/2012-November/018750.html</a><br>
</blockquote></div><br></div><div class="gmail_extra"><br></div><div class="gmail_extra" style>That's true, but I don't think we have *any* means at our disposal of creating a migration plan that has zero impact on users. The reason I suggested my approach is that the only change users would need to make is to add network-uri to their dependency list. You're correct that it's possible that a user could depend exclusively on network-uri and thereby cause trouble for users of the older network package, but I would argue that's an acceptable tradeoff in this case.</div>
<div class="gmail_extra" style><br></div><div class="gmail_extra" style>Michael</div></div>