Module Counts

  • Include
  • Clojars (Clojure)
  • CPAN
  • CPAN (search)
  • CRAN (R)
  • Crates.io (Rust)
  • Crystal Shards
  • Drupal (php)
  • DUB (dlang)
  • Gopm (go)
  • Hackage (Haskell)
  • Hex.pm (Elixir/Erlang)
  • Julia
  • LuaRocks (Lua)
  • Maven Central (Java)
  • MELPA (Emacs)
  • Nimble (Nim)
  • npm (node.js)
  • nuget (.NET)
  • Packagist (PHP)
  • Pear (PHP)
  • Perl 6 Ecosystem (perl 6)
  • PyPI
  • Rubygems.org
  • Vim Scripts
  • time period
  • all time
  • last year
  • last 90 days
  • last 30 days
  • last 7 days
Jan 16 Jan 17 Jan 18 Jan 19 Jan 20 Jan 21 Jan 22 Avg Growth
Clojars (Clojure) 23309 23312 23317 23321 23327 23333 23338 5/day
CPAN 39403 39405 39407 39409 39409 39411 39415 2/day
CPAN (search) 5/day
CRAN (R) 13677 13679 13694 13700 13703 13711 13709 5/day
Crates.io (Rust) 21914 21938 21957 21983 21996 22013 22056 24/day
Crystal Shards 4114 4115 4118 4122 4124 4126 4131 3/day
Drupal (php) 42274 42289 42297 42304 42307 42310 42323 8/day
DUB (dlang) 1486 1486 1486 1487 1488 1492 1/day
Gopm (go) 22327 22337 22342 22350 22353 22361 22371 7/day
Hackage (Haskell) 13424 13428 13428 13429 13430 13430 13432 1/day
Hex.pm (Elixir/Erlang) 7595 7596 7597 7600 7603 7606 7607 2/day
Julia 1906 1906 1906 1906 1906 1906 1906 0/day
LuaRocks (Lua) 1/day
Maven Central (Java) 264380 264515 264681 264809 264848 264900 265073 116/day
MELPA (Emacs) 4070 4070 4070 4070 4070 4070 4054 -3/day
Nimble (Nim) 894 895 895 895 895 895 897 1/day
npm (node.js) 758390 759030 759581 759915 760280 760827 761536 524/day
nuget (.NET) 140050 140140 140223 140293 140325 140381 140459 68/day
Packagist (PHP) 209262 209408 209563 209671 209755 209874 210050 131/day
Pear (PHP) 602 602 602 0/day
Perl 6 Ecosystem (perl 6) 1316 1307 1308 1312 1313 1322 1325 2/day
PyPI 164932 165050 165166 165241 165311 165428 165563 105/day
Rubygems.org 149386 149416 149452 149468 149494 149521 149540 26/day
Vim Scripts 5536 5536 5536 5536 5536 5536 5536 0/day

Data is collected by scraping the relevant websites once a day via a cron job and then stored in a Postgresql database for later retrieval. Growth rates are calculated by averaging data over the last week. I'm gathering counts of separate modules, so multiple versions of the same module/package/gem only count once (foo-1.2, foo-1.3 and bar-1.0 would count as 2 total).

(Jun 3, 2018) Update Drupal, DUB, and PyPI after their sites updated.

(Mar 4, 2018) Added Crystal Shards, as well as JSON endpoints /repositories and /repositories/:id/counts/:start/:finish as first steps towards revamping JS front end. (e.g. /repositories/1/counts/2018-02-01/2018-02-28)

(Sept 10, 2017) Update Crates.io for their new data URL and add Nimble, the Nim package manager. Many thanks to Alex Libman for pointing me to it.

I'd like to add more repositories. If you have suggestions, please send them to erik@debill.org.

CPAN and CPAN (search) used to be two conflicting sources for data about how many modules are in CPAN. During spring of 2011 CPAN got a site refresh and the numbers came into line with each other. It looks funny on the graph, but it's an interesting bit of history.

GoDoc is weird. It's not a true package repository in the same sense as all the others, but as far as I can tell it's the closest GoLang has. Be aware that it pretty drastically overcounts the number of packages. Don't use the raw numbers to compare with other languages. You can still watch the line to see changes in velocity, though.

If you'd like to check out the data in more detail, you are welcome to download it in a CSV file.