rust-unofficial / awesome-rust

A curated list of Rust code and resources.
Creative Commons Zero v1.0 Universal
46.73k stars 2.75k forks source link

Awesome-rust Renaissance (Rework of the list) #479

Open luciusmagn opened 6 years ago

luciusmagn commented 6 years ago

The Premise

Awesome-rust is a very old list. So old, in fact, that it even predates Rust v1.0. Even better, awesome-rust existed before Cargo was released. Over the years, @kud1ing's tiny list grew into the massive collections it is now. It doesn't matter what you need to do, we probably have an entry for it.

Today, we have roughly 70 categories containing hundreds of projects. Sadly, we also have a lot of historical baggage and this list is in dire need of a review.

The Problem

There are projects in the list that are unmaintained or straight up broken. However, the fact that they are unmaintained isn't that much of a problem, so long as they weren't left in a major WIP state.

Another problem this list suffers from is inconsistency. Some projects have descriptions, some don't. Some categories order by author, other by crate name, another ones are a mess, where by we order by "what we have".

Last mildly annoying issue is that the Travis badges are slightly bigger than lines, so as they load the content gets continuously stretched. If one opens a link to some part of the list, they will probably end up in a whole different place of the list.

The Solution

I am a firm believer that it's about the time to do something about it. Of course, the task is bigger, but these should be the main points:

*We are talking about cases such as where the author says that the original project Y is rewritten as X, which does the same, more and better

The Plan

First, I'd like to ask for some feedback on this, perhaps more suggestions:

  1. Do you agree with my proposal to do a rework of the list?
  2. What's your opinion on the Travis dilemma?
  3. Would you prefer ordering by author (and their projects then alphabetically) or by project?
  4. Is there a particular issue you would like to be addressed?

Next, I'd like to ask @memoryruins to produce his format proposals. We had a conversation about them a while back, so although some are posted in #419, there might have been some changes or new ideas (I don't quite remember what exactly came to fruition from said conversation).

Once @memoryruins does so, I'd also like to ask for input on the topic of design format.

If the operation is a go, we can start working out some of the details and then get to work. Of course, we wouldn't like the list to be dysfunctional for the duration of the renewal, so a new branch rework would be created and work on awesome-rust v2 would be done there.

luciusmagn commented 6 years ago

@memoryruins @svenstaro

kud1ing commented 6 years ago

Back then i saw 2 different approaches:

I've always liked one single file for viewers because you can see everything at once, and you can search on that page. I hope that stays.

luciusmagn commented 6 years ago

I am a proponent of the single-file design as well and I'd like to preserve the spirit of the list as it is.

I never thought about using a generator, but perhaps it is not a bad idea. I feel that TOML might be a nice middle ground as it is pretty readable and quite popular in the Rust community.

kud1ing commented 6 years ago

@nasa42 has used TOML for https://github.com/nasa42/libs.rs/tree/master/categories

brycx commented 6 years ago

Hi

I've been trying to do look through some of the listed projects, but am having a hard time defining when a project should be removed.

For example I know libOctavo has had no activity, based on the actual code files, for 2 years. It also states itself as a heavy WIP. suruga lists itself as inactive, so that seems to be a no-brainer.

But for some projects, like a gameboy simulator that has been done as a learning project a couple of years ago. That may still be useful to keep because others can still learn from it. How are such projects to be handled?

kud1ing commented 6 years ago

@brycx I think one needs to distinguish "usefulness" as "i can use the code" and "the code is interesting/insightful etc.".

To me "i can use the code" was the most important goal for awesome-rust. There is no reasons we couldn't keep pointers to interesting code but if they can not be used it should be in a different category.

brycx commented 6 years ago

@kud1ing Thanks. I'll have another swing at it.

kud1ing commented 6 years ago

That being said, i don't think there is an easy solution. It will always be a struggle.

palfrey commented 4 years ago

Is there still interest in this? Now that we've got a rustified linter (#792), I was considering whether more could be done beyond just checking for broken links.

Thoughts for changes:

Some of this would be easier by having a generator, but I think the idea of having a easy to edit format for users is also good, while having a decent tool that makes it easy for people to do the Right Thing when adding new entries. I'm willing to write such extensions to the linter tool if wanted? Possibly fold the cleanup.rs into it and document differences between current and desired state in line with rustfmt in builds?

joshka commented 7 months ago

Something I recently contributed to a different awesome repo was just converting everything to a table, and use the flat styled shields.io badges for each repo showing the number of stars. Number of stars (a proxy for popularity) seems more useful than whether or not the latest build is failing.

You do sacrifice a bit of vertical space (~20%) to show the list as a table, but the upside seems by making the items in the list easier to scan (as a top to bottom scan is not ragged and is not interrupted by non-text information).

Before: https://github.com/tensorchord/Awesome-LLMOps/tree/863e9b841d26064bcceb050748c00eb561d2d130 After: https://github.com/tensorchord/Awesome-LLMOps


On the caching side of things, github automatically caches the svgs behind the camo.githubusercontent proxy, loading them from there instead of from the root site, so things are relatively fast. On the Awesom LLM Ops repo, 281 projects (some without links to their badge) takes around 20s total to load whe throttled with whatever Firefox's DSL setting does or 3.4s for the wifi setting.

Having the items in a table means the row size doesn't seem to jankily adjust when the badges load (this problem was mentioned above)