Skip to content

ADR Approaches: Comparison and Recommendations⚓︎

Overview⚓︎

This document compares different approaches to documenting architectural decisions and provides recommendations based on project size, team structure, and organizational needs.

Quick Comparison Table⚓︎

Approach Formality Complexity Time to Create Best For Tools Required
Y-Statements Low Very Low 5-15 min Quick decisions, small teams None
MADR Medium Low-Medium 30-60 min Most projects Markdown editor
AWS ADR Medium-High Medium 1-2 hours Enterprise teams Markdown editor
log4brains Medium Medium 30-60 min Teams wanting website log4brains CLI
Prefect PINs Medium-High Medium-High Days-Weeks Open source proposals GitHub
Ethereum EIPs Very High Very High Weeks-Months Protocol/standards GitHub, expertise

Detailed Comparison⚓︎

Format and Structure⚓︎

Aspect Y-Statements MADR AWS ADR log4brains Prefect PINs Ethereum EIPs
File Format Any (text/markdown) Markdown Markdown Markdown (MADR default) Markdown/GitHub Markdown
Template Single sentence Multiple sections Multiple sections Customizable Issue template Rigorous specification
Sections 6 components 5-10 sections 3-5 core sections Based on template Varies 10+ sections
Length 1 sentence 1-3 pages 1-2 pages 1-3 pages 2-10 pages 5-50 pages
Metadata Minimal Optional YAML Optional Auto-extracted GitHub metadata Extensive header

Process and Workflow⚓︎

Aspect Y-Statements MADR AWS ADR log4brains Prefect PINs Ethereum EIPs
Creation Time 5-15 min 30-60 min 1-2 hours 30-60 min Days-Weeks Weeks-Months
Review Process Informal PR review Team meeting PR review Public discussion Multi-stage review
Approval Team lead Team consensus Team meeting Merge to main Maintainers Community consensus
Revision Easy Medium Medium Medium Common Expected
Status Tracking Minimal Explicit states Explicit states 4 states GitHub labels 9+ states

Tooling and Integration⚓︎

Aspect Y-Statements MADR AWS ADR log4brains Prefect PINs Ethereum EIPs
Special Tools None None None log4brains CLI GitHub GitHub + Jekyll
Version Control Any Git Git Git Git (GitHub) Git (GitHub)
Documentation Site Manual Manual Manual Auto-generated GitHub issues GitHub Pages
Search grep/text search grep/text search grep/text search Built-in GitHub search Site search
Templates One format 4 variants AWS templates Customizable Project-specific EIP-1 template

Team and Project Fit⚓︎

Aspect Y-Statements MADR AWS ADR log4brains Prefect PINs Ethereum EIPs
Team Size 1-5 1-20 5-50 3-50 5-100+ Ecosystem-wide
Project Size Small-Medium Any Medium-Large Medium-Large Large Very Large
Formality Informal Semi-formal Formal Semi-formal Formal Very Formal
Learning Curve Very Low Low Medium Medium Medium-High High
Maintenance Very Low Low Medium Medium High Very High

Recommendations by Project Size⚓︎

Tiny Projects (1-2 developers, < 6 months)⚓︎

Recommended: Y-Statements or simple notes in README

Rationale:

  • Minimal overhead
  • Quick to create
  • Low maintenance
  • Easy to evolve

Implementation:

## Architecture Decisions

### Use SQLite for storage (2024-01-15)

In the context of local data storage, facing the need for simple persistence, we decided for SQLite and against PostgreSQL, to achieve zero-configuration deployment, accepting that we're limited to single-server deployment.

Pros:

  • No process overhead
  • Captures essentials
  • Fast iteration

Cons:

  • May lack detail for complex decisions
  • Less discoverable
  • Harder to maintain as project grows

Small Projects (2-5 developers, 6 months - 2 years)⚓︎

Recommended: MADR (Minimal variant)

Rationale:

  • Lightweight but structured
  • Scales with project growth
  • No special tools needed
  • Industry standard

Implementation:

project/
├── docs/
│   └── adr/
│       ├── 0001-record-architecture-decisions.md
│       ├── 0002-use-pytest-for-testing.md
│       └── 0003-implement-rest-api.md

Template: Use MADR minimal template

Process:

  1. Developer creates ADR in PR
  2. Team reviews in code review
  3. Merge to main

Pros:

  • Low overhead
  • Structured format
  • Room to grow
  • Familiar workflow

Cons:

  • Requires discipline
  • No automated tooling
  • Manual indexing

Medium Projects (5-15 developers, 2-5 years)⚓︎

Recommended: MADR (Full variant) or AWS ADR Guide

Rationale:

  • Need more structure
  • Multiple team members
  • Longer timeline needs documentation
  • More stakeholders

Implementation:

project/
├── docs/
│   ├── adr/
│   │   ├── README.md (index)
│   │   ├── backend/
│   │   │   ├── 0001-database-selection.md
│   │   │   └── 0002-api-framework.md
│   │   └── frontend/
│   │       ├── 0001-react-vs-vue.md
│   │       └── 0002-state-management.md

