ADR‐000: Adopt Architecture Decision Records - status-im/status-wiki GitHub Wiki

ADR 000: Adopt Architecture Decision Records

Status

Accepted

Context

As our organisation and codebases evolve, decision-making around architecture becomes increasingly complex. Capturing these decisions in a structured and accessible manner ensures continuity, accountability, and shared understanding among current and future contributors.

Many teams struggle with undocumented or poorly documented architecture decisions, leading to inconsistencies, repeated discussions, and difficulty onboarding new contributors. By adopting Architecture Decision Records (ADRs), we aim to create a lightweight yet effective means of documenting and communicating architectural choices.

Decision

We will adopt the practice of using Architecture Decision Records (ADRs) to document significant architectural decisions in a structured format.

Key aspects of this decision include:

  • Storage: ADRs will be stored in the ADR Index under the dedicated directory.
  • Format: ADRs will use a simple, text-based format (e.g., Markdown).
  • Template: ADRs will follow a consistent template as outlined in the ADR Template, including context, decision, consequences, and alternatives considered.
  • Version Control: ADRs will be version-controlled to track changes over time.
  • Review Process: ADRs will be reviewed collaboratively before being finalised.

Consequences

Positive

  • Provides a structured record of architectural decisions, reducing reliance on tribal knowledge.
  • Improves knowledge sharing and onboarding for new contributors.
  • Enables revisiting and reassessing decisions as the system evolves.
  • Encourages thoughtful deliberation before making significant changes.

Negative

  • Requires discipline to maintain and update ADRs.
  • May introduce overhead if not used pragmatically.
  • Needs adoption across teams for consistency and effectiveness.

Alternatives Considered

  1. Ad-Hoc Documentation - Relying on informal methods like meeting notes or emails. Rejected due to lack of standardisation and accessibility.
  2. Comprehensive Documentation Tools - Using specialised tools for documentation. Rejected due to potential complexity and overhead.
  3. No Formal Documentation - Opting not to document decisions formally. Rejected due to risks of knowledge loss and inconsistencies.

Next Steps

  1. Create a template for ADRs and store it in the designated ADR directory in the status-wiki.
  2. Educate contributors on the importance and usage of ADRs.
  3. Start recording significant architecture decisions using ADRs.
  4. Periodically review and improve the ADR process based on feedback and usage patterns.

TL;DR

We are adopting Architecture Decision Records (ADRs) to document significant architectural decisions in a structured format, enhancing knowledge sharing and decision-making transparency within the organisation.