Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Architectural Decision Record #107

Merged
merged 7 commits into from
Jan 30, 2025
Merged

Architectural Decision Record #107

merged 7 commits into from
Jan 30, 2025

Conversation

leclairm
Copy link
Contributor

No description provided.

@leclairm leclairm requested a review from DropD January 27, 2025 09:01
@leclairm leclairm marked this pull request as ready for review January 27, 2025 09:05
@DropD
Copy link
Collaborator

DropD commented Jan 27, 2025

I would suggest to record each architectural decision in it's own markdown file. That way we can avoid unneccessary conflicts. This means the name and/or location has to be a bit more unique than src/sirocco/ADR.md. I can see two ways to organize this successfully:

  • ADR_<topic name>.md as close to the relevant source as reasonable with the topic name potentially shorter based on the location (can be a bit tricky if there is a design change touching multiple modules). Might lead to moving ADRs around during refactorings.
  • adr folder toplevel or in docs (could then be served with mkdocs for easy browsing), with a topic based naming scheme. Example: https://github.com/GridTools/gt4py/tree/main/docs/development/ADRs.

I guess the two ways could be combined by adding subfolders in an ADR folder, based on which part of the code the ADRs are relevant to.

@leclairm
Copy link
Contributor Author

Point taken. I'd go for the second option but not in docs. I'd prefer to keep the docs user oriented and not dev.

@leclairm
Copy link
Contributor Author

leclairm commented Jan 29, 2025

@DropD which of the following options would you advise to update the ADR documents?

  • overwrite the document with the latest design so that it's easily readable. History is then only accessible in older commits.
  • append / insert updates so that the history remains visible but the current design needs to be reconstituted by the reader by merging the different updates with the original document.

@leclairm
Copy link
Contributor Author

In our meeting today we diced that we could mix the 2 update policies: add updates between stable versions and rewrite in-between. Still the current ADR about Store and Array would take a bit of time to rewrite so I leave it for later. See #112

@leclairm leclairm merged commit 046be57 into main Jan 30, 2025
6 checks passed
@leclairm leclairm deleted the ADR branch January 30, 2025 15:35
@DropD
Copy link
Collaborator

DropD commented Jan 30, 2025

in GT4Py we use something we copied from other projects like Python (PEP) or NumPy (NEP). Each of our ADRs has a header where we can state whether this is current or has been replaced by another one. Also when it has last been changed and why.

So we update ADRs with small changes, but for bigger changes we create a new one which links to the old one but shouldn't require reading the old one. The old one is then updated to say that it has been superseded by the new one. This is how we keep the history available.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants