Suggestions and comments on crates.io #11808
ArturAssisComp
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
First, I would like to thank the
crates.io
team for their excellent work.crates.io
is a strategic component of the Rust ecosystem that extends far beyond a simple crate repository. It has significant potential to gather valuable information about important aspects of the Rust ecosystem, detailed below.rust-lang + crates
, crates represent a substantial and critical component.crates.io
has the potential to collect extensive information about existing crates.This information helps users determine crate feasibility, enables crate maintainers to identify maintenance/creation opportunities, and allows maintainers to receive user feedback.
Given this context, I would like to make considerations and feature requests related to both items.
It would be good if every crate had this status. This information is very important for the user! While heuristics exist to check if a crate is still maintained (last update, etc.), they're not as reliable as direct maintainer input, which would be more direct and clear.
Maintenance status gives us invaluable information about the crates and the ecosystem current status. Personally, I avoid unmaintained crates, but not only that, I may be interested in maintaining some crates that are seeking new maintainers. Also, other potential maintainers would benefit from easier discovery of crates needing maintenance (filtering/sorting by maintenance status).
A maintenance ping protocol would help keep this status current. Every 6 months the maintainers should update their crate's status. A reminder could be sent by email and this task could be completed with a simple form (~3 min/6 months is nothing).
The protocol could work as follows: If maintainers update status within 6 months, it becomes what they selected (
maintained
,not maintained
,looking for new maintainers
). If the crate version updates within 6 months, status automatically becomesmaintained
. After 6 months without updates, the status becomesunknown
. After 8 months, it becomesnot maintained
.A dedicated section of the site will display the requests (active ones by default), allowing others to interact with the author of the request, suggesting existing crates or creating it. There could even be some kind of bounty system (e.g. company A funding crate/functionality B), but this might add too much legal complexity.
To avoid duplicates, users could "merge" or "enhance" existing requests. For example, if someone requested some Vec functionality A, someone else can augment that request with related functionality B.
Like/dislike: Closely related to the previous feature is adding "Like/dislike" functionality. This would enable much broader feedback to maintainers and to crate's users. This kind of feedback probably would never be given otherwise (most of the people do not create github issues unless it is a very important feedback). Also, dislike would require meaningful description, with possibility of chat between the critic and maintainer. This would avoid haters and make feedback more valuable.
Subcategory: Currently, the categories are as follows:
This is good, but we could also have an official tree of categories/subcategories defined by the rust team.
For example, currently, we have a category called Data Structures, which is good but not so helpful since we have almost 5600 crates. Instead, we could have a more detailed (category+subcategory) classification that would be created by the rust team:
Data Structures
|
|-Elementary Data Structures (stacks, queues, linked lists, etc)
|- Hash tables
|- Binary search tree
|- Red-black tree
...
Each crate could have multiple subcategory. Every category would have a generic subcategory for crates that are considered generic within that subcategory or for crated that only specified the category.
For example, for me, a good crate page should include: a very concise description that contains what the crate is and its purpose (most of them are ok here), detailed description, summary of the functionalities (the main items and their concise description), examples of the main functionality, and caveats if necessary.
If any of those functionalities is able to be implemented, I can create a RFC for it.
Beta Was this translation helpful? Give feedback.
All reactions