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
Jul 9 Jul 10 Jul 11 Jul 12 Jul 13 Jul 14 Jul 15 Avg Growth
Clojars (Clojure) 22156 22162 22168 22173 22177 22181 22184 5/day
CPAN 38582 38584 38587 38587 38590 38595 38595 2/day
CPAN (search) 5/day
CRAN (R) 12726 12727 12744 12747 12748 12765 12756 5/day
Crates.io (Rust) 16776 16792 16808 16828 16845 16875 16888 19/day
Crystal Shards 3382 3388 3397 3403 3407 3412 3413 5/day
Drupal (php) 40946 40972 40984 40990 41000 41010 41014 11/day
DUB (dlang) 1342 1344 1344 1345 1346 1346 1346 1/day
Gopm (go) 20480 20482 20493 20498 20500 20506 20507 4/day
Hackage (Haskell) 12860 12862 12867 12870 12872 12872 12875 2/day
Hex.pm (Elixir/Erlang) 6613 6616 6619 6624 6629 6637 6648 6/day
Julia 1876 1880 1880 1888 1888 1885 1885 1/day
LuaRocks (Lua) 1875 1878 1880 1880 1880 1881 1882 1/day
Maven Central (Java) 239118 239206 239409 239507 239603 239696 239746 105/day
MELPA (Emacs) 3890 3890 3890 3890 3890 3890 3890 0/day
Nimble (Nim) 714 715 715 717 717 719 721 1/day
npm (node.js) 659859 660411 661027 661582 662072 662816 663144 547/day
nuget (.NET) 119825 119888 120069 120214 120230 120448 120534 118/day
Packagist (PHP) 188312 188472 188606 188728 188859 188948 189013 117/day
Pear (PHP) 602 602 602 602 602 602 602 0/day
Perl 6 Ecosystem (perl 6) 1170 1171 1173 1174 1174 1174 1175 1/day
PyPI 144269 144375 144497 144611 144724 144877 144929 110/day
Rubygems.org 144776 144807 144838 144869 144898 144912 144924 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.