I threw together a little code tonight to calculate the Katz centrality of packages on Hackage. This is a measure that states that a package is important if an important package depends on it. The definition is recursive, as is the matrix computation that converges towards a fixpoint to calculate it.

Here are the top hundred Hackage packages as calculated by this method, along with their numeric measures of centrality, to which I’ve given the slightly catchier name “mojo” here.

This method has a few obvious flaws: it doesn’t count downloads, nor can it take into account packages that only contain executables. That said, the results still look pretty robust.

packagemojo
base10000
ghc-prim9178
array1354
bytestring1278
deepseq1197
containers994
transformers925
mtl840
text546
time460
filepath441
directory351
parsec299
old-locale267
template-haskell247
network213
process208
vector208
pretty187
random172
binary158
QuickCheck130
utf8-string128
stm119
unix116
haskell98100
hashable96
attoparsec92
old-time88
primitive87
aeson72
unordered-containers70
syb69
data-default67
split64
transformers-base63
blaze-builder62
monad-control62
conduit62
semigroups59
cereal57
tagged57
bindings-DSL55
HUnit55
gtk54
Cabal54
lens50
OpenGL46
haskell-src-exts45
cmdargs45
HTTP44
http-types43
extensible-exceptions43
glib42
utility-ht41
data-default-class38
parallel35
resourcet34
semigroupoids34
xml34
comonad33
lifted-base33
cairo33
safe32
MissingH31
exceptions31
base-unicode-symbols31
ansi-terminal31
vector-space30
nats30
OpenGLRaw30
monads-tf28
wai28
hslogger28
regex-compat28
GLUT27
void27
blaze-html26
hxt25
dlist25
zlib25
hmatrix24
SDL24
case-insensitive24
scientific23
X1123
tagsoup22
regex-posix22
HaXml22
system-filepath22
enumerator22
contravariant21
base64-bytestring21
http-conduit21
blaze-markup21
MonadRandom20
failure20
test-framework20
xhtml20
distributive19