Whither split base?

Vanessa McHale vanessa.mchale at iohk.io
Tue Oct 30 14:56:01 UTC 2018


This would break a lot of packages for the relatively small benefit of
finer grained dependencies.

On 10/30/18 8:35 AM, Andrew Martin wrote:
> Here's my stab at a more aggressive split:
>
> * base: everything not removed by the libraries below
> * concurrency: all Control.Concurrent.* modules (depends on base)
> * foreign: all Foreign.* modules (depends on base)
> * event-manager: all GHC.IO.* modules, System.Timeout (depends on
> base, foreign, concurrency)
>
> There would be some additional trickery. The stuff in
> Control.Concurrent that deals with event registration would need to be
> moved somewhere else. But I think this would more-or-less work.
>
> On Tue, Oct 30, 2018 at 8:54 AM Andrew Martin
> <andrew.thaddeus at gmail.com <mailto:andrew.thaddeus at gmail.com>> wrote:
>
>     For additional clarity, I should mention that I am looking for
>     low-hanging fruit here. The higher and tastier fruit would of
>     course be splitting out the event manager and all the file handle
>     logic with it. But that would be difficult, both in terms of the
>     actual work required and in terms of achieving a consensus.
>
>     On Tue, Oct 30, 2018 at 8:47 AM Andrew Martin
>     <andrew.thaddeus at gmail.com <mailto:andrew.thaddeus at gmail.com>> wrote:
>
>         We could also move out all the modules underneath
>         Control.Concurrent (but not Control.Concurrent itself) except
>         for the MVar module. We would have to leave that one because
>         there is a bunch of other stuff in base that uses MVar. These
>         modules have demonstrated less stability than
>         System.Console.GetOpt and Text.Printf, and there are competing
>         implementations in other libraries.
>
>         On Tue, Oct 30, 2018 at 8:42 AM Andrew Martin
>         <andrew.thaddeus at gmail.com <mailto:andrew.thaddeus at gmail.com>>
>         wrote:
>
>             The benefit is certainly small, and it probably would
>             discourage using the API. I don't think that the migration
>             path would be tricky. The new package would just reexport
>             Text.Printf when built with base < 4.13, and it would
>             define it when built with base >= 4.13. All that is
>             required is a build-depends line. However, people really
>             shouldn't be using this API in library code. Other modules
>             in base provide more efficient and more type-safe ways
>             handle most of the situations I've seen this used for.
>              
>             I've never used System.Console.GetOpt (I'm typically use
>             optparse-applicative for option parsing), but yes, I think
>             that would also be a good candidate. Since there are
>             multiple competing approach for argument parsing in the
>             haskell ecosystem, my preference would be to avoid
>             blessing any of them with inclusion in base.
>
>             I don't feel particularly strongly about either of these,
>             but their position in base feels odd. They both feel like
>             the result of applying a "batteries included" mindset to a
>             standard library that has by and large refrained from
>             including batteries.
>
>             On Tue, Oct 30, 2018 at 8:17 AM Herbert Valerio Riedel
>             <hvriedel at gmail.com <mailto:hvriedel at gmail.com>> wrote:
>
>
>                 On 2018-10-30 at 08:04:59 -0400, Andrew Martin wrote:
>                 > Here's an idea for this I had last night. It's
>                 narrowly scoped, but I think
>                 > it moves us a tiny bit in the right direction. We
>                 could move Text.Printf
>                 > out of base and into its own library. This doesn't
>                 really belong in base.
>                 > The interface it provides it somewhat opinionated,
>                 and it's not even
>                 > type-safe. The new library could be named `printf`
>                 and could live under the
>                 > haskell github organization. Any thoughts for or
>                 against?
>
>                 Ok, but what does this effectively achieve?
>
>                 Text.Printf is an API that has been extremely stable
>                 and doesn't
>                 significant evolve anymore; I don't think it has
>                 contributed to major
>                 ver bumps in recent times, nor is it likely to. So I
>                 don't see much of a
>                 compelling benefit in doing so. The effect I'd expect
>                 if we do this is
>                 that `Text.Printf` will be reached for less (which
>                 some might argue to
>                 be a desirable effect -- but you're effectively
>                 pushing this API to a
>                 path of slow legacy death due to reduced
>                 discoverability, IMO), as the
>                 convenience of using it is reduced by requiring adding
>                 and maintaining
>                 an additional `build-depends` line to your package
>                 descriptions, as well
>                 as having to deal with the subtly tricky business of
>                 handling the
>                 migration path pre/post-split (c.f. the `network-bsd`
>                 split currently
>                 being in progress).
>
>                 Btw, a related extremely stable API in base I could
>                 think of which
>                 people might argue doesn't belong into `base` either
>                 is maybe
>                 `System.Console.GetOpt`; would you argue to split that
>                 off as well?
>                 _______________________________________________
>                 Libraries mailing list
>                 Libraries at haskell.org <mailto:Libraries at haskell.org>
>                 http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
>
>
>             -- 
>             -Andrew Thaddeus Martin
>
>
>
>         -- 
>         -Andrew Thaddeus Martin
>
>
>
>     -- 
>     -Andrew Thaddeus Martin
>
>
>
> -- 
> -Andrew Thaddeus Martin
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20181030/0488bbdb/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20181030/0488bbdb/attachment.sig>


More information about the Libraries mailing list