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
Aug 8 Aug 9 Aug 10 Aug 11 Aug 12 Aug 13 Aug 14 Avg Growth
Clojars (Clojure) 28140 28142 28142 28146 28148 28153 28154 2/day
CPAN 42802 42805 42807 42809 42812 42812 42813 2/day
CPAN (search) 5/day
CRAN (R) 17974 17983 17999 18000 18004 18014 18016 7/day
Crates.io (Rust) 65451 65501 65543 65599 65664 65730 65805 59/day
Crystal Shards 2/day
Drupal (php) 47499 47501 47505 47506 47509 47512 47515 3/day
DUB (dlang) 1/day
Gopm (go) 7/day
Hackage (Haskell) 16024 16025 16028 16029 16030 16031 16032 1/day
Hex.pm (Elixir/Erlang) 11823 11827 11831 11838 11840 11844 11855 5/day
Julia 0/day
LuaRocks (Lua) 2870 2872 2873 2874 2874 2875 2875 1/day
Maven Central (Java) 422499 422542 422988 423260 423337 423337 423337 140/day
MELPA (Emacs) 2/day
Nimble (Nim) 1684 1684 1684 1684 1684 1685 1686 0/day
npm (node.js) 1694059 1694922 1695987 1696846 1697993 1699134 1699779 953/day
nuget (.NET) 268361 268400 268600 268833 268833 269243 269323 160/day
Packagist (PHP) 316307 316388 316453 316571 316662 316769 316849 90/day
Pear (PHP) 603 603 603 603 603 603 603 0/day
Perl 6 Ecosystem (perl 6) 1852 1852 1853 1853 1854 1854 1854 0/day
PyPI 320239 320433 320666 320862 321101 321318 321474 206/day
Rubygems.org 167492 167503 167520 167526 167539 167553 167575 14/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 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 [email protected].

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.