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 25 May 26 May 27 May 28 May 29 May 30 May 31 Avg Growth
Clojars (Clojure) 27925 27928 27932 27933 27935 27938 27939 2/day
CPAN 42575 42579 42584 42586 42591 42592 42594 3/day
CPAN (search) 5/day
CRAN (R) 17648 17648 17628 17636 17636 17634 17649 0/day
Crates.io (Rust) 61579 61646 61703 61749 61805 61865 61910 55/day
Crystal Shards 6264 6264 6265 6268 6268 6211 6271 1/day
Drupal (php) 47180 47189 47193 47198 47202 47205 47209 5/day
DUB (dlang) 1/day
Gopm (go) 7/day
Hackage (Haskell) 15860 15862 15863 15867 15871 15872 15873 2/day
Hex.pm (Elixir/Erlang) 11547 11550 11553 11558 11563 11564 11573 4/day
Julia 0/day
LuaRocks (Lua) 2791 2791 2792 2794 2794 2794 2796 1/day
Maven Central (Java) 407595 407914 408163 408489 408756 408894 409094 250/day
MELPA (Emacs) 2/day
Nimble (Nim) 1626 1627 1627 1628 1629 1629 1630 1/day
npm (node.js) 1618458 1619726 1620835 1621902 1622542 1623116 1623990 922/day
nuget (.NET) 258671 258897 259063 259247 259398 259558 259620 158/day
Packagist (PHP) 309644 309763 309886 309965 310014 310083 310169 88/day
Pear (PHP) 603 603 603 603 603 603 603 0/day
Perl 6 Ecosystem (perl 6) 1807 1807 1808 1810 1810 1810 1810 1/day
PyPI 306628 306945 307161 307340 307493 307627 307769 190/day
Rubygems.org 166488 166510 166526 166539 166551 166557 166573 14/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 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.