[Haskell-cafe] Re: Rewriting a famous library and using the same name: pros and cons

Ivan Lazar Miljenovic ivan.miljenovic at gmail.com
Tue Jun 8 20:06:06 EDT 2010


Jeremy Shaw <jeremy at n-heptane.com> writes:

> I don't really see this listed on your list, but maybe I missed it.
>
> Happstack has been affected by QuickCheck 1 -> QuickCheck 2, parsec 2
> -> 3, and HaXml 1.13 -> 1.20.
>
> Those packages are common, and people often want to use happstack with
> other libraries that also use those packages. The problem is that if
> we upgrade to the newer versions, then people can't use happstack with
> libraries that use the old version. For example, when we upgrade to
> QuickCheck 2, gitit no longer installed, because some dependency of
> gitit still used (and perhap still does) QuickCheck 1.

My understanding is that this is caused by a limitation in ghc-pkg which
can't tell the difference between re-exposed and only-used-internally
dependencies.

I recall having a discussion with either you or someone else from the
happstack team about why it isn't applicable there, but the QuickCheck
problem can be solved in the general case by having its dependency be a
compile-time-only option which is disabled by default.

However, this is definitely a major problem with parsec, HaXml, etc. and
probably what I consider the main argument _against_ keeping the same
name for fgl, though this can occur with packages even with a relatively
minor API change (e.g. haskell-src-exts going from 1.6 to 1.7; the API
change was minor but until all package maintainers upgraded their
packages to work with 1.7 there would be some inconsistencies).

-- 
Ivan Lazar Miljenovic
Ivan.Miljenovic at gmail.com
IvanMiljenovic.wordpress.com


More information about the Haskell-Cafe mailing list