[Hackage] #499: develop tool to analyse package dependency splits
Hackage
trac at galois.com
Sat Feb 14 13:33:08 EST 2009
#499: develop tool to analyse package dependency splits
------------------------------+---------------------------------------------
Reporter: duncan | Owner:
Type: enhancement | Status: new
Priority: normal | Milestone:
Component: miscellaneous | Version:
Severity: normal | Keywords:
Difficulty: project(> week) | Ghcversion:
Platform: |
------------------------------+---------------------------------------------
Looking at packages on hackage as a whole we often see cases where
different packages require mutually incompatible versions of some
dependency. The most notable cases at the present time are parsec 2 vs 3,
HaXml 1.13 vs 1.19, HTTP 3000 vs 4000 etc.
What we want to know is, which dependencies are the divisive ones. In such
cases is there a clear winner? Which are the most divisive packages?
A divisive package is one where looking at the packages that depend on it,
the intersection of versions constraints is empty. That is we cannot
configure all the other packages on hackage without them disagreeing about
the devisive package. When we say all, we really only mean the latest
recommended version of each package, not all versions of all packages.
Looking at the packages depending on a divisive package we may see a clear
consensus that can resolve the issue if we ignore the minority. Frist we
must discover the 'camps', that is the sets of packages that can agree on
versions of the dependency. For example it might be simply two camps, `pkg
< 3` vs `pkg >= 3`. Then for each camp we score it based on the importance
of the packages in that camp. The importance of packages is calculated
separately (based on downloads and importance of dependents). The camp
with the biggest score wins.
Some packages are more divisive than others. A package is more divisive if
the the loosing camps are still quite important. That corresponds to
excluding many packages from the maximal consistent package set.
It would be useful to make a ranking of the most divisive packages because
these correspond to cross-package problems that need resolution in a more
coordinated fashion and their impact is bigger. It would also be useful to
track trends in the balance of the camps for divisive packages. It may be
that such splits can be naturally resolved. If there is a clear trend then
we can simply make that the de-facto recommendation.
Imagine a summary page on hackage for platform managers to see what the
most divisive packages are and the trends for each one. It would help them
and maintainers to make decisions on recommendations for dependencies.
--
Ticket URL: <http://hackage.haskell.org/trac/hackage/ticket/499>
Hackage <http://haskell.org/cabal/>
Hackage: Cabal and related projects
More information about the cabal-devel
mailing list