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 |