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 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
Posted in haskell, open source
42 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 http://www.serpentine.com/blog/2014/05/31/attoparsec/ 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. aaadfencedeck.com/deck-building-company/

  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

  14. Pitlord says:

    Good content. Landscape Pros

  15. takimit6 says:

    This is a fascinating approach Baltimore Concrete Services. Great work!

  16. Jillian says:

    Considering dependencies for importance is a unique twist. | Midland Drywall Contractors

  17. Chaewon says:

    Good post. See you guys on another blog! Retaining Nanaimo

  18. rabaho says:

    Fascinating approach! “Mojo” certainly adds a catchy flair to centrality measures.

  19. AmorScott says:

    It’s fascinating to see how you’ve applied network analysis concepts to measure the centrality of packages on Hackage. Katz centrality indeed provides a valuable perspective on package importance within the Haskell ecosystem, particularly emphasizing the influence of dependencies. corporate events

  20. titax21287 says:

    Cheers to your coding adventure! | insulate basement company

  21. Rain says:

    It’s nice seeing this informative content here. lip flip

  22. Kevin says:

    Thank you for sharing this post. house painters

  23. Thanks for the info you shared.

  24. Louise says:

    Glad to check this site. Thanks for sharing. Germantown Concrete concrete foundation

  25. mogayak507 says:

    Augusta is looking forward to hearing more about your findings!

  26. Thanks for keeping us posted.

  27. Zandrea says:

    This is awesome! Thanks for the share. residential window cleaning

  28. It’s impressive that you’ve developed a code to calculate Katz centrality for packages on Hackage! While it may have its limitations, such as not factoring in downloads or packages containing executables, it’s still a valuable approach for identifying important packages based on dependencies.

  29. macaw268 says:

    Despite its limitations, the results sound promising. | Irving Concrete Company

  30. Thanks for the great content!

  31. Jillian says:

    Very informative post! Great share. Collierville Concrete Company concrete contractor

  32. Mindy says:

    Impressive! Haskell packages are truly promising to our drywall company. Keep up the great work!

  33. romelej693 says:

    I’d love to see the list and delve deeper into the results!

  34. Tina says:

    Can i use this package together with my website plugin? What’s its impact in the long run?

  35. Calculating Katz centrality for Hackage packages to measure their importance based on dependencies is an interesting approach to understanding the influence and connectivity of packages within the ecosystem. Katz centrality is particularly useful in networks where the influence of nodes is cumulative and recursive, such as in software package dependencies.

  36. AmorScott says:

    Calculating the Katz centrality for packages on Hackage can indeed provide valuable insights into the significance of each package within the Haskell ecosystem. Katz centrality, which measures the influence of a node within a network by considering the importance of its neighbors, is particularly suited for dependency graphs where the importance of a package is propagated through the graph of dependencies. https://cprpool.com/

  37. Gerald says:

    It’s great to see this information here. plaster repairs

  38. JS Jewelers says:

    This post takes a fun approach, using graph centrality (think popularity in a network) to identify Haskell’s most “important” packages. Imagine packages with lots of connections and influence as the coolest kids in school!

  39. Kimberly says:

    Looking forward to seeing more information shared from this site. concrete repair

  40. Wow, the results are looking great!

Leave a Reply

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

*