<p dir="ltr">I think we can start with Wren Romano and myself, and ideally add someone to manage Data.Graph sometime later. The question of splitting the package is largely independent. I'd like to see it happen eventually, but it could easily wait several years if that's necessary to avoid problems elsewhere.</p>
<p dir="ltr">Further justification for why I want a split, ultimately</p>
<p dir="ltr">Milan is right that data structure libraries can consist of unrelated structures, but I think containers is still a bit odd in that so many things are *missing*. I'd expect a data structure library offering the structures containers happens to include to also include more specialized sequence types (e.g. queues, deques, catenable lists, catenable queues, catenable deques), other order-based structures (e.g., priority queues, priority search queues), and probably other things too (tries, perhaps). The selection just seems arbitrary. Making a huge package with all these things a low-level dependency would be awful. So logically, it would seem sensible to divide up the pieces and let packagers bundle the ones they want. If Cabal can't handle this well, then maybe Cabal needs to be fixed.</p>
<div class="gmail_quote">On Apr 6, 2016 4:40 PM, "Milan Straka" <<a href="mailto:milan@strakovi.com">milan@strakovi.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
<br>
personally I think that splitting containers has nearly no<br>
advantages, but may negatively affect many users, so I am against it.<br>
The details follow.<br>
<br>
It is true that containers consists of unrelated data structures, but<br>
many data structure libraries do, and I do not believe that is should be<br>
a reason to split the package. Also I feel that containers are quite<br>
small.<br>
<br>
>From the user point of view, I doubt people would appreciate having more<br>
fine-grained versioning of parts of containers. Also note that it is<br>
difficult to use other version of containers than the one bundled with<br>
GHC (hm, template-haskell used to depend on bundled containers, but at<br>
least in 7.10 it does not anymore -- only Cabal, binary, ghc, haskeline,<br>
hoopl and hpc does; the situation is better that it used to), so<br>
incremental releases of containers between GHC releases have (had?)<br>
little use.<br>
<br>
>From the maintainer point of view, I think building/testing of<br>
containers is fine, as the library is pretty small and (at least from my<br>
point of view) builds reasonably fast. Moreover, as containers are<br>
_widely_ used, I believe we should make as little backward incompatible<br>
changes as possible, so bundling releases with GHC releases is fine (and<br>
therefore little would be gained from having three smaller packages).<br>
<br>
Splitting the package may cause problems -- some people think so, some<br>
think that the problems are recoverable -- but still, it is probable<br>
that some issues will appear and these may affect a lot of users.<br>
<br>
Cheers,<br>
Milan<br>
<br>
> -----Original message-----<br>
> From: David Feuer <<a href="mailto:david.feuer@gmail.com">david.feuer@gmail.com</a>><br>
> Sent: 3 Apr 2016, 20:39<br>
><br>
> 1. There can be multiple maintainers with independent release<br>
> schedules, independent testing and benchmarking code, etc., without<br>
> stepping on each other's toes or relying on the CLC to make decisions.<br>
><br>
> 2. The containers package does not currently have a unified theme.<br>
> Instead, it has a somewhat haphazard collection of container types.<br>
> Four of them (IntSet, IntMap, Set, and Map) really do feel like a<br>
> package together, and Data.Graph is essentially an extension<br>
> of/application of Data.Tree. The rest feel quite thoroughly different<br>
> from each other. Splitting the package would yield three packages that<br>
> each "make sense" independently.<br>
><br>
> 3. containers is fairly large, and takes a while to build. There might<br>
> be a way to work around that to make it more convenient to work with<br>
> individual components, but in light of points 1 and 2, I just don't<br>
> think it's worth the trouble.<br>
><br>
> On Sun, Apr 3, 2016 at 8:23 PM, Gershom B <<a href="mailto:gershomb@gmail.com">gershomb@gmail.com</a>> wrote:<br>
> > I’m not sure if I see an advantage to severing the packages. I think if David only wants to take responsibility for Sequence and Tree, and then that should be workable regardless, with perhaps the overall package just staying under CLC ownership for now, or perhaps a comaintainer stepping in on the other things. More maintainers for a package tends to be better, to a point, imho.<br>
> ><br>
> > Cheers,<br>
> > Gershom<br>
> ><br>
> ><br>
> > On April 3, 2016 at 8:13:52 PM, David Feuer (<a href="mailto:david.feuer@gmail.com">david.feuer@gmail.com</a>) wrote:<br>
> >> Oh, and if other people think severing is the way to go, I can make the<br>
> >> cuts within the next few weeks and take the Data.Sequence chunk. I'd prefer<br>
> >> to see other parts maintained by people more familiar with them.<br>
> >> On Apr 3, 2016 8:09 PM, "David Feuer" wrote:<br>
> >><br>
> >> > Note: the containers package itself would become a dependencies-only shim,<br>
> >> > perhaps under CLC maintenance.<br>
> >> > On Apr 3, 2016 8:07 PM, "David Feuer" wrote:<br>
> >> ><br>
> >> >> I consider myself competent to serve maintain Data.Sequence and<br>
> >> >> Data.Tree. I am much less familiar with the other modules in the package. I<br>
> >> >> would particularly like to serve as co-maintainer if anyone else is<br>
> >> >> interested. Alternatively (and better, in my opinion), the package could be<br>
> >> >> split. Data.Sequence is barely connected to the rest of the package, and<br>
> >> >> the only other module that depends on it doesn't need to. Running under<br>
> >> >> GHC, Data.Graph depends only on Data.Tree (in a hypothetical ST-free<br>
> >> >> system, it also depends on Data.IntSet). So I think it makes sense to have<br>
> >> >> three packages: one for Data.Sequence, one for Data.Tree and Data.Graph,<br>
> >> >> and one for Data.Map, Data.Set, Data.IntMap, and Data.IntSet (which share<br>
> >> >> most of their API and are therefore a sensible package, though generally<br>
> >> >> independent). I see no reason not to divide these three portions among<br>
> >> >> three maintainers.<br>
> >> >> On Apr 3, 2016 7:18 PM, "Milan Straka" wrote:<br>
> >> >><br>
> >> >>> Hi all,<br>
> >> >>><br>
> >> >>> I am writing to let you know that I am no longer able to maintain the<br>
> >> >>> containers package.<br>
> >> >>><br>
> >> >>> I have enjoyed working on containers for several years, but I can no<br>
> >> >>> longer find the time needed for the job (with two little kids<br>
> >> >>> and building a house).<br>
> >> >>><br>
> >> >>> I am not sure what is the best future of the containers package -- it<br>
> >> >>> could go to CLC, or it could get a new maintainer. If you look at the<br>
> >> >>> commit logs and on the github issues/requests, you will find out that<br>
> >> >>> David Feuer has a thorough understanding of the package (notably<br>
> >> >>> Data.Sequence) and has been competently moderating the issues/requests<br>
> >> >>> for some time now, so he would be the first choice. (I did not contact<br>
> >> >>> him sooner, so it is surprise for him as well -- sorry, David :-)<br>
> >> >>><br>
> >> >>> Could I humbly ask David/CLC members/anyone for comments?<br>
> >> >>><br>
> >> >>> Cheers,<br>
> >> >>> Milan Straka<br>
> >> >>><br>
> >> >><br>
> >> _______________________________________________<br>
> >> Libraries mailing list<br>
> >> <a href="mailto:Libraries@haskell.org">Libraries@haskell.org</a><br>
> >> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
> >><br>
> ><br>
><br>
</blockquote></div>