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
May 15 May 16 May 17 May 18 May 19 May 20 May 21 Avg Growth
Clojars (Clojure) 31171 31172 31172 31172 31173 31175 31176 1/day
CPAN 45116 45120 45123 45127 45128 45130 45134 3/day
CPAN (search) 5/day
CRAN (R) 20707 20721 20737 20742 20740 20740 20739 5/day
Crates.io (Rust) 145767 145867 145949 145879 145962 146052 146177 70/day
Crystal Shards 2/day
Drupal (php) 51692 51696 51701 51706 51708 51710 51722 5/day
DUB (dlang) 2457 2457 2458 2458 2458 2458 2458 0/day
Gopm (go) 22377 22377 22377 22377 22377 22377 22377 0/day
Hackage (Haskell) 17802 17804 17805 17805 17805 17806 17806 1/day
Hex.pm (Elixir/Erlang) 16042 16050 16055 16062 16062 16065 16073 6/day
Julia 0/day
LuaRocks (Lua) 4479 4480 4481 4481 4482 4483 4483 1/day
Maven Central (Java) 607122 607339 607446 607590 607704 607749 607795 114/day
MELPA (Emacs) 2/day
Nimble (Nim) 2364 2364 2365 2365 2365 2365 2365 0/day
npm (node.js) 2994690 2997042 3000377 3011944 3022538 3020740 3025281 6397/day
nuget (.NET) 404656 404862 404929 405024 405064 404642 403097 -189/day
Packagist (PHP) 397762 397818 397886 397962 398017 398091 398161 69/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 180752 180764 180771 180782 180792 180799 180808 10/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.