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
Jul 20 Jul 21 Jul 22 Jul 23 Jul 24 Jul 25 Jul 26 Avg Growth
Clojars (Clojure) 31309 31312 31313 31314 31314 31315 31316 1/day
CPAN 45249 45251 45251 45251 45251 45251 45252 1/day
CPAN (search) 5/day
CRAN (R) 21077 21091 21091 21099 21099 21094 21094 3/day
Crates.io (Rust) 151691 151796 151857 151953 152058 152165 152316 104/day
Crystal Shards 2/day
Drupal (php) 51984 51986 51988 51995 51999 52006 52010 4/day
DUB (dlang) 2478 2479 2479 2479 0/day
Gopm (go) 22377 22377 22377 22377 22377 22377 22377 0/day
Hackage (Haskell) 17859 17859 17862 17863 17863 17865 17870 2/day
Hex.pm (Elixir/Erlang) 16382 16386 16393 16398 16404 16409 16423 7/day
Julia 0/day
LuaRocks (Lua) 4588 4587 4590 4593 4593 4598 4601 2/day
Maven Central (Java) 616845 616896 616936 617051 617176 617826 618090 195/day
MELPA (Emacs) 2/day
Nimble (Nim) 2390 2390 2390 2390 2390 2390 2391 0/day
npm (node.js) 3404729 3410418 3415634 3417701 3418969 3423741 3631/day
nuget (.NET) 410537 410600 410662 410788 410933 411129 411442 143/day
Packagist (PHP) 402370 402348 402405 402462 402540 402621 402684 52/day
Pear (PHP) 603 603 603 603 603 603 603 0/day
Perl 6 Ecosystem (perl 6) 200 200 200 200 200 200 200 0/day
PyPI 201/day
Rubygems.org 181619 181627 181638 181652 181668 181681 181694 12/day
Vim Scripts 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 23, 2019) Update Crates.io, Julia, and LuaRocks after site changes. Also upgrade LOTS of ruby gems and get off a deprecated Heroku stack.

(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.