Edit this page | Blame

Using Architecture Decision Records at GeneNetwork

One of the hardest things to track during the life of a project is the motivation behind certain decisions. A new person coming on to a project may be perplexed, baffled, delighted, or infuriated by some past decision. -- Michael Nygard

When building or maintaining software, there's often moments when we ask, "What were they thinking?" This happens when we are trying to figure out why something was done a certain way, leading to speculation, humor, or criticism[0]. Given the constraints we face when writing code, it's important to make sure that important decisions are well-documented and transparent. Architecture Decision Records (ADRs) are one such tool. They provide a structured way to capture the reasoning behind key decisions.

ADRs consist 4 key sections [0]:

Optionally, when an ADR is rejected, you can add a section:

At GeneNetwork, we manage ADRs within our issue tracker, organizing them under the path "/topics/ADR/<project-name>/XXX-name.gmi". The "XXX" represents a three-digit number, allowing for an easy, chronological order of the proposals as they are created.

Here is a template for a typical ADR in Genenetwork:

# [<project>/ADR-<XXX>] Title

* author: author-name
* status: proposed
* reviewed-by: A, B, C

## Context

Some context.

## Decision

Decisions.

## Consequences

Consequences.

Here are some examples of Genenetwork specific ADRs:

References

(made with skribilo)