Template: Full MADR or AWS ADR template

Process:

  1. ADR required for architectural decisions
  2. Team review meeting for significant decisions
  3. PR review for all ADRs
  4. Integration with documentation site (MkDocs, Docusaurus)

Considerations:

  • Categorization: Organize by component/layer
  • Index: Maintain README with list and status
  • Integration: Add to CI/CD to validate format
  • Reviews: Make ADRs part of architecture review

Pros:

  • Comprehensive documentation
  • Organized structure
  • Supports growth
  • Team alignment

Cons:

  • More time investment
  • Needs enforcement
  • Requires maintenance

Large Projects (15-50 developers, 5+ years)⚓︎

Recommended: log4brains or MADR + documentation site

Rationale:

  • Many stakeholders
  • Need searchability
  • Long-term maintenance
  • Onboarding needs

Implementation Option 1: log4brains

# Initialize
npx log4brains init

# Create ADR
npx log4brains adr new

# Preview
npx log4brains preview

# Build site
npx log4brains build

# Deploy to GitHub Pages

Implementation Option 2: MADR + MkDocs

project/
├── docs/
│   ├── adr/
│   │   ├── index.md
│   │   ├── 0001-*.md
│   │   └── ...
│   └── mkdocs.yml

Process:

  1. ADR template in repo
  2. Automated checks for format
  3. Required reviews by architects
  4. Automatic site generation
  5. Published to internal/external site
  6. Regular audits of ADR status

Considerations:

  • Tooling: Invest in automation
  • Governance: Clear ownership and process
  • Search: Make ADRs easily discoverable
  • Metrics: Track ADR coverage
  • Integration: Link from code, docs, issues

Pros:

  • Excellent searchability
  • Professional presentation
  • Supports large teams
  • Great for onboarding
  • Historical record

Cons:

  • Setup overhead
  • Tool dependency
  • Requires maintenance
  • May need dedicated owner

Very Large Projects / Multi-Team (50+ developers)⚓︎

Recommended: AWS ADR Guide approach + centralized tooling

Rationale:

  • Multiple teams need coordination
  • Consistent format critical
  • Enterprise governance
  • Audit and compliance needs

Implementation:

organization/
├── adr-templates/
│   ├── standard-adr.md
│   ├── security-adr.md
│   └── data-adr.md
├── projects/
│   ├── project-a/
│   │   └── docs/adr/
│   ├── project-b/
│   │   └── docs/adr/

Infrastructure:

  • Central repository: ADR templates and guidelines
  • Automated validation: CI/CD checks for format compliance
  • Search platform: Searchable across all projects
  • Review board: Architectural review for major decisions
  • Training: Onboarding for new team members

Process:

  1. Template selection based on decision type
  2. Draft creation by proposer
  3. Stakeholder consultation
  4. Review by architecture board
  5. Team consensus
  6. Final approval and publication
  7. Implementation tracking

Governance:

  • Ownership: Clear DRI (Directly Responsible Individual)
  • States: Strict status tracking
  • Impact analysis: Required for breaking changes
  • Compliance: Link to regulations/standards
  • Audit trail: Complete history

Pros:

  • Enterprise-grade
  • Consistent across teams
  • Supports compliance
  • Clear governance
  • Excellent traceability

Cons:

  • High overhead
  • Complex process
  • May slow decisions
  • Requires dedicated resources

Recommendations by Project Type⚓︎

Open Source Projects⚓︎

Recommended: Prefect PINs approach or MADR with public docs

Rationale:

  • Community involvement
  • Transparent decision making
  • Educational value
  • Build trust

Implementation:

project/
├── docs/
│   ├── adr/
│   │   └── *.md (published to docs site)
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   └── pin.md

Process:

  1. Community member opens issue/PR with proposal
  2. Discussion in GitHub
  3. Maintainers provide feedback
  4. Revision based on input
  5. Decision by maintainers
  6. Implementation
  7. Documentation in ADR

Considerations:

  • Accessibility: Make ADRs easy to find
  • Welcoming: Encourage community proposals
  • Transparent: Document rationale clearly
  • Responsive: Timely feedback on proposals

Examples: Prefect, Structurizr Python, Arachne


Internal Enterprise Applications⚓︎

Recommended: AWS ADR Guide or MADR (Full)

Rationale:

  • Clear governance needed
  • Compliance requirements
  • Audit trail
  • Team turnover

Focus:

  • Security: Security considerations section
  • Compliance: Regulatory requirements
  • Risk: Risk assessment
  • Cost: TCO analysis

Startups / Fast-Moving Teams⚓︎

Recommended: Y-Statements or MADR (Minimal)

Rationale:

  • Speed is critical
  • Rapid iteration
  • Frequent changes
  • Small team

Approach:

  • Start with Y-Statements
  • Upgrade to MADR when needed
  • Only document significant decisions
  • Keep it lightweight

Red Flags to Watch:

  • Team growing → need more structure
  • Decisions being revisited → need documentation
  • Onboarding taking too long → need context

Protocol / Standards Development⚓︎

Recommended: Ethereum EIPs approach

