Lib.rs (was Crates.rs) — what's next?

Since the site launched I've added search, keyword pages, improved categorization, and made the site refresh more often and include more crates. I still have a bunch of incremental improvements planned in these areas.

I hear a good feedback from people who use the site, but I'd like to also hear from people who don't use it. If you don't use lib.rs — why not?

  • I wonder if there's some critical functionality missing (there's certainly a long list of nice-to-haves, but what are the deal breakers?)

  • If you don't use it because you haven't heard of it, how can I spread the word (without being spammy)? How can I integrate it better with the Rust ecosystem?

17 Likes

Well to be completely honest, the only reason I don't use crates.rs is because I don't use crates.io all that much either; the main things I do in my workflow:

  • Code (vscode & IntelliJ & powershell with wsl sometimes)
  • Look at reference for a crate I'm using (docs.rs)
  • Hear about another interesting crate, usually 50/50 between crates.io and crates.rs then be uninterested in the stats, and dive into the github repo or the documentation
  • Upload a crate, which I do very infrequently (crates.io)

So to be completely honest, I don't use either too much, they are more like a portal into what really is important (The crate, The code, The docs).

2 Likes

It sounds like you might have already improved on this point, but I think I tried looking at crates.rs a while back, but noticed that it didn't have updated versions of crates. i.e., It was lagging behind crates.io. I think I stopped thinking about crates.rs at that point, because it's important to me to be able to see the latest updates. (e.g., "Did rand make a recent release?")

4 Likes

In my experience crates.io has a different use case from crates.rs. When I am on crates.io, I'm looking for the box with the line to copy into my Cargo.toml. Crates.rs I use more so for discovery. Is crates.rs intended to be a full on replacement? or just supplementary?

3 Likes

It's supposed to be full replacement for the front-end (www), but not for the publishing back-end (index).

I use cargo-edit, so the "line to copy" is anachronistic for me :slight_smile: but I am planning to add more info about installation.

3 Likes

One very small gripe: it would be nice if I could just type crates.rs/foo rather than crates.rs/crates/foo.

11 Likes

Minor thing: clicking on the publisher of a crate takes you back to crates.io. It'd be nice if crates.rs provided a uniform frontend there so I can look at the crates.rs versions of the publisher's published crates rather than having to jump back and forth. (I find looking at crates published by a user is cool for discovering when you're starting from knowing a high-quality crate they've published.)

4 Likes

For the nice-to-haves: a search box on every page, rather than having to go back to the front page. Often when reading about crate X, it will mention crate Y (without linking) and I want to look up Y. The browser search-box addin helps, but I still find myself just trying to type 's'.

I mention this only because it is quite literally the largest thing I can think of, and because others have started on the lesser issues.

4 Likes

Many repositories have badges with crates.io and a version number, linking to the package there. Maybe provide a crates.rs alternative?

2 Likes

I forgot it existed :slight_smile:

The primary thing I use crates.io for is to get the documentation link for a crate. It'll well-optimized for this use-case, since the doc link is right on the search results page.

The other thing I sometimes do on crates.io is to look at the reverse dependencies (to see who is depending on my crates). I don't think crates.rs has this feature.

3 Likes

I use crates.io because it comes with a duckduckgo bang pattern (see !cargo). When searching for a crate i type !cargo ... but this is not available for crates.rs

I woder if they will add crates.rs as well.

3 Likes

The only reason I am using crates.io instead of crates.rs is because I am using google and its prefering first one over second one :wink:

3 Likes

My 2 cents. I like your idea of fast and nice-structured crate library. I use it from time to time to browse crates. Yet I have to go back to crates.io periodically. Why I do it:

  • When one opens crate list of a category, it is unclear what is the sorting order (no indication) and there is no way to sort crates manually(my case: sometimes I just want to browse crates that are added/updated recently in the category I am interested in to check if I missed any good one)
  • No information in crate list(one has to open a crate to see it) about when the crate was created/updated the last time. Crates.io lacks this feature, too - but it has custom sorting order, and one can sort by update time
  • How to check the total number of downloads without opening crate details? If a crate is popular and updated often, the recent version downloads may be small that make a bit hard to find out the most popular crates.
1 Like

Showing newly updated crates is something I'd like to do.

I deliberately don't show lifetime downloads of a crate, because that makes outdated/deprecated crates look too good. Old crates had more time to accumulate download numbers, and keep getting them long after they're deprecated (e.g. the deprecated time has more downloads than chrono, the old and busted rustc-serialize has as many downloads as serde_json, the old gcc crate has more downloads than the new cc).

Currently sorting order is not as good as I'd like (I use mostly 90-day popularity). I'd like to change it to analyse more data about the crate itself (e.g documentation, use of deprecated APIs) to give a chance to good, but new, crates to show up in there too.

Note that download numbers aren't counted per version, so updates don't affect the numbers.

1 Like

I forgot about it.

Some quick notes

Good

  • Looks nice
  • I like the "see also"
  • I like the calling out of bin/lib

Could improve

  • Search should be on all pages, as mentioned
  • "See also" is in the footer which is an area I normally gloss over expecting it to not have relevant content
  • If I search for assert_cmd, the crate with that name isn't the first result
  • Not sure why the dependency on difference is showing up differently than the others
    • EDIT: Oh, this is what features are enabled?
  • It surprised me that the tabs took me to a different page
  • At first I thought it couldn't show reverse dependencies, I wasn't expecting the link where I found it.
  • I too use the toml snippet from crates.io

Future ideas:

  • Dependabot does a smart job finding changelogs for a given release (looks at the github release notes, somehow parses CHANGELOG.md to find the relevant section, falls back to finding the range of commits). It'd be helpful to integrate similar logic when displaying the releases.
2 Likes

I just saw this thread, and did not know about Crates.rs, but I can't find my crates there. I published them recently, how often is the index updated?

It makes sense. Thanks for explanations.

If you implement some magic sorting to show the best-popular-most-useful first it would be great :slight_smile:

So, the only thing I miss is custom sorting and kind of page 'latest crates' - Once a day/every other day I open crates.io main page and look through the short list of 'recently updated' and 'new crates'. Sometimes I spot a good crate that I possible need in the future and save the link somewhere.

2 Likes

I use crates.rs because it is way faster than crates.io but sometimes I fallback to crates.io because of missing stuff like source repository such as rst — command-line utility in Rust // Lib.rs.

That's actually a crates.io bug (or a feature?). These links are not in the crate's Cargo.toml!

I've got lib.rs domain! So now you can type lib.rs/anything to view the crate or search for it!

2 Likes