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 | 44 |
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 |
GLUT | 27 |
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 |
Brian, it looks like your blog is somehow broken – the latest post about attoparsec is shown on the homepage but http://www.serpentine.com/blog/2014/05/31/attoparsec/ shows 404
Your share is the great knowledge I have gathered, you are an important person I admire, thank you
One of a kind blog. Thank you so much for sharing this. aaadfencedeck.com/deck-building-company/
Wow. I appreciate your insights!
Kelly | https://www.adrenalinemarketingpros
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!
Thanks for providing the link. Been on the lookout for this one Vancouver Metalwork
Wow. Thanks for sharing your ideas Stone Block
The article is much appreciated. Amazing write up
Retaining Wall Contractors
Amazing work. The classic attoparsec blog.
Concrete Finishing Victoria
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.
The package looks amazing! Thanks for sharing it with Charlotte Drywall Contractors. I’ll definitely let my friends know about it!
More power!
This is a classic blog. Construction
Brian, it looks like your blog is somehow broken
Jules| El Paso Fence Contractors