Splitting Network.URI from the network package

Edward Z. Yang ezyang at mit.edu
Wed Aug 27 14:23:51 UTC 2014


To be clear, I suggest we change the default recommended build-depends
text from:

 library
   -- ...
   if flag(network-uri)
     build-depends: network-uri >= 2.6
   else
     build-depends: network < 2.6

to

 library
   -- ...
   if flag(network-uri)
     build-depends: network-uri >= 2.6, network >= 2.6
   else
     build-depends: network < 2.6

Cheers,
Edward

Excerpts from Edward Z. Yang's message of 2014-08-27 15:15:27 +0100:
> Hello all,
> 
> I'd like to report some more subtle breakage with respect to this
> split regarding packages which depend on just network-uri, but
> not network itself.  The issue is reported here:
> https://github.com/haskell/cabal/issues/2063
> 
> I think the workaround is to add a "bogus" dependency on network
> if you use the flags.
> 
> Cheers,
> Edward
> 
> Excerpts from Michael Snoyman's message of 2014-08-01 12:31:13 +0100:
> > This was brought up last year[1], and I'd like to bring it up again, based
> > on a recent issue I was working through with a user[2]. I realize that this
> > is a breaking change, but:
> > 
> > 1. It's a minor breaking change: you simply need to add an extra package to
> > your build-depends.
> > 2. The problems caused by having a parsec dependency in network can be
> > severe, especially for new users (I'll describe the details after the
> > proposal).
> > 
> > Concretely, I believe we should do the following:
> > 
> > 1. Create a new package, network-uri, version 2.5.0.0, which exposes no
> > modules and has an upper bound `network < 2.6.
> > 2. Create a second release of network-uri, version 3.0.0.0, which provides
> > the Network.URI module verbatim as provided by the network package today,
> > and has a lower bound `network >= 3.0`.
> > 3. Release network version 3.0.0.0, with no changes from the currently
> > released version, except that (a) no Network.URI module is provided, and
> > (b) there is no parsec dependency.
> > 
> > I don't remember how the discussion went last time, but I seem to remember
> > general consensus. I'd like to set a discussion period of two weeks (August
> > 15).
> > 
> > ## Motivation
> > 
> > To give a concrete example of why this problem is severe, consider the
> > following data:
> > 
> > * The network package is a pain to install on Windows for most users
> > (especially new users), since it requires msys.
> > * Most Windows users therefore install the Haskell Platform, avoiding the
> > msys dependency.
> > * The current release of HP installs text version 0.11.3.1. text is a
> > dependency of parsec, and parsec is a dependency of network. Therefore, you
> > can't build against a new version of text *and* use the network package
> > without recompiling network, which as I mentioned is difficult.
> > * A number of popular packages depend on newer versions of text. For
> > example, since 0.8.0.0, aeson requires text version 1.1.0.0 or later. as
> > does attoparsec since version 0.12.0.0.
> > 
> > [1] http://www.haskell.org/pipermail/libraries/2013-January/019234.html
> > [2] https://groups.google.com/d/msg/yesodweb/auk2vByXgO8/lUZ9oanKyMwJ


More information about the Libraries mailing list