Top Haskell packages seen through graph centrality beer goggles

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.

package mojo
base 10000
ghc-prim 9178
array 1354
bytestring 1278
deepseq 1197
containers 994
transformers 925
mtl 840
text 546
time 460
filepath 441
directory 351
parsec 299
old-locale 267
template-haskell 247
network 213
process 208
vector 208
pretty 187
random 172
binary 158
QuickCheck 130
utf8-string 128
stm 119
unix 116
haskell98 100
hashable 96
attoparsec 92
old-time 88
primitive 87
aeson 72
unordered-containers 70
syb 69
data-default 67
split 64
transformers-base 63
blaze-builder 62
monad-control 62
conduit 62
semigroups 59
cereal 57
tagged 57
bindings-DSL 55
HUnit 55
gtk 54
Cabal 54
lens 50
OpenGL 46
haskell-src-exts 45
cmdargs 45
http-types 43
extensible-exceptions 43
glib 42
utility-ht 41
data-default-class 38
parallel 35
resourcet 34
semigroupoids 34
xml 34
comonad 33
lifted-base 33
cairo 33
safe 32
MissingH 31
exceptions 31
base-unicode-symbols 31
ansi-terminal 31
vector-space 30
nats 30
OpenGLRaw 30
monads-tf 28
wai 28
hslogger 28
regex-compat 28
void 27
blaze-html 26
hxt 25
dlist 25
zlib 25
hmatrix 24
SDL 24
case-insensitive 24
scientific 23
X11 23
tagsoup 22
regex-posix 22
HaXml 22
system-filepath 22
enumerator 22
contravariant 21
base64-bytestring 21
http-conduit 21
blaze-markup 21
MonadRandom 20
failure 20
test-framework 20
xhtml 20
distributive 19
Posted in haskell, open source
13 comments on “Top Haskell packages seen through graph centrality beer goggles
  1. Kirill Zaborsky says:

    Brian, it looks like your blog is somehow broken – the latest post about attoparsec is shown on the homepage but shows 404

  2. happy wheels says:

    Your share is the great knowledge I have gathered, you are an important person I admire, thank you

  3. Angel17 says:

    One of a kind blog. Thank you so much for sharing this.

  4. Kelly says:

    Wow. I appreciate your insights!

    Kelly | https://www.adrenalinemarketingpros

  5. Emily says:

    Hey there! So, this method we’re using has a couple of flaws when we use it in Marietta – it doesn’t count downloads and can’t take into account packages that only contain executables. But, don’t worry, the results still look pretty solid!

  6. Bellid says:

    Thanks for providing the link. Been on the lookout for this one Vancouver Metalwork

  7. Chinkee says:

    Wow. Thanks for sharing your ideas Stone Block

  8. sejeong says:

    The article is much appreciated. Amazing write up
    Retaining Wall Contractors

  9. Bradwarden says:

    Amazing work. The classic attoparsec blog.
    Concrete Finishing Victoria

  10. Miko says:

    That sounds like an interesting project for drywall! Katz centrality is a measure of centrality in a network that takes into account the total number of walks between a pair of actors.

  11. Kendra says:

    The package looks amazing! Thanks for sharing it with Charlotte Drywall Contractors. I’ll definitely let my friends know about it!

    More power!

  12. Razil says:

    This is a classic blog. Construction

  13. Jules says:

    Brian, it looks like your blog is somehow broken

    Jules| El Paso Fence Contractors

Leave a Reply

Your email address will not be published. Required fields are marked *