# Similar crates (crates.io)

**URL:** <https://internals.rust-lang.org/t/similar-crates-crates-io/21644>\
**Category:** tools and infrastructure\
**Created:** [October 1, 2024, 10:23pm UTC](https://internals.rust-lang.org/t/similar-crates-crates-io/21644 "2024-10-01T22:23:23Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![rxdiscovery](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/rxdiscovery/32/11755_2.png) [@rxdiscovery](https://internals.rust-lang.org/u/rxdiscovery)\
**Post date:** [October 1, 2024, 10:23pm UTC](https://internals.rust-lang.org/t/similar-crates-crates-io/21644/1 "2024-10-01T22:23:23Z")

</div>

Hello,

I have a proposal concerning “[Crates.io](http://Crates.io)”, why not add the possibility for the community to specify similar crates, for example add a button next to the crate description entitled: **“Propose a similar crate”**.

This will give you access to a section at the bottom entitled **“Similar crates”** , which will allow you to find alternatives (for a depreciated or unmaintained Crate), or why not find a crate even more suited to the needs of your project.

this functionality can be found in many online application stores, and why not apply it to the world of programming.

What do you think? 🥸

---

<div class="post-metadata">

**Author:** ![kpreid](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/kpreid/32/8484_2.png) [@kpreid](https://internals.rust-lang.org/u/kpreid)\
**Post date:** [October 1, 2024, 10:57pm UTC](https://internals.rust-lang.org/t/similar-crates-crates-io/21644/2 "2024-10-01T22:57:30Z")

</div>

Such a feature could be spammed to direct users from a perfectly good crate to a malicious one, or just to add links that are unsolicited advertising more than they are useful recommendations. That doesn't mean it definitely shouldn't exist, just that it would have a significant cost in moderation labor, and sometimes be worse than if it didn't exist.

---

<div class="post-metadata">

**Author:** ![farnz](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/farnz/32/6587_2.png) [@farnz](https://internals.rust-lang.org/u/farnz)\
**Post date:** [October 2, 2024, 7:59am UTC](https://internals.rust-lang.org/t/similar-crates-crates-io/21644/3 "2024-10-02T07:59:20Z")

</div>

Note that [https://lib.rs/](https://lib.rs/) already has a similar feature; if you look at the bottom of a [crate page like this one for `miette`](https://lib.rs/crates/miette), you'll see that the footer bar contains a "Related" list and a "See also" list, of crates that you might be interested in.

In general, @kornel does an incredible job making [lib.rs](https://lib.rs/) a useful and opinionated alternative to [crates.io](http://crates.io) - and I rather like the split between [crates.io](http://crates.io) as a fairly dull and factual listing of the things that the crate author supplied, and [lib.rs](https://lib.rs/) as a more opinionated service for cases where I'm searching for a crate with functionality I need, but don't have a specific crate name in mind.

---

<div class="post-metadata">

**Author:** ![idanarye](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/idanarye/32/3346_2.png) [@idanarye](https://internals.rust-lang.org/u/idanarye)\
**Post date:** [October 2, 2024, 10:33am UTC](https://internals.rust-lang.org/t/similar-crates-crates-io/21644/4 "2024-10-02T10:33:10Z")

</div>

"crate closed as duplicate"

---

<div class="post-metadata">

**Author:** ![kornel](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/kornel/32/2711_2.png) [@kornel](https://internals.rust-lang.org/u/kornel)\
**Post date:** [October 3, 2024, 8:43pm UTC](https://internals.rust-lang.org/t/similar-crates-crates-io/21644/5 "2024-10-03T20:43:47Z")

</div>

BTW, I'm working on improving this into a proper recommendations system.

---

<div class="post-metadata">

**Author:** ![Vorpal](https://avatars.discourse-cdn.com/v4/letter/v/aca169/32.png) [@Vorpal](https://internals.rust-lang.org/u/Vorpal)\
**Post date:** [October 3, 2024, 9:30pm UTC](https://internals.rust-lang.org/t/similar-crates-crates-io/21644/6 "2024-10-03T21:30:14Z")

</div>

> [@kornel](#):
>
> proper recommendations system

Hm, Isn't that the thing on online shops that say "you may also be interested in" and "other people have also bought". Those often throw the wildest and most useless suggestions (you added some neodymium magnets to your shopping cart, do you also want toothpaste?), so hopefully you can figure out something better.

---

<div class="post-metadata">

**Author:** ![rxdiscovery](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/rxdiscovery/32/11755_2.png) [@rxdiscovery](https://internals.rust-lang.org/u/rxdiscovery)\
**Post date:** [October 3, 2024, 9:34pm UTC](https://internals.rust-lang.org/t/similar-crates-crates-io/21644/7 "2024-10-03T21:34:19Z")

</div>

> [@kpreid](#):
>
> Such a feature could be spammed to direct users from a perfectly good crate to a malicious one, or just to add links that are unsolicited advertising more than they are useful recommendations. That doesn't mean it definitely shouldn't exist, just that it would have a significant cost in moderation labor, and sometimes be worse than if it didn't exist.

you're right about the case of malicious use, we need a decentralized moderation model, for example a voting system?

> [@farnz](#):
>
> Note that [https://lib.rs/](https://lib.rs/) already has a similar feature; if you look at the bottom of a [crate page like this one for `miette`](https://lib.rs/crates/miette), you'll see that the footer bar contains a "Related" list and a "See also" list, of crates that you might be interested in.
> 
> In general, @kornel does an incredible job making [lib.rs](https://lib.rs/) a useful and opinionated alternative to [crates.io](http://crates.io) - and I rather like the split between [crates.io](http://crates.io) as a fairly dull and factual listing of the things that the crate author supplied, and [lib.rs](https://lib.rs/) as a more opinionated service for cases where I'm searching for a crate with functionality I need, but don't have a specific crate name in mind.

**lib.rs** is a really feature-rich site, it would be nice to merge [crates.io](http://crates.io) with lib.rs

> [@kornel](#):
>
> BTW, I'm working on improving this into a proper recommendations system.

interesting, but what kind of strategy will you use to find the similarity?

tags? or why not use an A.I. to read the description of each crate and generate internal tags that can then be used to group crates by similarity?

---

<div class="post-metadata">

**Author:** ![Vorpal](https://avatars.discourse-cdn.com/v4/letter/v/aca169/32.png) [@Vorpal](https://internals.rust-lang.org/u/Vorpal)\
**Post date:** [October 3, 2024, 10:01pm UTC](https://internals.rust-lang.org/t/similar-crates-crates-io/21644/8 "2024-10-03T22:01:57Z")

</div>

> [@rxdiscovery](#):
>
> **lib.rs** is a really feature-rich site, it would be nice to merge [crates.io](http://crates.io) with lib.rs

I think that is never going to happen, [crates.io](http://crates.io) doesn't want to be opinionated. Stick to the terms of service and that is it.

That said, there are parts of lib.rs that are not about being opinionated that [crates.io](http://crates.io) should take inspiration from. For example: the lib.rs UI is more responsive and presents data in a more useful order (especially on mobile). Things like the most recent publication date and graph of downloads are right near the top, on [crates.io](http://crates.io) you have to scroll all the way to the bottom when on a phone.

The way dependencies and features are presented is also leagues ahead on lib.rs.

---

<div class="post-metadata">

**Author:** ![kornel](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/kornel/32/2711_2.png) [@kornel](https://internals.rust-lang.org/u/kornel)\
**Post date:** [October 4, 2024, 7:14pm UTC](https://internals.rust-lang.org/t/similar-crates-crates-io/21644/9 "2024-10-04T19:14:41Z")

</div>

Currently the "see also" is based on crates' keywords, and shows crates that have the most similar keywords. But this fails sometimes, because not all keywords are meaningful as a category, e.g. "no-std" covers too many dissimilar things. I use TF-IDF to correct for that, but also niche keywords like "blazing-fast" can be meaningless.

I'm working on a UI to let anybody create a category on lib.rs, based on more sophisticated search queries that can include and exclude many terms. Then I'll have crates grouped by niches that hopefully people care about.

---

<div class="post-metadata">

**Author:** ![bascule](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/bascule/32/3057_2.png) [@bascule](https://internals.rust-lang.org/u/bascule)\
**Post date:** [October 5, 2024, 2:20pm UTC](https://internals.rust-lang.org/t/similar-crates-crates-io/21644/10 "2024-10-05T14:20:26Z")

</div>

> [@rxdiscovery](#):
>
> for a depreciated or unmaintained Crate

The [RustSec Advisory DB](https://rustsec.org) maintains information about unmaintained crates including a curated list of alternatives

---

<div class="post-metadata">

**Author:** ![Aloso](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/aloso/32/5039_2.png) [@Aloso](https://internals.rust-lang.org/u/Aloso)\
**Post date:** [October 6, 2024, 11:42pm UTC](https://internals.rust-lang.org/t/similar-crates-crates-io/21644/11 "2024-10-06T23:42:35Z")

</div>

There are [machine learning algorithms](https://www.geeksforgeeks.org/keyword-extraction-methods-in-nlp/) you could use to extract key words from the readme, and use them for identifying similar crates. The key words could also be useful to improve the relevance of search results.

---

<div class="post-metadata">

**Author:** ![steffahn](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/steffahn/32/13288_2.png) [@steffahn](https://internals.rust-lang.org/u/steffahn)\
**Post date:** [March 30, 2026, 11:43pm UTC](https://internals.rust-lang.org/t/similar-crates-crates-io/21644/12 "2026-03-30T23:43:28Z")

</div>

This topic was automatically closed 540 days after the last reply. New replies are no longer allowed.
