Oct 15 | Oct 16 | Oct 17 | Oct 18 | Oct 19 | Oct 20 | Oct 21 | Avg Growth | |
---|---|---|---|---|---|---|---|---|
Clojars (Clojure) | 31431 | 31433 | 31434 | 31435 | 31437 | 31438 | 31440 | 1/day |
CPAN | 45412 | 45412 | 45414 | 45416 | 45416 | 45417 | 45420 | 1/day |
CPAN (search) | 5/day | |||||||
CRAN (R) | 21495 | 21501 | 21517 | 21528 | 21529 | 21529 | 21544 | 8/day |
Crates.io (Rust) | 160287 | 160400 | 160560 | 160651 | 160668 | 160767 | 160863 | 96/day |
Crystal Shards | 2/day | |||||||
Drupal (php) | 52355 | 52365 | 52379 | 52383 | 52391 | 52393 | 52394 | 6/day |
DUB (dlang) | 2493 | 2494 | 2495 | 2495 | 2495 | 2496 | 2497 | 1/day |
Gopm (go) | 22377 | 22377 | 22377 | 22377 | 22377 | 22377 | 22377 | 0/day |
Hackage (Haskell) | 17964 | 17966 | 17967 | 17967 | 17967 | 17968 | 17971 | 1/day |
Hex.pm (Elixir/Erlang) | 16822 | 16826 | 16829 | 16833 | 16837 | 16846 | 16853 | 5/day |
Julia | 0/day | |||||||
LuaRocks (Lua) | 4738 | 4740 | 4741 | 4741 | 4742 | 4743 | 4743 | 1/day |
Maven Central (Java) | 629584 | 629750 | 629910 | 630063 | 630130 | 630329 | 630376 | 132/day |
MELPA (Emacs) | 2/day | |||||||
Nimble (Nim) | -1/day | |||||||
npm (node.js) | 3361070 | 3362072 | 3362915 | 3363782 | 3362576 | 3361824 | 3362693 | 270/day |
nuget (.NET) | 421776 | 421818 | 421921 | 422106 | 422269 | 422359 | 422473 | 116/day |
Packagist (PHP) | 408238 | 408333 | 408419 | 408504 | 408557 | 408602 | 408673 | 72/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 | 182720 | 182733 | 182746 | 182760 | 182775 | 182783 | 182794 | 12/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.