We capture important decisions with architectural decision records.
These records provide context, trade-offs, and reasoning taken at our community & technical cross-roads. Our goal is to preserve the understanding of the project growth, and capture enough insight to effectively revisit previous decisions.
To get started, create a new decision record using the template:
cp template.md NNNN-title-with-dashes.md
For more rationale for this approach, see Michael Nygard's article.
We've inherited MADR ADR template, which is a bit more verbose than Nygard's original template. We may simplify it in the future.
Many decisions build on each other, a driver of iterative change and messiness in software. By laying out the "story arc" of a particular system within the application, we hope future maintainers will be able to identify how to rewind decisions when refactoring the application becomes necessary.