Skip to content

Commit 9908f8e

Browse files
author
lukpueh
authored
Merge pull request #1182 from joshuagl/joshuagl/adrs
Start to keep Architectural Decision Records (ADRs) for tuf reference implementation
2 parents e34e4b6 + 1b3f580 commit 9908f8e

5 files changed

Lines changed: 160 additions & 0 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,4 @@ env/*
1515
tests/htmlcov/*
1616
.DS_Store
1717
.python-version
18+
*~
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Use Markdown Architectural Decision Records
2+
3+
* Status: accepted
4+
* Date: 2020-10-20
5+
6+
Technical Story: https://github.com/theupdateframework/tuf/issues/1141
7+
8+
## Context and Problem Statement
9+
10+
We want to record architectural decisions made in this project.
11+
Which format and structure should these records follow?
12+
13+
## Considered Options
14+
15+
* [MADR](https://adr.github.io/madr/) 2.1.2 – The Markdown Architectural Decision Records
16+
* Formless – No conventions for file format and structure
17+
18+
## Decision Outcome
19+
20+
Chosen option: "MADR 2.1.2", because
21+
22+
* Implicit assumptions should be made explicit.
23+
Design documentation is important to enable people understanding the decisions
24+
later on.
25+
* The MADR structure is comprehensible and facilitates usage & maintenance.
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
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 are planning a refactor of tuf where:
11+
12+
* We do not want to try and support end-of-life versions of the language.
13+
* We want to use modern language features, such as typing.
14+
* We want to ease maintainer burden, by reducing the major language versions supported.
15+
16+
## Decision Drivers
17+
18+
* Python 2.7 is end-of-life
19+
* Python 3.5 is end-of-life
20+
* Modern Python allows use of desirable features such as type hints
21+
* Supporting end-of-life Python versions adds maintenance overhead
22+
23+
## Considered Options
24+
25+
* Support Python 2.7 and 3.5+
26+
* Support Python 2.7 and 3.6+
27+
* Support Python 2.7 and 3.6+ (with polyfill modules)
28+
* Support only Python 3.6+
29+
30+
## Decision Outcome
31+
32+
Chosen option: "Support only Python 3.6+", because we want modern features and lower
33+
maintainer effort as we work to improve our codebase through the refactor effort.
34+
35+
New modules should target Python 3.6+.
36+
37+
Using modules to polyfill standard library features from Python 3.6+ feels
38+
untenable as more libraries are dropping support for EOL Python releases.
39+
40+
### Negative Consequences
41+
42+
* Leaves major adopter and contributor without an actively developed client for some of
43+
their customers stuck on older Python versions.
44+
45+
## Links
46+
47+
* [Discussion of how/where to develop the refactored codebase](https://github.com/theupdateframework/tuf/issues/1126)
48+
* [Discussion of deprecation policy for the pre-1.0, Python 2.7 supporting, code](https://github.com/theupdateframework/tuf/issues/1127)

docs/adr/index.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Architectural Decision Log
2+
3+
This log lists the architectural decisions for tuf.
4+
5+
<!-- adrlog -- Regenerate the content by using "adr-log -i". You can install it via "npm install -g adr-log" -->
6+
7+
- [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
9+
10+
<!-- adrlogstop -->
11+
12+
For new ADRs, please use [template.md](template.md) as basis.
13+
More information on MADR is available at <https://adr.github.io/madr/>.
14+
General information about architectural decision records is available at <https://adr.github.io/>.

docs/adr/template.md

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# [short title of solved problem and solution]
2+
3+
* Status: [proposed | rejected | accepted | deprecated | … | superseded by [ADR-0005](0005-example.md)] <!-- optional -->
4+
* Deciders: [list everyone involved in the decision] <!-- optional -->
5+
* Date: [YYYY-MM-DD when the decision was last updated] <!-- optional -->
6+
7+
Technical Story: [description | ticket/issue URL] <!-- optional -->
8+
9+
## Context and Problem Statement
10+
11+
[Describe the context and problem statement, e.g., in free form using two to three sentences. You may want to articulate the problem in form of a question.]
12+
13+
## Decision Drivers <!-- optional -->
14+
15+
* [driver 1, e.g., a force, facing concern, …]
16+
* [driver 2, e.g., a force, facing concern, …]
17+
*<!-- numbers of drivers can vary -->
18+
19+
## Considered Options
20+
21+
* [option 1]
22+
* [option 2]
23+
* [option 3]
24+
*<!-- numbers of options can vary -->
25+
26+
## Decision Outcome
27+
28+
Chosen option: "[option 1]", because [justification. e.g., only option, which meets k.o. criterion decision driver | which resolves force force | … | comes out best (see below)].
29+
30+
### Positive Consequences <!-- optional -->
31+
32+
* [e.g., improvement of quality attribute satisfaction, follow-up decisions required, …]
33+
*
34+
35+
### Negative Consequences <!-- optional -->
36+
37+
* [e.g., compromising quality attribute, follow-up decisions required, …]
38+
*
39+
40+
## Pros and Cons of the Options <!-- optional -->
41+
42+
### [option 1]
43+
44+
[example | description | pointer to more information | …] <!-- optional -->
45+
46+
* Good, because [argument a]
47+
* Good, because [argument b]
48+
* Bad, because [argument c]
49+
*<!-- numbers of pros and cons can vary -->
50+
51+
### [option 2]
52+
53+
[example | description | pointer to more information | …] <!-- optional -->
54+
55+
* Good, because [argument a]
56+
* Good, because [argument b]
57+
* Bad, because [argument c]
58+
*<!-- numbers of pros and cons can vary -->
59+
60+
### [option 3]
61+
62+
[example | description | pointer to more information | …] <!-- optional -->
63+
64+
* Good, because [argument a]
65+
* Good, because [argument b]
66+
* Bad, because [argument c]
67+
*<!-- numbers of pros and cons can vary -->
68+
69+
## Links <!-- optional -->
70+
71+
* [Link type] [Link to ADR] <!-- example: Refined by [ADR-0005](0005-example.md) -->
72+
*<!-- numbers of links can vary -->

0 commit comments

Comments
 (0)