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 22 Mar 23 Mar 24 Mar 25 Mar 26 Mar 27 Mar 28 Avg Growth
Clojars (Clojure) 31061 31064 31064 31065 31067 31067 31070 1/day
CPAN 44979 44981 44986 44988 44989 44990 44991 2/day
CPAN (search) 5/day
CRAN (R) 20628 20647 20620 20619 20618 20630 20631 2/day
Crates.io (Rust) 140971 141055 141149 141258 141365 141455 94/day
Crystal Shards 2/day
Drupal (php) 51478 51482 51486 51486 51497 51502 51506 5/day
DUB (dlang) 2451 2451 2451 2452 2452 2452 2452 0/day
Gopm (go) 22377 22377 22377 22377 22377 22377 22377 0/day
Hackage (Haskell) 17737 17737 17738 17740 17741 17743 17744 2/day
Hex.pm (Elixir/Erlang) 15754 15763 15772 15784 15790 15796 15801 7/day
Julia 0/day
LuaRocks (Lua) 4388 4391 4392 4391 4393 4395 4405 3/day
Maven Central (Java) 598927 599042 599101 599219 599365 599913 600311 214/day
MELPA (Emacs) 2/day
Nimble (Nim) 2331 2331 2331 2334 2334 2335 2335 1/day
npm (node.js) 2744953 2754647 2758415 2761490 2767354 2769871 2774074 4832/day
nuget (.NET) 396563 396743 396856 396967 397106 397177 397397 136/day
Packagist (PHP) 394237 394316 394387 394501 394592 394702 394790 91/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 185770 185778 186590 188137 188805 188819 188840 603/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.