Skip to content

Commit a26732c

Browse files
author
Jake Goldsborough
authored
Merge pull request #1 from steveklabnik/rjgoldsborough-add-policies
tweak policies
2 parents 8cbe128 + 9a3c37c commit a26732c

File tree

1 file changed

+23
-87
lines changed

1 file changed

+23
-87
lines changed

src/doc/policies.md

+23-87
Original file line numberDiff line numberDiff line change
@@ -1,116 +1,52 @@
11
% Crates.io package policies
22

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-
153
In general, these policies are guidelines. Problems are often contextual, and
164
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.
187

198
# Package Ownership
209

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.
2517

2618
# Removal
2719

2820
Many questions are specialized instances of a more general form: “Under what
2921
circumstances can a package be removed from Crates.io?”
3022

3123
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.
3727

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
4329

30+
We do not have any policies to define 'squatting', and so will not hand over
31+
ownership of a package for that reason.
4432

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.
4733

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
6035

6136
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.
6439

65-
# Code of Conduct
40+
## Code of Conduct
6641

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:
7245

7346
- We will not be pro-actively monitoring the site for these kinds of violations,
7447
but relying on the community to draw them to our attention.
7548
- “Does this violate the Code of Conduct” is a contextual question that
7649
cannot be directly answered in the hypothetical sense. All of the details
7750
must be taken into consideration in these kinds of situations.
7851

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

Comments
 (0)