aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--proposals/303-protover-removal-policy.txt62
1 files changed, 62 insertions, 0 deletions
diff --git a/proposals/303-protover-removal-policy.txt b/proposals/303-protover-removal-policy.txt
new file mode 100644
index 0000000..f6f30a8
--- /dev/null
+++ b/proposals/303-protover-removal-policy.txt
@@ -0,0 +1,62 @@
+Filename: 303-protover-removal-policy.txt
+Title: When and how to remove support for protocol versions
+Author: Nick Mathewson
+Created: 21 May 2019
+Status: Draft
+
+1. Background
+
+ With proposal 264, added support for "subprotocol versions" -- a
+ means to declare which features are required for participation in the
+ Tor network. We also created a mechanism (refined later in proposal
+ 297) for telling Tor clients and relays that they cannot participate
+ effectively in the Tor network, and they need to shut down.
+
+ In this document, we describe a policy according to which these
+ decisions should be made in practice.
+
+2. Recommending features (for clients and relays)
+
+ A subprotocol version SHOULD become recommended soon after all
+ release series that did not provide it become unsupported (within a
+ month or so).
+
+ For example, the current oldest LTS release series is 0.2.9; when it
+ becomes unsupported in 2020, the oldest supported release series will
+ be 0.3.5. Suppose that 0.2.9 supports a subprotocol Cupcake=1, and
+ that all stable 0.3.5.x versions support Cupcake=1-3. Around one
+ month after the end of 0.2.9 support, Cupcake=3 should become a
+ _recommended_ protocol for clients and relays.
+
+ Additionally, a feature can become _recommended_ because of security
+ reasons. If we believe that it is a terrible idea to run an old
+ protocol, we can make it _recommended_ for relays or clients or both.
+ We should not do this lightly, since it will be annoying.
+
+3. Requiring features (for relays)
+
+ We regularly update the directory authorities to require relays to
+ run certain versions of Tor or later. We generally do this after a
+ short outreach campaign to get as many relays as possible to upgrade.
+
+ We MAY make a feature required for relays one month after every
+ version without it is obsolete and unsupported, though it is better
+ to wait three months if possible.
+
+ We SHOULD make a feature required for relays within 12 months after
+ every version without it is obsolete and unsupported.
+
+4. Requiring features (for clients)
+
+ Clients take the longest time to update, and are often the least able
+ to fetch upgrades. Because of this, we should be very careful about
+ making subprotocol versions required on clients, and should only do
+ so for fairly compelling reasons.
+
+ We SHOULD NOT make a feature required for clients until it has been
+ _recommended_ for clients for at first 9 months.
+
+ We SHOULD make a feature required for clients if it has been
+ _recommended_ for clients for at least 18 months.
+
+