Rationale:

  • Multiple implementations
  • High stakes
  • Security critical
  • Long-term impact

Requirements:

  • Rigorous specification
  • Test cases
  • Reference implementation
  • Security analysis
  • Multi-stage review
  • Community consensus

Examples: Ethereum, Bitcoin, IETF RFCs


Hybrid Approaches⚓︎

Start Lightweight, Scale Up⚓︎

Path:

  1. Phase 1 (0-6 months): Y-Statements in README
  2. Phase 2 (6-18 months): MADR minimal in docs/adr/
  3. Phase 3 (18-36 months): Full MADR + documentation site
  4. Phase 4 (36+ months): log4brains or custom tooling

Trigger Points:

  • Team size doubles → increase formality
  • Decision being re-litigated → need documentation
  • Onboarding takes > 1 month → need better docs
  • Compliance requirements → add rigor

Multi-Tier System⚓︎

For large organizations with varied needs:

Tier 1: Y-Statements

  • Minor decisions
  • Component-level choices
  • Quick iterations

Tier 2: MADR

  • Feature-level decisions
  • Moderate impact
  • Team consensus needed

Tier 3: Full ADR

  • Architectural decisions
  • Multi-team impact
  • Long-term consequences

Tier 4: RFC/PIN

  • Organization-wide changes
  • Breaking changes
  • Standards and patterns

Selection Decision Tree⚓︎

Start: Need to document a decision?
├─ Is it trivial/reversible? → No documentation needed
├─ Small team (< 5) + fast iteration?
│  └─ → Y-Statements
├─ Open source + community input?
│  └─ → PIN-style proposal
├─ Protocol/standard development?
│  └─ → EIP-style rigorous process
├─ Need searchable website?
│  └─ → log4brains
├─ Enterprise/compliance needs?
│  └─ → AWS ADR Guide
└─ Most other cases?
   └─ → MADR (start minimal, grow as needed)

Common Pitfalls to Avoid⚓︎

1. Too Much Process Too Soon⚓︎

Symptom: Team resists creating ADRs

Fix: Start lighter, add structure as needed

2. Too Little Structure⚓︎

Symptom: ADRs inconsistent, hard to find, missing context

Fix: Adopt standard template, even if minimal

3. Writing Novels⚓︎

Symptom: ADRs take days to write, no one reads them

Fix: Focus on context, decision, consequences. Details can be links.

4. Set It and Forget It⚓︎

Symptom: ADRs out of date, status unclear

Fix: Review quarterly, update status, mark superseded

5. No Enforcement⚓︎

Symptom: Some decisions documented, others not

Fix: Make ADRs part of definition of done, review in retros

6. Wrong Scope⚓︎

Symptom: ADRs for trivial decisions OR missing major ones

Fix: Define what warrants an ADR (architectural significance)

Success Metrics⚓︎

Track these to measure ADR effectiveness:

  • Coverage: % of architectural decisions documented
  • Findability: Time to find relevant ADR
  • Usage: ADRs referenced in PRs, discussions
  • Onboarding: Time to onboard reduced
  • Re-litigation: Fewer debates about settled decisions
  • Compliance: Audit trail completeness

Migration Strategies⚓︎

From No ADRs to ADRs⚓︎

  1. Start with ADR-0001: “Record architecture decisions”
  2. Document next decision: Practice the process
  3. Backfill incrementally: Document existing major decisions as time allows
  4. Make it habit: Add to PR template checklist

From Y-Statements to MADR⚓︎

  1. Choose template: MADR minimal to start
  2. Convert existing: Expand Y-Statements to full ADRs
  3. Update process: Train team on new format
  4. Parallel run: Accept both for transition period

From MADR to log4brains⚓︎

  1. Install log4brains: npx log4brains init
  2. Migrate files: Copy ADRs to log4brains directory
  3. Update metadata: Ensure proper front matter
  4. Generate site: npx log4brains build
  5. Deploy: Publish to GitHub Pages or hosting

Summary Recommendations⚓︎

Your Situation Recommended Approach Why
Solo developer Y-Statements or notes Minimal overhead, maximum flexibility
Small team (2-5) MADR Minimal Lightweight structure, room to grow
Growing team (5-15) MADR Full Comprehensive, organized, scalable
Large team (15-50) log4brains or MADR + site Searchable, professional, team-friendly
Enterprise (50+) AWS ADR + governance Process, compliance, consistency
Open source MADR + public docs Transparent, accessible, community-friendly
Need community input PIN-style proposals Collaborative, inclusive, transparent
Protocol development EIP-style rigorous Specification-grade, multi-implementation
Fast startup Y-Statements Speed over process
Regulated industry AWS ADR + extras Compliance, audit trail, formality

Next Steps⚓︎

  1. Choose your starting point based on recommendations above
  2. Create ADR-0001 to establish the practice
  3. Select a template and customize if needed
  4. Document your next decision to practice
  5. Review in 3 months and adjust as needed
  6. Scale up as team and project grow

Remember: The best ADR system is the one your team actually uses. Start simple, iterate, and grow your practice over time.