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 14 Mar 15 Mar 16 Mar 17 Mar 18 Mar 19 Mar 20 Avg Growth
Clojars (Clojure) 23656 23662 23670 23672 23677 23686 23692 6/day
CPAN 39624 39629 39631 39636 39638 39640 39647 4/day
CPAN (search) 5/day
CRAN (R) 13884 13881 13898 13901 13903 13910 13912 6/day
Crates.io (Rust) 23671 23701 23740 23778 23818 23846 23877 33/day
Crystal Shards 4261 4262 4262 4263 4265 4269 4268 1/day
Drupal (php) 42727 42733 42736 42736 42736 42747 42755 5/day
DUB (dlang) 1523 1524 1524 1522 1523 1524 1525 0/day
Gopm (go) 22656 22664 22665 22666 22682 22688 22696 7/day
Hackage (Haskell) 13641 13644 13648 13651 13651 13656 13657 3/day
Hex.pm (Elixir/Erlang) 7877 7882 7888 7890 7895 7901 7904 4/day
Julia 1906 1906 1906 1906 1906 1906 1906 0/day
LuaRocks (Lua) 1/day
Maven Central (Java) 271405 271529 271617 271697 271783 271886 272028 97/day
MELPA (Emacs) 4112 4112 4112 4112 4112 4112 4112 0/day
Nimble (Nim) 917 918 919 919 920 922 923 1/day
npm (node.js) 788206 788815 789274 789657 790249 790871 791520 573/day
nuget (.NET) 145742 145928 146142 146199 146411 146516 146638 149/day
Packagist (PHP) 214223 214335 214451 214528 214636 214824 214936 125/day
Pear (PHP) 602 602 602 602 602 602 602 0/day
Perl 6 Ecosystem (perl 6) 1338 1338 1339 1339 1340 1340 1341 0/day
PyPI 171992 172108 172201 172290 172422 172554 172702 125/day
Rubygems.org 150819 150852 150874 150892 150910 150935 150970 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.