[Haskell-cafe] How to determine correct dependency versions for a library?

Michael Orlitzky michael at orlitzky.com
Sun Nov 18 02:15:07 CET 2012

Replying somewhere random in the thread.

Linux distributions have to solve this same problem. We first need to
decide what Hackage's function is supposed to be:

  (1) A dumb repository to host Haskell code

  (2) A collection of Haskell packages that work together

In reality it's (1), but the existence of cabal-install supposes (2).

The way that distributions handle this is to assign maintainers to each
and every package in the distro, and require them all to be actively
maintained. Packages that don't build or have unresponsive upstreams are
removed. Maintainers who don't do their jobs are removed after a while, too.

The end result is that there are somewhat fewer packages /visible/ to
the user, but a comparable amount /available/, since what's in the
distro is what actually would have worked if the user tried to build it

I think there's value to having (1), but that we shouldn't expect (2) at
the same time. Tons of work goes into QA'ing packages to work together.
Someone needs to be responsible for making sure that things work; right
now no one is, so they don't.

Running a "Haskell distro" on a parallel Hackage would be a lot of work
but Arch, Debian, Gentoo, etc. already have to do essentially that. It
may make sense to either consolidate the effort, or reuse what work is
already being done. The gentoo-haskell[1] project already keeps a list
of packages that are known to build from source together. Something like
prefix[2] for example could be used to install packages that have been
vetted rather than just pulling a tarball with the right name directly
from Hackage.

Or if that's too much trouble, we could write a reverse hackport[3] that
creates a second Hackage full of stuff known to work in the various
distributions. No solution will be great at first, but we have the
"benefit" that it doesn't work right now either so maybe nobody will notice.

Without everyone duplicating the QA effort, I think things would shape
up quickly.

[1] https://github.com/gentoo-haskell/gentoo-haskell
[2] http://www.gentoo.org/proj/en/gentoo-alt/prefix/
[3] http://hackage.haskell.org/package/hackport

More information about the Haskell-Cafe mailing list