Splitting Network.URI from the network package

Edward Z. Yang ezyang at mit.edu
Thu Aug 28 15:55:02 UTC 2014


Based on discussion in the ticket, I amend my proposal further.
The new recommend text should be:

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

and we should release a pre-2.6 network-uri package which has
no exported modules.

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