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
Apr 13 Apr 14 Apr 15 Apr 16 Apr 17 Apr 18 Apr 19 Avg Growth
Clojars (Clojure) 21520 21525 21533 21542 21552 21572 21581 10/day
CPAN 36304 36307 36307 36311 36314 36315 36318 2/day
CPAN (search) 36304 36307 36308 36311 36314 36315 36318 2/day
CRAN (R) 12480 12485 12484 12488 12501 12503 12507 6/day
Crates.io (Rust) 15198 15213 15231 15252 15279 15295 15321 19/day
Crystal Shards 3045 3047 3048 3056 3060 3065 3068 4/day
Drupal (php) 40306 40313 40314 40316 40332 40339 40347 8/day
DUB (dlang) 1275 1276 1275 1276 1277 1277 1279 1/day
Gopm (go) 20157 20157 20157 20157 20157 20157 20157 0/day
Hackage (Haskell) 12517 12522 12523 12526 12529 12532 12535 3/day
Hex.pm (Elixir/Erlang) 6144 6153 6157 6165 6175 6184 6191 8/day
Julia 1806 1809 1809 1813 1813 1813 1813 1/day
LuaRocks (Lua) 1763 1764 1765 1766 1767 1767 1773 2/day
Maven Central (Java) 228695 228870 228915 228959 229085 229226 229359 111/day
MELPA (Emacs) 3788 3788 3788 3789 3789 3789 3789 0/day
Nimble (Nim) 645 645 645 645 648 649 649 1/day
npm (node.js) 614415 614811 615158 615781 616396 616987 617612 533/day
nuget (.NET) 110055 110177 110234 110311 110426 110518 110701 108/day
Packagist (PHP) 183144 183266 183355 183516 183691 183877 183999 143/day
Pear (PHP) 602 602 602 602 602 602 602 0/day
Perl 6 Ecosystem (perl 6) 1077 1079 1079 1078 1080 1082 1083 1/day
PyPI 135201 135277 135350 135464 93/day
Rubygems.org 142349 142371 142384 142407 142442 142490 142532 31/day
Vim Scripts 5533 5533 5533 5533 5533 5533 5533 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).

(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.

(Aug 6, 2017) Go back to single-threaded fetch, as doing it in parallel seems to be causing intermittent sampling failures. Update DUB entry for new wording on their site.

(May 14, 2017) Upgrade to Rails 5.1, ruby 2.4.1, switch from unicorn to puma, and add Vim Scripts repository. I can't believe I've had emacs for so long and no one has mentioned vim has its own repository.

(Apr 2, 2017) Added Julia to list. Thanks to Bargava Subramanian for pointing it out. Return CSV download feature.

(Mar 17, 2017) Bower and GoDoc haven't been pulling numbers for a long time, and it doesn't seem to just be a matter of the number moving somewhere new. I'm removing them both, and adding Gopm.io, which seems to be more in-line with most languages' ideas about what a package manager is. Big thanks to Jesse Aldridge for pointing me to it.

(May 30, 2016) Much thanks to Hiroki Noda for adding DUB (dlang). Fixed Hex.pm sampling, and removed link to CSV download until I can re-engineer it.

(Apr 8, 2016) Updates to Rubygems.org and Npmjs.org broke both of those samplers.

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.