Skip to content

develop tool to analyse package dependency splits #492

bos opened this Issue May 24, 2012 · 2 comments

2 participants

Haskell member
bos commented May 24, 2012

(Imported from Trac #499, reported by @dcoutts on 2009-02-14)

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.

Haskell member
bos commented May 24, 2012

(Imported comment by @dcoutts on 2009-02-14)

See also ticket #500 for another tool that would use this.

Haskell member
tibbe commented May 15, 2014

Closing as there's been no activity in years.

We're cleaning up the bug tracker to make it useful again and are thus closing bugs that haven't seen any activity in a long time. Please re-open (or file a new bug) if the problem reappears.

@tibbe tibbe closed this May 15, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.