Skip to content
This repository was archived by the owner on Mar 13, 2023. It is now read-only.

Commit 9d43e40

Browse files
authored
ADR adoption (#178)
1 parent 453082e commit 9d43e40

6 files changed

+128
-0
lines changed

.log4brains.yml

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
project:
2+
name: ParallelCluster Manager (PCM)
3+
tz: Europe/Rome
4+
adrFolder: ./decisions
5+
packages: []
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Use Log4brains to manage the ADRs
2+
3+
- Status: accepted
4+
- Date: 2022-07-07
5+
- Tags: dev-tools, doc
6+
7+
## Context and Problem Statement
8+
9+
We want to record architectural decisions made in this project.
10+
Which tool(s) should we use to manage these records?
11+
12+
## Considered Options
13+
14+
- [Log4brains](https://github.com/thomvaill/log4brains): architecture knowledge base (command-line + static site generator)
15+
- [ADR Tools](https://github.com/npryce/adr-tools): command-line to create ADRs
16+
- [ADR Tools Python](https://bitbucket.org/tinkerer_/adr-tools-python/src/master/): command-line to create ADRs
17+
- [adr-viewer](https://github.com/mrwilson/adr-viewer): static site generator
18+
- [adr-log](https://adr.github.io/adr-log/): command-line to create a TOC of ADRs
19+
20+
## Decision Outcome
21+
22+
Chosen option: "Log4brains", because it includes the features of all the other tools, and even more.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Use Michael Nygard format for ADR
2+
3+
- Status: accepted
4+
- Tags: dev-tools, doc
5+
6+
## Context
7+
Adopting a format for ADR which is too verbose might prevent people from writing them, as they might consider the activity too time consuming.
8+
9+
## Decision
10+
We decided to adopt the format proposed by Michael Nygard, as it is brief enough to be written rapidly and conveys enough information for making the adoption of ADR valuable.
11+
12+
## Consequences
13+
- People might be more keen to write ADRs as the format is simpler
14+
- We might risk to loose the driver for some decisions and the options evaluated
15+
16+
## Links <!-- optional -->
17+
- [ADR template by Michael Nygard in Markdown](https://github.com/joelparkerhenderson/architecture-decision-record/blob/main/templates/decision-record-template-by-michael-nygard/index.md)

decisions/README.md

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Architecture Decision Records
2+
3+
## Development
4+
5+
If not already done, install Log4brains:
6+
7+
```bash
8+
npm install -g log4brains
9+
```
10+
11+
To preview the knowledge base locally, run:
12+
13+
```bash
14+
log4brains preview
15+
```
16+
17+
In preview mode, the Hot Reload feature is enabled: any change you make to a markdown file is applied live in the UI.
18+
19+
To create a new ADR interactively, run:
20+
21+
```bash
22+
log4brains adr new
23+
```
24+
25+
## More information
26+
27+
- [Log4brains documentation](https://github.com/thomvaill/log4brains/tree/master#readme)
28+
- [What is an ADR and why should you use them](https://github.com/thomvaill/log4brains/tree/master#-what-is-an-adr-and-why-should-you-use-them)
29+
- [ADR GitHub organization](https://adr.github.io/)

decisions/index.md

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<!-- This file is the homepage of your Log4brains knowledge base. You are free to edit it as you want -->
2+
3+
# Architecture knowledge base
4+
5+
Welcome 👋 to the architecture knowledge base of ParallelCluster Manager (PCM).
6+
You will find here all the Architecture Decision Records (ADR) of the project.
7+
8+
## Definition and purpose
9+
10+
> An Architectural Decision (AD) is a software design choice that addresses a functional or non-functional requirement that is architecturally significant.
11+
> An Architectural Decision Record (ADR) captures a single AD, such as often done when writing personal notes or meeting minutes; the collection of ADRs created and maintained in a project constitutes its decision log.
12+
13+
An ADR is immutable: only its status can change (i.e., become deprecated or superseded). That way, you can become familiar with the whole project history just by reading its decision log in chronological order.
14+
Moreover, maintaining this documentation aims at:
15+
16+
- 🚀 Improving and speeding up the onboarding of a new team member
17+
- 🔭 Avoiding blind acceptance/reversal of a past decision (cf [Michael Nygard's famous article on ADRs](https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions.html))
18+
- 🤝 Formalizing the decision process of the team
19+
20+
## Usage
21+
22+
This website is automatically updated after a change on the `master` branch of the project's Git repository.
23+
In fact, the developers manage this documentation directly with markdown files located next to their code, so it is more convenient for them to keep it up-to-date.
24+
You can browse the ADRs by using the left menu or the search bar.
25+
26+
The typical workflow of an ADR is the following:
27+
28+
![ADR workflow](/l4b-static/adr-workflow.png)
29+
30+
The decision process is entirely collaborative and backed by pull requests.
31+
32+
## More information
33+
34+
- [Log4brains documentation](https://github.com/thomvaill/log4brains/tree/master#readme)
35+
- [What is an ADR and why should you use them](https://github.com/thomvaill/log4brains/tree/master#-what-is-an-adr-and-why-should-you-use-them)
36+
- [ADR GitHub organization](https://adr.github.io/)

decisions/template.md

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# [short title of solved problem and solution]
2+
3+
- Status: [draft | proposed | rejected | accepted | deprecated | … | superseded by [xxx](yyyymmdd-xxx.md)] <!-- optional -->
4+
- Deciders: [list everyone involved in the decision] <!-- optional -->
5+
- Date: [YYYY-MM-DD when the decision was last updated] <!-- optional. To customize the ordering without relying on last edit dates -->
6+
- Tags: [space and/or comma separated list of tags] <!-- optional -->
7+
8+
## Context
9+
What is the issue that we're seeing that is motivating this decision or change?
10+
11+
## Decision
12+
What is the change that we're proposing and/or doing?
13+
14+
## Consequences
15+
What becomes easier or more difficult to do because of this change?
16+
17+
## Links <!-- optional -->
18+
- [Link type](link to adr) <!-- example: Refined by [xxx](yyyymmdd-xxx.md) -->
19+
-<!-- numbers of links can vary -->

0 commit comments

Comments
 (0)