|
1 | 1 | % Crates.io package policies
|
2 | 2 |
|
3 |
| -# Packages Policy for Crates.io |
4 |
| - |
5 |
| -In [a previous post to the Rust blog] |
6 |
| -(http://blog.rust-lang.org/2014/11/20/Cargo.html), |
7 |
| -we announced the preview launch of |
8 |
| -[crates.io](http://crates.io/), giving the Rust community a |
9 |
| -way to easily publish packages. After a few weeks of kicking the tires, and |
10 |
| -hearing the most common questions people have about the registry, we wanted to |
11 |
| -clarify the rationale behind some of the design decisions. We also wanted to |
12 |
| -take the opportunity to be more explicit about the policies around package |
13 |
| -ownership on crates.io. |
14 |
| - |
15 | 3 | In general, these policies are guidelines. Problems are often contextual, and
|
16 | 4 | exceptional circumstances sometimes require exceptional measures. We plan to
|
17 |
| -continue to clarify and expand these rules over time as new circumstances arise. |
| 5 | +continue to clarify and expand these rules over time as new circumstances |
| 6 | +arise. |
18 | 7 |
|
19 | 8 | # Package Ownership
|
20 | 9 |
|
21 |
| -We have had, and will continue to have, a first-come, first-served policy on |
22 |
| -crate names. Upon publishing a package, the publisher will be made owner of the |
23 |
| -package on Crates.io. This follows the precedent of nearly all package |
24 |
| -management ecosystems. |
| 10 | +We have a first-come, first-served policy on crate names. Upon publishing a |
| 11 | +package, the publisher will be made owner of the package on Crates.io. |
| 12 | + |
| 13 | +If someone wants to take over a package, and the previous owner agrees, the |
| 14 | +existing maintainer can add them as an owner, and the new maintainer can remove |
| 15 | +them. If necessary, the team may reach out to inactive maintainers and help |
| 16 | +mediate the process of ownership transfer. |
25 | 17 |
|
26 | 18 | # Removal
|
27 | 19 |
|
28 | 20 | Many questions are specialized instances of a more general form: “Under what
|
29 | 21 | circumstances can a package be removed from Crates.io?”
|
30 | 22 |
|
31 | 23 | The short version is that packages are first-come, first-served, and we won’t
|
32 |
| -attempt to get into policing what exactly makes a legitimate package. We will do |
33 |
| -what the law requires us to do, and address flagrant violations of the Rust Code |
34 |
| -of Conduct. |
35 |
| - |
36 |
| -# Squatting |
| 24 | +attempt to get into policing what exactly makes a legitimate package. We will |
| 25 | +do what the law requires us to do, and address flagrant violations of the Rust |
| 26 | +Code of Conduct. |
37 | 27 |
|
38 |
| -Nobody likes a “squatter”, but finding good rules that define squatting that can |
39 |
| -be applied mechanically is notoriously difficult. If we require that the package |
40 |
| -has at least some content in it, squatters will insert random content. If we |
41 |
| -require regular updates, squatters will make sure to update regularly, and that |
42 |
| -rule might apply over-zealously to packages that are relatively stable. |
| 28 | +## Squatting |
43 | 29 |
|
| 30 | +We do not have any policies to define 'squatting', and so will not hand over |
| 31 | +ownership of a package for that reason. |
44 | 32 |
|
45 |
| -A more case-by-case policy would be very hard to get right, and would almost |
46 |
| -certainly result in bad mistakes and and regular controversies. |
47 | 33 |
|
48 |
| -Instead, we are going to stick to a first-come, first-served system. If someone |
49 |
| -wants to take over a package, and the previous owner agrees, the existing |
50 |
| -maintainer can add them as an owner, and the new maintainer can remove them. If |
51 |
| -necessary, the team may reach out to inactive maintainers and help mediate the |
52 |
| -process of ownership transfer. We know that this means, in practice, that |
53 |
| -certain desirable names will be taken early on, and that those early users may |
54 |
| -not be using them in the most optimal way (whether they are claimed by squatters |
55 |
| -or just low-quality packages). Other ecosystems have addressed this problem |
56 |
| -through the use of more colorful names, and we think that this is actually a |
57 |
| -feature, not a bug, of this system. We talk about this more below. |
58 |
| - |
59 |
| -# The Law |
| 34 | +## The Law |
60 | 35 |
|
61 | 36 | For issues such as DMCA violations, trademark and copyright infringement,
|
62 |
| -Crates.io will respect Mozilla Legal’s decisions with regards to content that is |
63 |
| -hosted. |
| 37 | +Crates.io will respect Mozilla Legal’s decisions with regards to content that |
| 38 | +is hosted. |
64 | 39 |
|
65 |
| -# Code of Conduct |
| 40 | +## Code of Conduct |
66 | 41 |
|
67 |
| -The Rust project has a [Code of Conduct] |
68 |
| -(https://github.com/rust-lang/rust/wiki/Note-development-policy#conduct) |
69 |
| -which governs appropriate conduct for the Rust community. In general, any |
70 |
| -content on Crates.io that violates the Code of Conduct may be removed. There are |
71 |
| -two important, related aspects: |
| 42 | +The Rust project has a [Code of Conduct] which governs appropriate conduct for |
| 43 | +the Rust community. In general, any content on Crates.io that violates the Code |
| 44 | +of Conduct may be removed. There are two important, related aspects: |
72 | 45 |
|
73 | 46 | - We will not be pro-actively monitoring the site for these kinds of violations,
|
74 | 47 | but relying on the community to draw them to our attention.
|
75 | 48 | - “Does this violate the Code of Conduct” is a contextual question that
|
76 | 49 | cannot be directly answered in the hypothetical sense. All of the details
|
77 | 50 | must be taken into consideration in these kinds of situations.
|
78 | 51 |
|
79 |
| -We plan on adding ‘report’ functionality to alert the administrators that a |
80 |
| -package may be in violation of some of these rules. |
81 |
| - |
82 |
| -# Namespacing |
83 |
| - |
84 |
| -In the first month with crates.io, a number of people have asked us aboutthe |
85 |
| -possibility of introducing [namespaced packages] |
86 |
| -(https://github.com/rust-lang/crates.io/issues/58). |
87 |
| - |
88 |
| -While namespaced packages allow multiple authors to use a single, generic name, |
89 |
| -they add complexity to how packaged are referenced in Rust code and in human |
90 |
| -communication about packages. At first glance, they allow multiple authors to |
91 |
| -claim names like http, but that simply means that people will need to refer to |
92 |
| -those packages as `wycats’ http or reem’s http`, offering little benefit over |
93 |
| -package names like wycats-http or reem-http. |
94 |
| - |
95 |
| -When we looked at package ecosystems without namespacing, we found that people |
96 |
| -tended to go with more creative names (like nokogiri instead of “tenderlove’s |
97 |
| -libxml2”). These creative names tend to be short and memorable, in part because |
98 |
| -of the lack of any hierarchy. They make it easier to communicate concisely and |
99 |
| -unambiguously about packages. They create exciting brands. And we’ve seen the |
100 |
| -success of several 10,000+ package ecosystems like NPM and RubyGems whose |
101 |
| -communities are prospering within a single namespace. |
102 |
| - |
103 |
| -In short, we don’t think the Cargo ecosystem would be better off if Piston chose |
104 |
| -a name like `bvssvni/game-engine` (allowing other users to choose |
105 |
| -`wycats/game-engine`) instead of simply piston. |
106 |
| - |
107 |
| -Because namespaces are strictly more complicated in a number of ways,and because |
108 |
| -they can be added compatibly in the future should they become necessary, we’re |
109 |
| -going to stick with a single shared namespace. |
110 |
| - |
111 |
| -# Organizations & related packages |
112 |
| - |
113 |
| -One situation in which a namespace could be useful is when an organization |
114 |
| -releases a number of related packages. We plan on expanding the ’tags’ feature |
115 |
| -to indicate when multiple crates come from one organization. Details about this |
116 |
| -plan will come at a later time. |
| 52 | +[Code of Conduct]: https://www.rust-lang.org/conduct.html |
0 commit comments