diff --git a/docs/adr/0001-python-version-3-6-plus.md b/docs/adr/0001-python-version-3-6-plus.md new file mode 100644 index 0000000000..e96a829bd6 --- /dev/null +++ b/docs/adr/0001-python-version-3-6-plus.md @@ -0,0 +1,39 @@ +# Default to Python 3.6 or newer for new development + +* Status: accepted +* Date: 2020-10-20 + +Technical Story: https://github.com/theupdateframework/tuf/issues/1125 + +## Context and Problem Statement + +We do not want to try and support end-of-life versions of the language. +We want to use modern language features, such as typing. +We want to ease maintainer burden, by reducing the major language versions supported. + +## Decision Drivers + +* Python 2.7 is end-of-life +* Python 3.5 is end-of-life +* Modern Python allows use of desirable features such as type hints +* Supporting end-of-life Python versions adds maintenance overhead + +## Considered Options + +* Support Python 2.7 and 3.5+ +* Support Python 2.7 and 3.6+ +* Support Python 2.7 and 3.6+ (with polyfill modules) +* Support only Python 3.6+ + +## Decision Outcome + +Chosen option: "Support only Python 3.6+", because we want modern features and lower +maintainer effort as we work to improve our codebase through the refactor effort. + +Using modules to polyfill standard library features from Python 3.6+ feels +untenable as more libraries are dropping support for EOL Python releases. + +### Negative Consequences + +* Leaves major adopter and contributor without an actively developed client for some of + their customers stuck on older Python versions. diff --git a/docs/adr/index.md b/docs/adr/index.md index 388b3950b3..b9c23b2a25 100644 --- a/docs/adr/index.md +++ b/docs/adr/index.md @@ -5,6 +5,7 @@ This log lists the architectural decisions for tuf. - [ADR-0000](0000-use-markdown-architectural-decision-records.md) - Use Markdown Architectural Decision Records +- [ADR-0001](0001-python-version-3-6-plus.md) - Default to Python 3.6 or newer for new development