You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: patterns/1-initial/document-architecture-decisions.md
+57-31Lines changed: 57 additions & 31 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,6 +27,34 @@ Identifying such conflicts or misunderstandings late in the development process
27
27
28
28
For an InnerSource project this situation happens more frequently when the project is maintained by multiple teams in the company i.e. shared ownership.
29
29
30
+
## Forces
31
+
32
+
- Often, the involved parties want to make decisions promptly, balancing speed with quality.
33
+
- Documenting decisions (before implementation begins) is a new skill for many of those involved in the process.
34
+
- Typically, only one option is thoroughly discussed or implemented.
35
+
- No one discusses the architectural decisions and technical deps with a broader audience.
36
+
- The owners continuously evaluate upcoming challenges and strive for excellence, refusing to settle for a "good enough" solution.
37
+
38
+
## Solutions
39
+
40
+
A project team or organization chose an ADR and TDR like process for increasing the transparency of our architectural decision making process.
41
+
42
+
Important elements of the solution are:
43
+
44
+
-**A description of when to document an ADR/TDR (and when not to)**:
45
+
- Clear guidelines for when architectural decisions or technical debts require formal documentation and when they can be managed informally.
46
+
-**A template for ADR/TDR documentation**:
47
+
- Should encourage the author to examine the decision from multiple perspectives (technical, business, user, etc.).
48
+
- Should prompt the author to provide both a high-level, easily accessible overview as well as a detailed, in-depth explanation of the rationale and implications.
49
+
-**A well-defined, lightweight process surrounding ADR/TDRs**:
50
+
- How to publish an ADR/TDR and share it with all relevant stakeholders (e.g., via chat message, mailing lists, or project boards).
51
+
- How to collect feedback effectively on the ADR/TDR from diverse stakeholders, ensuring a broad range of input.
52
+
- How to incorporate the feedback and adjust the ADR/TDR as needed.
53
+
- How to move the ADR/TDR towards a conclusion or final decision (e.g., with sign-off from relevant maintainers or decision-makers).
54
+
- The use of appropriate tools, considering that non-technical stakeholders may not have direct access to source control or specialized software. Publish the decsions to a website or wiki.
55
+
-**A commitment to iterating on the ADR/TDR templates and process**:
56
+
- Regularly refining the ADR/TDR templates and associated processes based on feedback and the evolving needs of the organization.
57
+
30
58
## Story
31
59
32
60
The Challenge of Balancing Decisions and Collaboration
@@ -96,43 +124,41 @@ Like any process, this requires ongoing refinement to maintain its effectiveness
96
124
-**Define Governance**:
97
125
- Facilitate the process by providing clear moderation and oversight.
98
126
- Establish a mentoring framework to guide and support stakeholders throughout the process.
99
-
100
-
## Forces
101
127
102
-
- Often, the involved parties want to make decisions promptly, balancing speed with quality.
103
-
- Documenting decisions (before implementation begins) is a new skill for many of those involved in the process.
104
-
- Typically, only one option is thoroughly discussed or implemented.
105
-
- No one discusses the architectural decisions and technical deps with a broader audience.
106
-
- The owners continuously evaluate upcoming challenges and strive for excellence, refusing to settle for a "good enough" solution.
107
-
108
-
## Solutions
109
-
110
-
A project team or organization chose an ADR and TDR like process for increasing the transparency of our architectural decision making process.
111
-
112
-
Important elements of the solution are:
128
+
### Architecture Decision Record (ADR) Tooling
113
129
114
-
-**A description of when to document an ADR/TDR (and when not to)**:
115
-
- Clear guidelines for when architectural decisions or technical debts require formal documentation and when they can be managed informally.
116
-
-**A template for ADR/TDR documentation**:
117
-
- Should encourage the author to examine the decision from multiple perspectives (technical, business, user, etc.).
118
-
- Should prompt the author to provide both a high-level, easily accessible overview as well as a detailed, in-depth explanation of the rationale and implications.
119
-
-**A well-defined, lightweight process surrounding ADR/TDRs**:
120
-
- How to publish an ADR/TDR and share it with all relevant stakeholders (e.g., via chat message, mailing lists, or project boards).
121
-
- How to collect feedback effectively on the ADR/TDR from diverse stakeholders, ensuring a broad range of input.
122
-
- How to incorporate the feedback and adjust the ADR/TDR as needed.
123
-
- How to move the ADR/TDR towards a conclusion or final decision (e.g., with sign-off from relevant maintainers or decision-makers).
124
-
- The use of appropriate tools, considering that non-technical stakeholders may not have direct access to source control or specialized software. Publish the decsions to a website or wiki.
125
-
-**A commitment to iterating on the ADR/TDR templates and process**:
126
-
- Regularly refining the ADR/TDR templates and associated processes based on feedback and the evolving needs of the organization.
130
+
Architecture Decision Records (ADRs) provide a structured way to document design decisions and their rationale, ensuring clarity and continuity in software projects. Several tools facilitate the creation and management of ADRs, making it easier for teams to track and share their architectural choices.
127
131
128
-
### Examples/Templates
132
+
Key ADR Tools:
129
133
130
-
-[Documenting architecture decisions - Michael Nygard](https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions)
- A simple command-line toolset to create and manage ADRs in Markdown format.
138
+
-[ADR-Tools by Nat Pryce](https://github.com/npryce/adr-tools)
139
+
- Another CLI-based ADR tool, helping teams efficiently document decisions in Markdown.
133
140
-[ADR-Tools from Christoph Kappel - asciidoc](https://github.com/unexist/adr-tools)
134
-
-[Record-Tools from Christoph Kappel - acsiidoc](https://github.com/unexist/record-tools)
141
+
- Similar to the previous tools but supports AsciiDoc format for enhanced readability.
142
+
-[Record-Tools by Christoph Kappel](https://github.com/unexist/record-tools)
143
+
- An extended version of ADR tools and support for TDRs, also based on AsciiDoc, enabling better integration with documentation workflows.
135
144
-[mADR - markdown](https://adr.github.io/madr/)
145
+
– A structured Markdown-based ADR template that standardizes documentation across projects.
146
+
147
+
How to Use ADR Tools:
148
+
149
+
- Choose a Format
150
+
– Select Markdown or AsciiDoc based on your team's documentation preferences.
151
+
- Set Up the Tool
152
+
– Install one of the ADR tools (e.g., adr-tools or mADR) in your repository.
153
+
- Create ADRs or TDRs
154
+
– Use CLI commands to generate new ADRs, document architectural decisions, and track changes over time.
155
+
- Review and Update
156
+
- Maintain ADRs by updating them when decisions evolve or new insights emerge.
157
+
- Share and Collaborate
158
+
– Store ADRs in version control (e.g., Git) to facilitate team discussions and long-term knowledge retention.
159
+
- Publish your __Record Catalog__ on a website or wiki and actively share its content through your chat systems.
160
+
161
+
By leveraging ADR tooling, teams can ensure well-documented architectural decisions, improve collaboration, and maintain software sustainability over time.
0 commit comments