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
Mar 17 Mar 18 Mar 19 Mar 20 Mar 21 Mar 22 Mar 23 Avg Growth
Clojars (Clojure) 23672 23677 23686 23692 23700 23703 23709 6/day
CPAN 39636 39638 39640 39647 39650 39653 39653 3/day
CPAN (search) 5/day
CRAN (R) 13901 13903 13910 13912 13911 13913 13929 5/day
Crates.io (Rust) 23778 23818 23846 23877 23910 23937 23972 32/day
Crystal Shards 4263 4265 4269 4268 4271 4269 4271 1/day
Drupal (php) 42736 42736 42747 42755 42764 42775 42784 7/day
DUB (dlang) 1522 1523 1524 1525 1526 1526 1526 0/day
Gopm (go) 22666 22682 22688 22696 22707 22710 22718 8/day
Hackage (Haskell) 13651 13651 13656 13657 13659 13661 13662 2/day
Hex.pm (Elixir/Erlang) 7890 7895 7901 7904 7912 7915 7916 4/day
Julia 1906 1906 1906 1906 1906 1906 1906 0/day
LuaRocks (Lua) 1/day
Maven Central (Java) 271697 271783 271886 272028 272150 272278 272331 106/day
MELPA (Emacs) 4112 4112 4112 4112 4112 4118 4122 2/day
Nimble (Nim) 919 920 922 923 924 925 925 1/day
npm (node.js) 789657 790249 790871 791520 792158 792805 793196 590/day
nuget (.NET) 146199 146411 146516 146638 146638 147062 147204 168/day
Packagist (PHP) 214528 214636 214824 214936 215092 215234 215341 136/day
Pear (PHP) 602 602 602 602 602 602 602 0/day
Perl 6 Ecosystem (perl 6) 1339 1340 1340 1341 1341 1341 1341 0/day
PyPI 172290 172422 172554 172702 172824 172980 173074 125/day
Rubygems.org 150892 150910 150935 150970 150997 151024 151052 27/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.