Skip to content

Commit 2875efb

Browse files
authored
HOWTO_UNMAINTAINED.md: guide for unmaintained crate advisories (#1192)
Initial guide on policy around what RustSec considers to be an unmaintained crate as well as the policy for filing an advisory
1 parent 83c13d8 commit 2875efb

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed

HOWTO_UNMAINTAINED.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# HOWTO Guide: Unmaintained Crate Advisories
2+
3+
This document describes the policy for adding advisories for unmaintained
4+
crates to the [RustSec Advisory Database].
5+
6+
These advisories serve to inform the Rust community about both the existence
7+
of unmaintained crates within a particular project, and also serve to guide
8+
switching to maintained alternatives.
9+
10+
## Definition of an "unmaintained" crate
11+
12+
We consider crates unmaintained when they fall into either of the following
13+
categories:
14+
15+
- Explicitly unmaintained: a crate's author has declared that they are no
16+
longer maintaining a particular crate.
17+
- Implicitly unmaintained: the author is incommunicado for a prolonged period
18+
of time and cannot advise as to a crate's status.
19+
20+
## Creating an unmaintained crate advisory
21+
22+
### Policy
23+
24+
When in doubt, we always defer to the author of a crate's discretion as to
25+
whether they would prefer an unmaintained crate advisory be filed, provided
26+
we are able to make contact.
27+
28+
First and foremost: *ASK THE AUTHOR(S)*, preferably in a public issue on the
29+
project's source code repository. If an author/maintainer of a particular crate
30+
thinks filing an unmaintained crate advisory is a good idea, then great! Go ahead.
31+
32+
If the author is responsive and declares that the project *is* maintained, then
33+
the RustSec organization considers it maintained and won't accept advisories about its maintenance status. Again, when in doubt, defer
34+
to the author's discretion. So long as the author is responsive and avows that
35+
a crate is maintained, we take them at their word. Repository metrics like
36+
recent commits, open issues, latest release, etc are not reasons to go against
37+
the direct word of a crate author.
38+
39+
However, if attempts have been made to contact a crate author have failed,
40+
metrics like recent commits, open issues, time since last crate release etc
41+
are important evidence to justify that a crate is unmaintained. An
42+
incommunicado crate author is irrelevant if there is evidence that work is
43+
continuing to happen on a crate.
44+
45+
To justify the "implicitly unmaintained" status, where a crate author is
46+
unreachable, the following criteria must be met:
47+
48+
- Stale repository: no recent maintenance activity, including any of the
49+
following: recent commits, responses from the author on open issues,
50+
crate releases, or other publically visible activity by the author.
51+
Inactivity over a period of 1 year or more is the preferred threshold.
52+
- Contact attempts with the author made with no response. Ideally these
53+
attempts are made via a public GitHub issue, so that issue can be
54+
cited in an unmaintained crate advisory if need be. Unresponsiveness
55+
by the author over a period of 90 days is suggested before filing an
56+
advisory.
57+
58+
### Process
59+
60+
Unmaintained crate advisories use the same structure as RustSec security
61+
advisories, but include an `informational = "unmaintained"` attribute in
62+
the TOML advisory.
63+
64+
When creating the advisory, please include a link to an open issue
65+
on the upstream project repository where the maintenance status has been
66+
discussed in the `url = "..."` field of the advisory.
67+
68+
For more information on adding an advisory to the RustSec DB, see:
69+
70+
<https://github.com/RustSec/advisory-db/blob/main/CONTRIBUTING.md>
71+
72+
### Questions
73+
74+
Please open a GitHub issue:
75+
76+
<https://github.com/rustsec/advisory-db/issues>
77+
78+
[//]: # (links)
79+
80+
[RustSec Advisory Database]: https://rustsec.org

0 commit comments

Comments
 (0)