|
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