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
Dec 3 Dec 4 Dec 5 Dec 6 Dec 7 Dec 8 Dec 9 Avg Growth
Clojars (Clojure) 23070 23078 23080 23090 23098 23103 23115 7/day
CPAN 39232 39232 39237 39240 39243 39247 39251 4/day
CPAN (search) 5/day
CRAN (R) 13510 13518 13517 13517 13515 13515 13516 4/day
Crates.io (Rust) 20655 20675 20692 20718 20750 20774 20796 26/day
Crystal Shards 4008 4012 4012 4016 4019 4024 3/day
Drupal (php) 41997 42000 42011 42016 42025 42038 42039 6/day
DUB (dlang) 1452 1453 1454 1/day
Gopm (go) 21330 21336 21342 21345 21355 21372 21372 6/day
Hackage (Haskell) 13288 13295 13297 13301 13305 13308 13309 3/day
Hex.pm (Elixir/Erlang) 7370 7372 7380 7382 7386 7393 7395 4/day
Julia 1906 1906 1906 1906 1906 1906 1906 0/day
LuaRocks (Lua) 1/day
Maven Central (Java) 258952 259066 259208 259351 259496 259576 259638 111/day
MELPA (Emacs) 4033 4033 4033 4034 4034 4034 4034 0/day
Nimble (Nim) 848 848 849 850 851 851 851 0/day
npm (node.js) 735830 736527 737145 737791 738352 738764 739111 542/day
nuget (.NET) 135563 135731 135878 136058 136165 136329 136358 123/day
Packagist (PHP) 204568 204694 204838 205002 205142 205224 205303 123/day
Pear (PHP) 602 602 602 602 602 602 602 0/day
Perl 6 Ecosystem (perl 6) 1269 1270 1270 1271 1271 1271 1271 0/day
PyPI 160433 160524 160642 160753 160873 160968 161043 101/day
Rubygems.org 148306 148324 148356 148387 148421 148445 148463 25/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.