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

docs: Add Key Design Decisions documentation #128

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open

Conversation

jonnyandrew
Copy link
Contributor

@jonnyandrew jonnyandrew commented Feb 5, 2025

Changes

Add documentation about Key Design Decisions (KDD).

Evidence of the change

Checklist

Before publishing a pull request

  • Ran the app locally ensuring it builds.
  • Tests pass locally.
  • Created a draft pull request if it's not ready for review.

Before the CODEOWNERS review the pull request

  • Complete any relevant acceptance criteria
  • Self-review code.
  • Successfully run changes on a testing device.
  • Complete automated Testing:
    • Unit Tests.
    • Integration Tests.
    • Instrumentation / Emulator Tests.

@jonnyandrew jonnyandrew changed the base branch from main to jonny/update-pipelines-413b2f4 February 6, 2025 08:15
@jonnyandrew jonnyandrew marked this pull request as ready for review February 6, 2025 09:56
@jonnyandrew jonnyandrew requested review from a team as code owners February 6, 2025 09:56
Base automatically changed from jonny/update-pipelines-413b2f4 to main February 6, 2025 15:55
@@ -0,0 +1,47 @@
# Storing Architectural Design Records (ADRs)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm just wondering about the thought process about doing this as an ADR / decision format, rather than regular documentation of things we've built.

I think this could make it harder to find information because ADR format is designed more as an audit trail where things change over time, and decisions get revoked by more recent decisions, rather than necessarily amended.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, is this repository the right place to hold that?
If decisions are wider than this codebase, where would they live?

  • Here or in a different repository?
  • Would we duplicate decisions across repositories?

We do also already have a process (TDF) for cross-Pod decisions, where things live on Confluence.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd be interested in @AdamHigginsonGDS's take on this one too.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - yes I'm keen we don't end up with a proliferation of adr-like tech docs throughout the program, I already think discoverability is a real challenge for people (e.g. we have ADRs/RFCs/tech manual/confluence/jira... you get the picture).

If we'd like to keep a record of tech decisions, can we use the Tech Design process (https://govukverify.atlassian.net/wiki/spaces/DCMAW/pages/3436183661/What+Is+TDF), and then link from the README any decisions?

Copy link
Contributor Author

@jonnyandrew jonnyandrew Feb 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ADR / decision format, rather than regular documentation of things we've built.

@obinns-dd I think both are valuable, but the need for ADRs is to record the reasoning why a decison was made and why the architecture exists. I'm keen not to lose the value that we've created through meetings and slack threads, that we could share.

I think regular documentation of the project architecture would also be useful to create but it doesn't necessarily capture all the context other teams might need to learn from and make a case for introducing to their own projects.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

By the way, these are good questions that this first ADR should definitely address! I'll try to incorporate all of this in a clearer way.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@AdamHigginsonGDS - in case any confusion, your messages hadn't arrived when I wrote my earlier replies to @obinns-dd's messages

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To give a concrete example:

We recently had a discussion around the architecture of our analytics within this repository. We identified that we're tightly coupled to a problematic analytics framework, discussed several options for improvement and the trade-offs, and ultimately settled on accepting the coupling.

Here's the comment thread: #92 (comment)

Now this is definitely not something I'd bring to TDF because the scope is very much limited to this repository. But it could still be valuable to distil into an ADR for future developers.

Does that give you an idea of where I'm coming from? Perhaps I can include a few examples of what is and isn't appropriate and link to TDF so that we explictly cover cross-pod/cross-programme knowledge sharing as an alternative?

Copy link
Contributor Author

@jonnyandrew jonnyandrew Feb 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've updated the ADR to hopefully address your concerns:

  • Update the name of this documentation from 'ADR' to 'local ADR'
  • Highlight Technical Design Forum as an alternative and compare the different scopes and use cases
  • Link to documentation about Technical Design Forum

3f043c7

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After talking we've agreed to rename from 'ADR' to Key Design Decision (KDD) to avoid giving the impression that this documentation will have a process as thorough as the ADR process from govuk-one-login/architecture.

@obinns-dd obinns-dd requested a review from JacksonJ2W February 7, 2025 10:05
@jonnyandrew jonnyandrew changed the title docs: Add architectural design records documentation docs: Add local Architectural Design Records (ADR) documentation Feb 10, 2025
@jonnyandrew jonnyandrew requested a review from a team as a code owner February 19, 2025 08:24
@jonnyandrew jonnyandrew changed the title docs: Add local Architectural Design Records (ADR) documentation docs: Add Key Design Decisions documentation Feb 19, 2025
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.

4 participants