Skip to content

Commit 71de3f6

Browse files
committed
ADR: only use Python 3.6+
Document the decision drop support for EOL Python versions, most notable Python 2.7 Fixes #1125 Signed-off-by: Joshua Lock <[email protected]>
1 parent 19b9356 commit 71de3f6

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Default to Python 3.6 or newer for new development
2+
3+
* Status: accepted
4+
* Date: 2020-10-20
5+
6+
Technical Story: https://github.com/theupdateframework/tuf/issues/1125
7+
8+
## Context and Problem Statement
9+
10+
We do not want to try and support end-of-life versions of the language.
11+
We want to use modern language features, such as typing.
12+
We want to ease maintainer burden, by reducing the major language versions supported.
13+
14+
## Decision Drivers
15+
16+
* Python 2.7 is end-of-life
17+
* Python 3.5 is end-of-life
18+
* Modern Python allows use of desirable features such as type hints
19+
* Supporting end-of-life Python versions adds maintenance overhead
20+
21+
## Considered Options
22+
23+
* Support Python 2.7 and 3.5+
24+
* Support Python 2.7 and 3.6+
25+
* Support Python 2.7 and 3.6+ (with polyfill modules)
26+
* Support only Python 3.6+
27+
28+
## Decision Outcome
29+
30+
Chosen option: "Support only Python 3.6+", because we want modern features and lower
31+
maintainer effort as we work to improve our codebase through the refactor effort.
32+
33+
Using modules to polyfill standard library features from Python 3.6+ feels
34+
untenable as more libraries are dropping support for EOL Python releases.
35+
36+
### Negative Consequences
37+
38+
* Leaves major adopter and contributor without an actively developed client for some of
39+
their customers stuck on older Python versions.

docs/adr/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ This log lists the architectural decisions for tuf.
55
<!-- adrlog -- Regenerate the content by using "adr-log -i". You can install it via "npm install -g adr-log" -->
66

77
- [ADR-0000](0000-use-markdown-architectural-decision-records.md) - Use Markdown Architectural Decision Records
8+
- [ADR-0001](0001-python-version-3-6-plus.md) - Default to Python 3.6 or newer for new development
89

910
<!-- adrlogstop -->
1011

0 commit comments

Comments
 (0)