|
| 1 | +- Feature Name: `remove_crate_transfer_mediation_policy` |
| 2 | +- Start Date: 2024-05-24 |
| 3 | +- RFC PR: [rust-lang/rfcs#3646](https://github.com/rust-lang/rfcs/pull/3646) |
| 4 | +- Rust Issue: |
| 5 | + |
| 6 | +# Summary |
| 7 | +[summary]: #summary |
| 8 | + |
| 9 | +The [crates.io package ownership policies currently state](https://crates.io/policies#package-ownership): |
| 10 | + |
| 11 | +> If you want to take over a package, we require you to first try and contact the current owner |
| 12 | +> directly. If the current owner agrees, they can add you as an owner of the crate, and you can |
| 13 | +> then remove them, if necessary. If the current owner is not reachable or has not published any |
| 14 | +> contact information the crates.io team may reach out to help mediate the process of the ownership |
| 15 | +> transfer. |
| 16 | +
|
| 17 | +The crates.io team would like to remove the final sentence in this paragraph and stop attempting to |
| 18 | +mediate ownership transfer of crates. |
| 19 | + |
| 20 | +# Motivation |
| 21 | +[motivation]: #motivation |
| 22 | + |
| 23 | +As the number of crates on crates.io grows, so do the number of effectively abandoned crates, and |
| 24 | +so do the number of support requests we get asking us to attempt to contact a crate owner to see if |
| 25 | +they would be willing to transfer their crate. Managing these requests take time, and they aren't |
| 26 | +even usually successful. The crates.io team would like to spend their time working on the site |
| 27 | +rather than providing this crate mediation service. |
| 28 | + |
| 29 | +# Guide-level explanation |
| 30 | +[guide-level-explanation]: #guide-level-explanation |
| 31 | + |
| 32 | +If someone wants a crate name that is currently in use, and their efforts to either find contact |
| 33 | +information for or get a response from the current owner have been unsuccessful, they will need to |
| 34 | +pick a different name for their crate. Any requests to the crates.io team to mediate will be |
| 35 | +declined. |
| 36 | + |
| 37 | +# Drawbacks |
| 38 | +[drawbacks]: #drawbacks |
| 39 | + |
| 40 | +Some crate transfers that would have happened with the help of the crates.io team will not happen, |
| 41 | +which could lead to churn in the ecosystem of finding and switching to a new crate that could have |
| 42 | +been evolution of an existing crate. It is unclear if the number of successful transfers is an |
| 43 | +amount that is significant enough to justify the time spent by the crates.io team. |
| 44 | + |
| 45 | +# Rationale and alternatives |
| 46 | +[rationale-and-alternatives]: #rationale-and-alternatives |
| 47 | + |
| 48 | +## Request ownership directly through the crates.io website |
| 49 | + |
| 50 | +Alternatively, crates.io could build a mechanism into crates.io to allow one user to request a |
| 51 | +crate from another user without exposing email addresses. However, this would require significant |
| 52 | +design and complex implementation to prevent abuse such as a mob of people all requesting transfer |
| 53 | +of the same crate as a harassment vector. That engineering effort is best spent elsewhere. |
| 54 | + |
| 55 | +It's also unclear if current users have consented to be contacted by anyone who uses crates.io. |
| 56 | +[The privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#crates.io) currently |
| 57 | +states: |
| 58 | + |
| 59 | +> We [the Rust Foundation and the crates.io team] will only use your email address to contact you |
| 60 | +> about your account. |
| 61 | +
|
| 62 | +Given that ambiguity, we feel that any contact feature would need to be opt-in, limiting the |
| 63 | +possible utility even further. |
| 64 | + |
| 65 | +## Separate committee for crate ownership adjudication |
| 66 | + |
| 67 | +[eRFC #2614](https://github.com/rust-lang/rfcs/pull/2614) proposed to establish a separate |
| 68 | +committee to make decisions regarding crate ownership, which eventually would face the same |
| 69 | +problems of bandwidth and burnout as the number of requests increases. |
| 70 | + |
| 71 | +# Prior art |
| 72 | +[prior-art]: #prior-art |
| 73 | + |
| 74 | +- [PyPI](https://pypi.org/) has policies under [PEP 541](https://peps.python.org/pep-0541/) and [they are not able to keep up with the requests](https://github.com/pypi/support/issues?q=is%3Aissue+is%3Aopen+pep+541). |
| 75 | +- [npm has a dispute resolution process](https://docs.npmjs.com/policies/disputes) but it is ["not available for dispute requests due to lack of activity related to a specific name"](https://docs.npmjs.com/policies/disputes#when-not-to-use-this-process). |
| 76 | + |
| 77 | +# Unresolved questions |
| 78 | +[unresolved-questions]: #unresolved-questions |
| 79 | + |
| 80 | +- None known at this time |
| 81 | + |
| 82 | +# Future possibilities |
| 83 | +[future-possibilities]: #future-possibilities |
| 84 | + |
| 85 | +- None known at this time |
0 commit comments