-
Notifications
You must be signed in to change notification settings - Fork 32
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' into feature/deep-references-docs-and-stess-test-…
…case
- Loading branch information
Showing
112 changed files
with
4,006 additions
and
773 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
docs/adrs |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,19 @@ | ||
default_language_version: | ||
python: python3 | ||
python: python3 | ||
repos: | ||
- repo: https://github.com/ambv/black | ||
rev: 21.4b2 | ||
- repo: https://github.com/ambv/black | ||
rev: 22.3.0 | ||
hooks: | ||
- id: black | ||
- repo: https://github.com/pre-commit/pre-commit-hooks | ||
- id: black | ||
- repo: https://github.com/pre-commit/pre-commit-hooks | ||
rev: v2.0.0 | ||
hooks: | ||
- id: check-merge-conflict | ||
- id: flake8 | ||
- repo: local | ||
hooks: | ||
- id: merge-docs | ||
name: Merge examples into docs | ||
entry: tools/docs_samples.py | ||
language: python | ||
files: ".*.md|examples/.*.yml" | ||
- id: check-merge-conflict | ||
- id: flake8 | ||
- repo: local | ||
hooks: | ||
- id: merge-docs | ||
name: Merge examples into docs | ||
entry: tools/docs_samples.py | ||
language: python | ||
files: ".*.md|examples/.*.yml" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
--- | ||
date: 2023-02-03 | ||
status: Accepted | ||
author: @jstvz | ||
--- | ||
|
||
# 1. Record architecture decisions | ||
|
||
## Context and Problem Statement | ||
|
||
We need to record the architectural decisions made on this project, but we lack a centralized location for storing them. This makes it difficult to find previous decisions. Moreover, we lack a shared vocabulary to discuss and a process to refine such decisions. | ||
|
||
### Assumptions | ||
|
||
1. A process for Requests for Comment exists in this repository or elsewhere. | ||
2. We define "architectural decision" as any software design choice that addresses a functional or non-functional requirement that is architecturally significant, for example: | ||
- Which web framework to use | ||
- Whether to denormalize a database table | ||
- Whether or not to abandon a third-party test coverage aggregator | ||
|
||
## Decision | ||
|
||
### Options Considered | ||
|
||
1. Status Quo | ||
1. Good: No changes to our process required | ||
2. Bad: It can be difficult to find the reasons for our choices because there | ||
are lots of places to look. | ||
2. Architectural Decision Records (ADRs) | ||
1. Good: ADRs provide: | ||
1. a centralized log of the decisions for our projects | ||
2. a structured process for adopting decisions using pull requests | ||
3. a lower barrier of entry for documenting a decision | ||
4. a reference for teammates and community members | ||
5. a shared understanding of a problem and its proposed solution | ||
6. an ecosystem of existing tooling for managing and publishing ADRs | ||
2. Bad: | ||
1. Detailed discussions can expose spirited debates to public view | ||
2. ADRs add a third place to search in addition to Quip and Confluence | ||
3. ADRs add to the documentation burden | ||
|
||
### Decision Outcome | ||
|
||
We will use Architecture Decision Records, as [described at adr.github.io](https://adr.github.io/). This is a lightweight process is that is consistent with our existing code review workflow. Because these records are code, we can apply automation to lint files, automatically assign reviewers, and publish decisions to other repositories or the web. | ||
|
||
## Consequences | ||
|
||
We'll need additional discussions and RFCs to decide: | ||
|
||
1. the best way to organize the decision log, | ||
2. whether to retroactively record major decisions, or only future ones, | ||
3. whether to include decision records in our documentation. | ||
|
||
## References | ||
|
||
More information: | ||
|
||
- [Decisions](https://atlas.sfdc.sh/decisions): Salesforce Architecture Library articles on RFCs and decision records. | ||
- [ADR GitHub organization](https://adr.github.io/): References to more information on tooling and the reasons to adopt ADRs | ||
- [Share the Load: Distribute Design Authority with Architecture Decision Records](https://www.agilealliance.org/resources/experience-reports/distribute-design-authority-with-architecture-decision-records): A case study about the adoption of ADRs by a microservices team at IBM. | ||
- Zimmerman, et al., [_Architectural decision guidance across projects: problem space modeling, decision backlog management and cloud computing knowledge_](https://www.ifs.hsr.ch/fileadmin/user_upload/customers/ifs.hsr.ch/Home/projekte/ADMentor-WICSA2015ubmissionv11nc.pdf): Conference paper describing a theoretical framework for systematically reusing architectural knowledge across projects. | ||
|
||
Examples: | ||
|
||
- [Timestamp format](https://github.com/joelparkerhenderson/architecture-decision-record/blob/main/examples/timestamp-format/index.md) | ||
- [ADR process (internal Confluence)](https://confluence.internal.salesforce.com/pages/viewpage.action?pageId=349650878) Describes the ADR process for SFDC's Business Technology's Network Architecture team. | ||
- [User Facing Configuration](https://github.com/arachne-framework/architecture/blob/master/adr-005-user-facing-config.md) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
# Decision Records | ||
|
||
This directory contains the Architectural Decision Records (ADRs) for this project. | ||
|
||
## Architectural Decisions (ADs) | ||
|
||
We define "architectural decision" as any software design choice that addresses a functional or non-functional requirement that is architecturally significant, for example: | ||
|
||
- Which web framework to use | ||
- Whether to denormalize a database table | ||
- Whether or not to abandon a third-party test coverage aggregator | ||
|
||
We store ADRs in the `docs/adrs` directory, named in this format: `000x-Title-of-ADR.md`. | ||
|
||
## Tools | ||
|
||
[`adr-tools`](https://github.com/npryce/adr-tools) is a simple CLI tool that manages ADRs. To install it via Homebrew: | ||
|
||
```shell | ||
brew install adr-tools | ||
``` | ||
|
||
Create a new ADR | ||
|
||
```shell | ||
adr new Use FastDRF Library | ||
``` | ||
|
||
which will create a new markdown document with the next number and open it for editing. To create a new decision record manually, simply copy the template at `templates/template.md` into this directory and name it appropriately. | ||
|
||
## Workflow | ||
|
||
1. Write an ADR outlining a decision for a particular problem. | ||
2. Create a pull request assigned to yourself and submit. If you know who will review your PR, you should request a review.[^1] | ||
3. The reviewer and other team members discuss the ADR. The ADR is updated during the review to add context, etc. | ||
4. At the end of the review period, the ADR is either: | ||
|
||
- Approved: Status is "Accepted" and merge the PR, or | ||
- Rejected: Update Status to "Rejected" and close the PR. | ||
|
||
5. Create a new ADR when reversing or revisiting a decision, linking to the decision record that it supercedes. Update the old ADR with a link to the superceding ADR. | ||
|
||
## Links | ||
|
||
- [Suggestions for writing good ADRs](https://github.com/joelparkerhenderson/architecture-decision-record#suggestions-for-writing-good-adrs) | ||
|
||
[^1]: We encourage you to include your ADR in pull requests alongside related code changes when it makes sense to review them together. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
--- | ||
date: DATE | ||
status: STATUS | ||
author: <!--@githubusername--> | ||
--- | ||
|
||
<!--status: {proposed | rejected | accepted | deprecated | … | superseded by [ADR-0005](0005-example.md)}--> | ||
|
||
# NUMBER. TITLE | ||
|
||
## Context and Problem Statement | ||
|
||
Short description of issue motivating this decision, and any context that influences or constrains the decision. Can be framed as the first and third parts of a Y-Statement. | ||
|
||
<!--Optional sections--> | ||
|
||
### Assumptions | ||
|
||
Explicit assumptions made about the environment or requirements. | ||
|
||
### Constraints | ||
|
||
Explicit constraints imposed on the solution space. | ||
|
||
<!--Optional sections END--> | ||
|
||
## Decision | ||
|
||
### Considered Options | ||
|
||
1. Option 1 | ||
1. Good because reasons | ||
1. Bad because reasons | ||
1. Option 2 | ||
1. Good because reasons | ||
1. Bad because reasons | ||
1. Option $$n$$ | ||
|
||
### Decision Outcome | ||
|
||
The Option that we're proposing or have agreed to implement, because of justification x... | ||
|
||
## Consequences | ||
|
||
What becomes easier or more difficult to do and any risks introduced by the change that will need to be mitigated. | ||
|
||
## References | ||
|
||
Links to related decisions, design artifacts or policies that affected the decision. | ||
|
||
- Reference 1: Library documentation | ||
- Reference 2: RFC describing implementation in detail | ||
- Reference 3: ADR-0000 | ||
|
||
<!--Optional sections--> | ||
|
||
## Notes | ||
|
||
Notes and issues captured from team discussions. | ||
|
||
<!--Optional sections END--> |
Oops, something went wrong.