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(decisions): add architectural decision records structure #9310

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

gustavovalverde
Copy link
Member

Motivation

Sometimes we make architectural decisions that can have a great impact even though their implementation seems easy or trivial, and these decisions—if we decide to change them—should be documented to avoid pitfalls that were previously considered by their authors, but are hidden in conversations across different platforms, or in discussions in PRs.

Thus we required a place to leave those decisions defined, and easily track their changes, and using git for this purpose is the best as it provides:

  • Version control and history tracking of decision evolution
  • Clear attribution of changes and contributions
  • The ability to reference specific decisions in issues and PRs
  • Integration with our existing development workflow
  • Discoverability through the same tools we use daily

This approach introduces a structured system for documenting important architectural decisions across multiple domains of the Zebra (DevOps, Network, Consensus, etc.), creating transparency around our technical choices and their rationale.

Solution

  • Add a decision records directory structure with domain-specific subfolders
  • Include a README explaining the purpose and usage of decision records
  • Provide a standardized template for creating new decision records
  • Add an initial DevOps decision record for filesystem hierarchy standardization
  • Structure follows a modified MADR (Markdown Architectural Decision Records) approach

Tests

  • Validated markdown formatting and structure
  • Ensured links in the README function correctly
  • Verified the template can be used to create new decision records

Specifications & References

Follow-up Work

  • Document existing architectural decisions that haven't been captured yet
  • Consider adding a decision record index or navigation system as the number of records grows
  • Integrate decision record references into relevant parts of the codebase documentation

PR Checklist

  • The PR name is suitable for the release notes.
  • The solution is tested.
  • The documentation is up to date.
  • The PR has a priority label.
  • If the PR shouldn't be in the release notes, it has the C-exclude-from-changelog label.

Create a structured decision records system to document important technical choices across multiple domains (DevOps, Network, Consensus, etc.).

This implements a modified MADR template approach for preserving context, trade-offs, and reasoning behind significant architectural decisions.
@gustavovalverde gustavovalverde added A-docs Area: Documentation C-design Category: Software design work C-feature Category: New features P-Low ❄️ labels Feb 28, 2025
@gustavovalverde gustavovalverde self-assigned this Feb 28, 2025
@gustavovalverde gustavovalverde requested a review from a team as a code owner February 28, 2025 10:14
@gustavovalverde gustavovalverde requested review from conradoplg and removed request for a team February 28, 2025 10:14
@mpguerra mpguerra requested review from upbqdn and removed request for conradoplg February 28, 2025 10:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-docs Area: Documentation C-design Category: Software design work C-feature Category: New features P-Low ❄️
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant