This directory contains Architecture Decision Records (ADRs) for the distributed messaging system project.
Architecture Decision Records document the key architectural decisions made during the development of this system. Each ADR captures:
- The context and problem being addressed
- The decision made
- The consequences (both positive and negative)
| ADR | Title | Status |
|---|---|---|
| 0001 | Use Architecture Decision Records | Accepted |
| 0002 | Choose Java 25 as Implementation Language | Accepted |
| 0003 | Use Append-Only Log Storage | Accepted |
| 0004 | Use Binary Wire Protocol | Accepted |
| 0005 | Use Virtual Threads for Concurrency | Accepted |
| 0006 | Phased Implementation Approach | Accepted |
| 0007 | Choose Gradle as Build Tool | Accepted |
| 0008 | Phase 1 Project Structure | Accepted |
| 0009 | Use Binary Wire Protocol (Phase 2) | Accepted |
| 0010 | Phase 2 Project Structure | Accepted |
- Proposed: Decision under consideration
- Accepted: Decision approved and being implemented
- Deprecated: Decision no longer applies but kept for historical record
- Superseded: Replaced by a newer ADR (reference included)
- Copy the template below
- Number it sequentially (e.g.,
0007-title.md) - Fill in all sections
- Update this README index
# ADR-NNNN: [Short Title]
## Status
[Proposed | Accepted | Deprecated | Superseded by ADR-XXXX]
## Context
What is the issue that we're seeing that is motivating this decision or change?
## Decision
What is the change that we're proposing and/or doing?
## Consequences
What becomes easier or more difficult to do because of this change?
### Positive
- Benefit 1
- Benefit 2
### Negative
- Cost 1
- Cost 2
## References
- [Link to relevant resources]For newcomers to the project, we recommend reading ADRs in this order:
- ADR-0007: Build tool selection
- ADR-0006: Implementation roadmap
- ADR-0008: Phase 1 project structure
- ADR-0002: Language choice rationale
- ADR-0006: Implementation roadmap
- ADR-0003, 0004, 0005: Core technical decisions