Breaking the semigroups instance breaks transitively almost every package I&#39;ve written. Did you attempt to fix each of those and see what was broken downstream? I have 60+ packages that depend on semigroups alone, though I&#39;m not sure how many use the union instance publicly.<div>
<br></div><div>I am really not a fan of the idea of an interim release where no instance exists, because it forces folks who do heavily use union to make a bunch of orphans that cannot work together or abandon this functionality entirely.</div>
<div><br></div><div>It effectively makes it impossible for users like me who need to support a wide-array of platforms. </div><div><br></div><div>If this change goes forward I&#39;m going to have to go make a lot of code uglier, as a currently useful Monoid will be dead to me for years, until I can rely on it again portably across enough platforms to cover the window I&#39;ve agreed to support for my many of my packages.</div>
<div><br></div><div>If that is the consensus I&#39;ll go along with it, but I&#39;ll miss the functionality.</div><div><div><br></div><div>-Edward<br><br><div class="gmail_quote">On Tue, Mar 12, 2013 at 11:19 AM, Ben Gamari <span dir="ltr">&lt;<a href="mailto:bgamari.foss@gmail.com" target="_blank">bgamari.foss@gmail.com</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="HOEnZb"><div class="h5">Johan Tibell &lt;<a href="mailto:johan.tibell@gmail.com">johan.tibell@gmail.com</a>&gt; writes:<br>

<br>
&gt; On Tue, Mar 12, 2013 at 8:06 AM, Ben Gamari &lt;<a href="mailto:bgamari.foss@gmail.com">bgamari.foss@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt;   2) We decide it is acceptable to break users code multiple times, drop<br>
&gt;&gt;      the Monoid instance and reintroduce the new instance after some<br>
&gt;&gt;      delay. The length of this delay could range from no delay at all<br>
&gt;&gt;      (allowing folks to quickly move to the new instance, although<br>
&gt;&gt;      potentially unwittingly) to several months (hoping that most users<br>
&gt;&gt;      will realize the change during this window).<br>
&gt;&gt;<br>
&gt;<br>
&gt; Before we even consider breaking user code we should see how much code will<br>
&gt; be broken. If someone with spare cycles could download a copy of Hackage<br>
&gt; and grep for uses of mappend on Data.Map that would be great.<br>
<br>
</div></div>It seems like Christian did a pretty good approximation to this[1] in January, no?<br>
<div class="im"><br>
     After removing the Monoid instance for Map and IntMap, each reverse<br>
     dependency of containers was separately compiled under a standard setup of<br>
     GHC 7.6.1 in order to avoid shared dependency problems. Out of 1440 reverse<br>
     dependencies, I could get 545 to compile. However, only the following<br>
     packages fail because of Monoid instance issues:<br>
<br>
     - caledon<br>
     - data-default<br>
     - dom-lt<br>
     - EnumMap<br>
     - i18n<br>
     - semigroups<br>
     - unamb-custom<br>
     - vacuum<br>
     - stringtable-atom<br>
<br>
</div>Given that the Monoid instance is completely gone in this test, this<br>
list should be a superset of the packages that will break due to the<br>
semantic change.<br>
<br>
Cheers,<br>
<br>
- Ben<br>
<br>
<br>
[1] &lt;CALCpNBpcmEfG1moxX=<a href="mailto:CbHOS2LwNGeLEFbTyyfteJYPwMoLR9SQ@mail.gmail.com">CbHOS2LwNGeLEFbTyyfteJYPwMoLR9SQ@mail.gmail.com</a>&gt;<br>
</blockquote></div><br></div></div>