kornel
April 28, 2020, 10:33pm
1
I've added a new type of chart on reverse dependencies pages on lib.rs .
I've analyzed how dependencies change over time. Specifically, I note when crates change their dependencies, and stop using some of them. This lets me graph dependency additions and removals over time.
I've used this data to make a chart of "active" reverse dependencies over time. By active I mean crates when they use a given dependency, and haven't removed it (yet) in a later release. Additionally crates stop being counted as actively using a dependency when they appear to be abandoned themselves.
For crates that are dead, this gives an armadillo-shaped charts! Here's the gcc crate (red is when it's losing popularity):
and here's one for rustc-serialize :
and here's serde doing well :
The data also shows how failure is getting dethroned by thiserror/anyhow .
I'm very happy how clear this data turned out. Download numbers don't show these trends clearly, e.g. the obsolete gcc
crate has still 130K downloads per month! The cc
replacement has 6 times more downloads now, but 57 times more active reverse dependencies.
32 Likes
This is awesome!
kornel:
Download numbers don't show these trends clearly, e.g. the obsolete gcc
crate has still 130K downloads per month! The cc
replacement has 6 times more downloads now, but 57 times more active reverse dependencies.
This makes me think of playground's "we include the top 100 crates" threshold, which I think is currently by downloads. Maybe there's a way you could turn your new metrics here into a better top-100? (Something that would still change slowly, maybe "new reverse deps in the last year" or something, re-evaluated with every stable release?)
3 Likes
Here is my explanation for these armadillo charts:
Click to see
5 Likes
mmmmib
April 29, 2020, 12:43am
4
Nice tool! What is your definition of "abandoned" in
Additionally crates stop being counted as actively using a dependency when they appear to be abandoned themselves.
?
kornel
April 29, 2020, 9:18am
5
For purpose of this chart currently crates stop being counted as active 1 year after their last release. I'll be tweaking it to use a better estimate, taking into account frequency of releases, whether it's >1.0, maybe maintenance badge status, etc.
1 Like
Wow, this is a really powerful tool. The graphs look like a much better measure of popularity than things like recent or total downloads.
Thank you.
3 Likes
I've tuned the algorithm a bit and applied it as a ranking factor now.
I wonder what happened to the gfx crate? Reverse dependencies of gfx // Lib.rs
For those curious, here's a list of crates most affected by the change:
0.009 serde_codegen 0.9.0 [deprecated] // Lib.rs (peak 306, now 0)
0.010 https://lib.rs/serde_macros (peak 275, now 0)
0.045 rustc-serialize 0.3.24 [deprecated] // Lib.rs (peak 512, now 56)
0.057 tokio-core 0.1.18 [deprecated] // Lib.rs (peak 401, now 56)
0.066 Syntex 0.58.1 [deprecated] // Lib.rs (peak 148, now 3)
0.089 clippy 0.0.302 [deprecated] // Lib.rs (peak 235, now 41)
0.125 drone-cortex-m 0.11.1 [deprecated] // Lib.rs (peak 37, now 1)
0.192 GCC β utility for Rust // Lib.rs (peak 172, now 7)
0.221 tokio-proto 0.1.1 [deprecated] // Lib.rs (peak 38, now 4)
0.238 error-chain 0.12.4 [deprecated] // Lib.rs (peak 474, now 183)
See More
0.252 regex_macros 0.2.0 [deprecated] // Lib.rs (peak 20, now 0)
0.267 futures-preview 0.3.0-alpha.19 [deprecated] // Lib.rs (peak 172, now 76)
0.273 reproto-core 0.3.36 [deprecated] // Lib.rs (peak 26, now 0)
0.274 number_traits 0.2.4 [deprecated] // Lib.rs (peak 18, now 0)
0.312 etcommon-bigint 0.2.10 [deprecated] // Lib.rs (peak 22, now 2)
0.315 crypto-tests 0.5.5 [deprecated] // Lib.rs (peak 17, now 1)
0.325 tokio-net 0.2.0-alpha.6 [deprecated] // Lib.rs (peak 27, now 3)
0.335 clock_ticks β Rust date/time library // Lib.rs (peak 16, now 0)
0.348 isatty β CLI for Rust // Lib.rs (peak 27, now 5)
0.352 futures-util-preview 0.3.0-alpha.19 [deprecated] // Lib.rs (peak 69, now 15)
0.378 rocket_codegen β Rust proc macro helper // Lib.rs (peak 29, now 3)
0.380 susyp2p-core β Rust network library // Lib.rs (peak 17, now 0)
0.384 https://lib.rs/ordermap (peak 21, now 3)
0.389 Runtime 0.3.0-alpha.8 [deprecated] // Lib.rs (peak 27, now 9)
0.390 futures-core-preview 0.3.0-alpha.19 [deprecated] // Lib.rs (peak 74, now 18)
0.391 Abscissa β Rust utility // Lib.rs (peak 16, now 0)
0.391 Simd β Rust HW library // Lib.rs (peak 16, now 1)
0.392 CBOR β Rust data encoding library // Lib.rs (peak 13, now 0)
0.398 chan 0.1.23 [deprecated] // Lib.rs (peak 22, now 5)
0.401 cpp_utils β Rust dev tool // Lib.rs (peak 12, now 0)
0.407 futures-cpupool 0.1.8 [deprecated] // Lib.rs (peak 71, now 20)
0.415 https://lib.rs/dpdk-sys (peak 15, now 0)
0.415 lark-debug-with β Rust library // Lib.rs (peak 15, now 0)
0.423 maidsafe_utilities β Rust library // Lib.rs (peak 18, now 3)
0.424 etcommon-rlp β suspicious unregulated finances, in Rust // Lib.rs (peak 16, now 2)
0.433 hashmap_core β data structures in Rust // Lib.rs (peak 14, now 2)
0.434 Docopt 1.1.1 [deprecated] // Lib.rs (peak 110, now 57)
0.435 lark-intern β Rust utility // Lib.rs (peak 14, now 0)
0.435 reproto-manifest β Rust web dev library // Lib.rs (peak 14, now 0)
0.440 panic-abort β bare metal library for Rust // Lib.rs (peak 14, now 2)
0.441 Version β Rust library // Lib.rs (peak 25, now 6)
0.443 tokio-io β async Rust library // Lib.rs (peak 191, now 70)
0.450 etcommon-hexutil β suspicious unregulated finances, in Rust // Lib.rs (peak 16, now 3)
0.451 sardonyx_error 0.0.3 [deprecated] // Lib.rs (peak 15, now 1)
0.456 lark-string β Rust library // Lib.rs (peak 13, now 0)
0.456 reproto-trans β Rust web dev library // Lib.rs (peak 13, now 0)
0.460 url_serde 0.2.0 [deprecated] // Lib.rs (peak 38, now 16)
0.468 bodyparser β server-side Rust // Lib.rs (peak 11, now 0)
0.468 heapsize_plugin β Rust library // Lib.rs (peak 10, now 0)
0.469 https://lib.rs/hyper-native-tls (peak 52, now 13)
0.471 https://lib.rs/chan-signal (peak 14, now 2)
0.473 https://lib.rs/abstract-ns (peak 12, now 0)
0.473 https://lib.rs/sardonyx_core (peak 14, now 1)
0.473 https://lib.rs/stainless (peak 10, now 0)
0.478 https://lib.rs/syntex_syntax (peak 33, now 2)
0.483 https://lib.rs/ethereum-rlp (peak 13, now 1)
0.485 https://lib.rs/unic-ucd-version (peak 18, now 0)
0.488 https://lib.rs/tokio-service (peak 41, now 9)
0.491 https://lib.rs/gfx (peak 39, now 18)
0.492 https://lib.rs/tokio-codec (peak 97, now 48)
0.493 https://lib.rs/futures-await (peak 10, now 0)
0.494 https://lib.rs/iron (peak 75, now 30)
0.497 https://lib.rs/languageserver-types (peak 12, now 1)
0.498 https://lib.rs/genco (peak 11, now 0)
0.499 https://lib.rs/sputnikvm (peak 11, now 0)
0.500 https://lib.rs/ethereum-bigint (peak 27, now 10)
0.500 https://lib.rs/ethereum-hexutil (peak 14, now 2)
0.506 https://lib.rs/lark-entity (peak 11, now 0)
0.506 https://lib.rs/libflo_module (peak 11, now 0)
0.506 https://lib.rs/reproto-backend (peak 11, now 0)
0.506 https://lib.rs/routing (peak 10, now 0)
0.508 https://lib.rs/tokio-tcp (peak 58, now 14)
0.510 https://lib.rs/unix_socket (peak 20, now 7)
0.515 https://lib.rs/user32-sys (peak 26, now 5)
0.521 https://lib.rs/xor_name (peak 9, now 0)
0.522 https://lib.rs/unic-char-range (peak 17, now 1)
0.525 https://lib.rs/tokio-async-await (peak 9, now 0)
0.532 https://lib.rs/tokio-timer (peak 96, now 35)
0.533 https://lib.rs/unic-char-property (peak 16, now 0)
0.534 https://lib.rs/commandext (peak 10, now 0)
0.534 https://lib.rs/dpdk-core (peak 10, now 0)
0.534 https://lib.rs/ethereumvm (peak 10, now 0)
0.534 https://lib.rs/lark-collections (peak 10, now 0)
0.534 https://lib.rs/lark-error (peak 10, now 0)
0.534 https://lib.rs/susy-multiaddr (peak 10, now 0)
0.534 https://lib.rs/tk-http (peak 10, now 0)
0.540 https://lib.rs/hyper-openssl (peak 16, now 5)
0.541 https://lib.rs/rust_sodium (peak 14, now 4)
0.542 https://lib.rs/heapsize (peak 22, now 10)
0.546 https://lib.rs/lyon_core (peak 8, now 0)
0.546 https://lib.rs/p-macro (peak 8, now 0)
0.548 https://lib.rs/i2cdev (peak 23, now 9)
0.549 https://lib.rs/solana-vote-api (peak 15, now 5)
0.551 https://lib.rs/rotor (peak 9, now 0)
0.560 https://lib.rs/ncollide (peak 8, now 0)
0.563 https://lib.rs/syscall (peak 8, now 0)
0.565 https://lib.rs/automaat-core (peak 9, now 0)
0.565 https://lib.rs/cognitive-qualia (peak 9, now 0)
0.565 https://lib.rs/lark-span (peak 9, now 0)
0.565 https://lib.rs/reproto-naming (peak 9, now 0)
0.565 https://lib.rs/susyp2p-tcp (peak 9, now 0)
0.567 https://lib.rs/advapi32-sys (peak 13, now 1)
0.568 https://lib.rs/iron-test (peak 11, now 2)
0.572 https://lib.rs/html5ever-atoms (peak 11, now 2)
0.576 https://lib.rs/ip (peak 9, now 0)
0.579 https://lib.rs/amethyst_renderer (peak 8, now 0)
0.581 https://lib.rs/sardonyx_assets (peak 10, now 1)
0.582 https://lib.rs/kernel32-sys (peak 110, now 25)
0.584 https://lib.rs/ncollide_math (peak 8, now 0)
0.585 https://lib.rs/ns-std-threaded (peak 8, now 0)
0.586 https://lib.rs/assert (peak 16, now 6)
0.586 https://lib.rs/elastic-array (peak 7, now 0)
0.592 https://lib.rs/lsio (peak 8, now 0)
0.592 https://lib.rs/lucet-module-data (peak 7, now 0)
0.592 https://lib.rs/timber (peak 8, now 0)
0.599 https://lib.rs/cretonne-codegen (peak 8, now 0)
0.599 https://lib.rs/kailua_env (peak 8, now 0)
0.599 https://lib.rs/lark-debug-derive (peak 8, now 0)
0.599 https://lib.rs/lark-hir (peak 8, now 0)
0.599 https://lib.rs/lark-parser (peak 8, now 0)
0.599 https://lib.rs/lark-ty (peak 8, now 0)
0.599 https://lib.rs/preftool (peak 8, now 0)
0.599 https://lib.rs/rust-extra (peak 8, now 0)
0.600 https://lib.rs/tokio-retry (peak 12, now 4)
0.604 https://lib.rs/futures-executor-preview (peak 25, now 7)
0.606 https://lib.rs/quasi (peak 13, now 0)
0.607 https://lib.rs/futures-glib (peak 7, now 0)
0.607 https://lib.rs/seckey (peak 7, now 0)
0.608 https://lib.rs/solana_libra_proto_conv (peak 8, now 1)
0.610 https://lib.rs/failure_derive (peak 208, now 151)
0.610 https://lib.rs/slog-stream (peak 8, now 1)
0.612 https://lib.rs/rusoto (peak 7, now 0)
0.615 https://lib.rs/cpp_syn (peak 7, now 0)
0.616 https://lib.rs/solana-storage-api (peak 9, now 2)
0.618 https://lib.rs/afi (peak 7, now 0)
0.618 https://lib.rs/phf_macros (peak 9, now 1)
0.621 https://lib.rs/byte-tools (peak 22, now 3)
0.622 https://lib.rs/codeviz_common (peak 7, now 0)
0.622 https://lib.rs/ncollide_utils (peak 7, now 0)
0.623 https://lib.rs/local-encoding (peak 11, now 3)
0.625 https://lib.rs/ami (peak 6, now 0)
0.625 https://lib.rs/aster (peak 12, now 0)
0.625 https://lib.rs/etcommon-block (peak 8, now 0)
0.626 https://lib.rs/solana-stake-api (peak 10, now 3)
0.630 https://lib.rs/ns-router (peak 7, now 0)
0.630 https://lib.rs/reproto-ast (peak 7, now 0)
0.630 https://lib.rs/solana-jsonrpc-core (peak 7, now 0)
0.635 https://lib.rs/tokio-uds (peak 32, now 13)
0.635 https://lib.rs/winapi-build (peak 24, now 1)
0.638 https://lib.rs/bitconch-jsonrpc-core (peak 7, now 0)
0.638 https://lib.rs/bronzedb-util (peak 7, now 0)
0.638 https://lib.rs/buildable (peak 7, now 0)
0.638 https://lib.rs/checked-enum (peak 7, now 0)
0.638 https://lib.rs/derive-com-wrapper (peak 7, now 0)
0.638 https://lib.rs/i2csensors (peak 7, now 0)
0.638 https://lib.rs/kailua_diag (peak 7, now 0)
0.638 https://lib.rs/libflo (peak 7, now 0)
0.638 https://lib.rs/likely (peak 17, now 4)
0.638 https://lib.rs/scm (peak 7, now 0)
0.638 https://lib.rs/tokio-threadpool (peak 36, now 13)
0.638 https://lib.rs/urlencoded (peak 14, now 6)
0.638 https://lib.rs/utils (peak 7, now 0)
0.643 https://lib.rs/gdi32-sys (peak 14, now 1)
0.644 https://lib.rs/mop-common (peak 6, now 0)
0.650 https://lib.rs/docopt_macros (peak 6, now 0)
0.651 https://lib.rs/syntex_errors (peak 12, now 0)
3 Likes
CAD97
May 2, 2020, 2:20am
8
gfx got deprecated in favor of the lower-level gfx-hal by the gfx-rs team.
The spiritual successor of gfx is wgpu , but it's also worth noting that most users that'd tough out using gfx rather than something even higher level will probably also use gfx-hal.
7 Likes
Sweet, so the data was right after all!
1 Like
kentnl
May 5, 2020, 11:49am
10
It would be interesting to see per version armadillo breakdown of revdeps.
Take for instance, https://lib.rs/crates/time/rev
Its pretty clear that 0.2 is quite unpopular vs 0.1 and people aren't motivated to migrate.
And crates.io
really doesn't do it justice:
system
Closed
August 3, 2020, 11:49am
11
This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.