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:
- Developer creates ADR in PR
- Team reviews in code review
- 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:
- ADR required for architectural decisions
- Team review meeting for significant decisions
- PR review for all ADRs
- 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:
- ADR template in repo
- Automated checks for format
- Required reviews by architects
- Automatic site generation
- Published to internal/external site
- 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:
- Template selection based on decision type
- Draft creation by proposer
- Stakeholder consultation
- Review by architecture board
- Team consensus
- Final approval and publication
- 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:
- Community member opens issue/PR with proposal
- Discussion in GitHub
- Maintainers provide feedback
- Revision based on input
- Decision by maintainers
- Implementation
- 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:
- Phase 1 (0-6 months): Y-Statements in README
- Phase 2 (6-18 months): MADR minimal in docs/adr/
- Phase 3 (18-36 months): Full MADR + documentation site
- 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⚓︎
- Start with ADR-0001: “Record architecture decisions”
- Document next decision: Practice the process
- Backfill incrementally: Document existing major decisions as time allows
- Make it habit: Add to PR template checklist
From Y-Statements to MADR⚓︎
- Choose template: MADR minimal to start
- Convert existing: Expand Y-Statements to full ADRs
- Update process: Train team on new format
- Parallel run: Accept both for transition period
From MADR to log4brains⚓︎
- Install log4brains:
npx log4brains init - Migrate files: Copy ADRs to log4brains directory
- Update metadata: Ensure proper front matter
- Generate site:
npx log4brains build - 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⚓︎
- Choose your starting point based on recommendations above
- Create ADR-0001 to establish the practice
- Select a template and customize if needed
- Document your next decision to practice
- Review in 3 months and adjust as needed
- 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.