Skip to content

Commit c2849d3

Browse files
ericholscherbenjaominghumitosagjohnson
authored
Add an initial policy for delisting unmaintained projects (#9731)
* Add an initial policy for delisting unmaintained projects I'm not 100% in love with this content structure, but I think it's important to get this out. Closes #9130 * Move legalise to the bottom * A bit more clarify * Add to TOC * Apply the most immediately uncomplicated suggestions from code review Co-authored-by: Manuel Kaufmann <[email protected]> Co-authored-by: Anthony <[email protected]> * Expand section on what "unmaintained" means * Add more cross-references for defined terms * sembr * Adding linebreaks * Remove "candidate" and make it a bit more clear that someone needs to submit a report * Add a template for emails * Move definitions to "specification" as @humitos suggested * Move use cases to "Examples" under rationale * Adds robots.txt boilerplate * Add a step that the source project is notified by RTD core team * resolve warning - include in TOC * Add a comment in robots.txt template * Update docs/user/unofficial-projects.rst * Adds a link in robots.txt to where the policy will presumably live * Apply suggestions from @agjohnson code review Co-authored-by: Anthony <[email protected]> * Update docs/user/unofficial-projects.rst Co-authored-by: Eric Holscher <[email protected]> * Remove procedure to notify upstream maintainers * Change Specification to Definitions * Move High-level Overview to Rationale * Add a definition of source project * Delisting with notification. Step added to take no further action if unreachable. Step added that actions may be taken if reachable * Talk mostly of "owner" in plural, there might be several people maintaining a documentation project * Remove SOME stuff, we aren't going to seriously validate that * Remove examples section, it doesn't fill much purpose now * Apply suggestions from @humitos and @erichholscher Co-authored-by: Manuel Kaufmann <[email protected]> Co-authored-by: Eric Holscher <[email protected]> * reference Terms of Service doc * Move delisting section * Remove step outlining what happens if "unreachable" since nothing happens * Remove definition of "Unreachable" since it's not in use * Remove definition of Source Project * Update docs/user/unofficial-projects.rst Co-authored-by: Eric Holscher <[email protected]> * Add cross-references to Project Policies * Apply suggestions from code review Co-authored-by: Manuel Kaufmann <[email protected]> * Update docs/user/abandoned-projects.rst Co-authored-by: Manuel Kaufmann <[email protected]> * Update docs/user/abandoned-projects.rst Co-authored-by: Manuel Kaufmann <[email protected]> * ANY and ALL => **any** or **all** Co-authored-by: Benjamin Balder Bach <[email protected]> Co-authored-by: Manuel Kaufmann <[email protected]> Co-authored-by: Anthony <[email protected]> Co-authored-by: Benjamin Bach <[email protected]>
1 parent 60306c1 commit c2849d3

File tree

3 files changed

+131
-2
lines changed

3 files changed

+131
-2
lines changed

docs/user/abandoned-projects.rst

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
Policy for Abandoned Projects
22
=============================
33

4-
This policy describes the process by which a Read the Docs project name may be changed.
4+
This policy describes the process by which a Read the Docs project :term:`slug` may be changed.
5+
6+
.. tip:: If you want to de-list a project's fork from search results, please see :doc:`/unofficial-projects`.
57

68
Rationale
79
---------

docs/user/index.rst

+3-1
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,8 @@ of Read the Docs and the larger software documentation ecosystem.
250250
* **Policies & Process**:
251251
:doc:`security` |
252252
:doc:`DMCA takedown policy <dmca/index>` |
253-
:doc:`Policy for abandoned projects <abandoned-projects>` |
253+
:doc:`/abandoned-projects` |
254+
:doc:`/unofficial-projects` |
254255
:doc:`Release notes & changelog <changelog>`
255256

256257

@@ -283,6 +284,7 @@ of Read the Docs and the larger software documentation ecosystem.
283284
security
284285
dmca/index
285286
abandoned-projects
287+
unofficial-projects
286288
changelog
287289

288290
about

docs/user/unofficial-projects.rst

+125
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
Policy for Unofficial and Unmaintained Projects
2+
===============================================
3+
4+
This policy describes a process where we take actions against unmaintained_ and unofficial_ forks of project documentation.
5+
6+
.. tip:: If you want to free up a project's :term:`slug` and gain access over it, please see :doc:`/abandoned-projects`.
7+
8+
Rationale
9+
---------
10+
11+
Documentation projects may be kept online indefinitely, even though a newer version of the same project exists elsewhere.
12+
There are many reasons this can happen,
13+
including forks, old official docs that are unmaintained, and many other situations.
14+
15+
The problem with old, outdated docs is that users will find them in search results,
16+
and get confused to the validity of them.
17+
Projects will then get support requests from people who are using an old and incorrect documentation version.
18+
19+
We have this policy to allow a reporter to request the *delisting* of forks that are old and outdated.
20+
21+
22+
High level overview
23+
~~~~~~~~~~~~~~~~~~~
24+
25+
The process at a high level looks like:
26+
27+
* A reporter contacts us about a project they think is outdated and unofficial
28+
* A Read the Docs team member evaluates it to make sure it's outdated and unofficial, according to this policy
29+
* We delist this project from search results and send an email to owners of the Read the Docs project
30+
* If a project owner objects, we evaluate their evidence and make a final decision
31+
32+
33+
Definitions
34+
-----------
35+
36+
37+
Unofficial projects
38+
~~~~~~~~~~~~~~~~~~~
39+
40+
A project is considered *unofficial* when it is not linked to or mentioned in **any** of these places:
41+
42+
* Websites and domains associated with the project
43+
* The project's primary repository -- README files, repository description, or source code
44+
45+
46+
Unmaintained projects
47+
~~~~~~~~~~~~~~~~~~~~~
48+
49+
A project is considered *unmaintained* when **any** of the following are met:
50+
51+
* The configured version control repository is unreadable. This can happen if the repository is deleted, credentials are broken or the Git host is permanently unresponsive.
52+
* The project is only serving content from releases and commits 6 months or older.
53+
* All builds have failed for more than 6 months.
54+
55+
56+
Implementation
57+
--------------
58+
59+
60+
Requesting a project be delisted
61+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
62+
63+
You can request that we delist an outdated, unmaintained documentation by contacting our :doc:`/support`.
64+
65+
Please include the following information:
66+
67+
.. code-block:: text
68+
69+
URL of unofficial and unmaintained documentation project: ...
70+
URL of official documentation (if any): ...
71+
URL of official project website (if any): ...
72+
URL of official project repository (if any): ...
73+
74+
Describe attempts of reaching the owner(s) of the documentation project:
75+
...
76+
77+
78+
Delisting
79+
~~~~~~~~~
80+
81+
Projects that are determined to be unmaintained_ and unofficial_ will have a ``robots.txt`` file added that removes them from all search results:
82+
83+
.. code-block:: text
84+
85+
# robots.txt
86+
User-agent: *
87+
# This project is delisted according to the Policy for Unofficial and Unmaintanied Projects
88+
# https://docs.readthedocs.io/en/stable/unofficial-projects.html
89+
Disallow: /
90+
91+
92+
Projects will be delisted if they meet **all** of the following criteria:
93+
94+
* The person who submits the report of the unmaintained_ and unofficial_ project also demonstrates failed attempts to contact the existing owners.
95+
* The project has been determined unmaintained_ and unofficial_ by the rules described above.
96+
* The core team does not have any additional reservations.
97+
98+
The Read the Docs team will do the following actions when a project is delisted:
99+
100+
* Notify the Read the Docs project owners via email about the delisting.
101+
* Add the ``robots.txt`` file to be served on the project domain.
102+
103+
If any of the project owners respond, their response will be taken into account, and the delisting might be reversed.
104+
105+
106+
Thinking behind the policy
107+
--------------------------
108+
109+
The main idea behind this policy is that Read the Docs serves the community.
110+
Every user is invited to upload content under :doc:`/terms-of-service`,
111+
understanding that it is at the sole risk of the user.
112+
113+
While Read the Docs is not a backup service, the core team of Read the Docs does their best to keep content accessible indefinitely in its published form. However, in certain edge cases,
114+
the greater community's needs might outweigh the individual's expectation of continued publishing.
115+
116+
117+
Prior art
118+
---------
119+
120+
This policy is inspired by our :doc:`abandoned-projects`.
121+
The Python Package Index (PyPI) policy for claiming abandoned packages
122+
(`PEP-0541 <https://www.python.org/dev/peps/pep-0541>`_) heavily influenced this policy.
123+
124+
.. _unmaintained: #unmaintained-projects
125+
.. _unofficial: #unofficial-projects

0 commit comments

Comments
 (0)