Repository navigation
Decision Logs
QQQ 4.0 release. Final
4.0.0is available. See QQQ 4.0 for release scope and migration guidance.
QQQ uses Architecture Decision Records (ADRs) to document important technical decisions. This keeps our small team aligned and provides a searchable history of why we made certain choices.
Architecture Decision Records are short documents that capture:
- What we decided
- Why we made that choice
- What the consequences are
- When we made the decision
Purpose: Help us remember why we chose certain approaches and avoid repeating past mistakes.
- Breaking changes that affect users
- New architectural patterns we're introducing
- Technology choices (new frameworks, libraries)
- Performance optimizations that change behavior
- API design decisions that affect external users
- Database schema changes that impact data structure
- Bug fixes and small improvements
- Code refactoring that doesn't change behavior
- Documentation updates
- Test improvements
- Minor dependency updates
- Identify need - Something important needs deciding
- Create ADR - Use the template below
- Discuss - Team reviews and gives feedback
- Update - Incorporate feedback and finalize
- Implement - Execute the decision
- Review - Update status as we learn more
- Proposer: Creates the ADR and drives discussion
- Team: Reviews, asks questions, suggests alternatives
- Decision: Record the decision and its approving maintainers in the relevant issue or ADR
- Documentation: Update status and add lessons learned
| ADR | Title | Status | Date |
|---|---|---|---|
| ADR-001 | Pluggable Themes for Material Dashboard | Accepted | 2024-12-28 |
ADRs are wiki pages named: ADR-XXX-Short-Title.md
Examples:
ADR-001-Pluggable-Themes.mdADR-002-Maven-Module-Structure.mdADR-003-Javalin-HTTP-Server.md
# ADR-XXX: [Short, Clear Title]
**Status**: Proposed | Accepted | Superseded | Deprecated
**Date**: YYYY-MM-DD
**Deciders**: [Names of team members involved]
**Tags**: [architecture, performance, breaking-change, etc.]
## Context
[What problem are we solving? What constraints exist? What forces are at play?]
## Decision
[What did we decide? Be specific and clear.]
## Rationale
[Why did we choose this option? What alternatives did we consider?]
## Consequences
### Positive
- [What good things will happen?]
### Negative
- [What problems might this cause?]
### Neutral
- [What won't change?]
## Implementation
[How will we implement this? What steps are needed?]
## Status
[Current status and any updates since the decision was made.]Status: Accepted
Date: 2024-01-15
Deciders: QQQ Team
Tags: architecture, build-system
Context: QQQ needs a clear module structure that supports independent development while maintaining consistency.
Decision: Use Maven parent-child structure with revision property for version management.
Rationale: Maven's module system provides dependency management, while revision property enables automated versioning in CI/CD.
Consequences:
- Positive: Consistent versions across modules, automated CI/CD integration
- Negative: More complex build setup, requires Maven 3.8+
- Neutral: Standard Maven practices
All ADRs live in the wiki as pages named ADR-XXX-Short-Title. The ADR Index above tracks all decisions.
- Proposed: Under discussion
- Accepted: Decision made, ready to implement
- Superseded: Replaced by newer decision
- Deprecated: No longer relevant
- Be concise - One page maximum
- Focus on why - Not just what we decided
- Include alternatives - Show what we considered
- Update status - Keep current as we learn
- Review regularly - Check if decisions still make sense
- Update status - Mark superseded or deprecated
- Add lessons learned - What worked, what didn't
- Archive old ones - Move to separate folder
- Create when needed - Don't force ADRs for everything
- Discuss as team - Get input from everyone
- Reference in code - Link ADRs to implementation
- Learn from outcomes - Update based on results
- Big changes: Create ADR first
- Implementation: Reference ADR in PRs
- Review: Check if ADR is still valid
- Check ADRs: Are we following documented decisions?
- Update if needed: Has the decision changed?
- Reference: Link PRs to relevant ADRs
- Review ADRs: What decisions affect this release?
- Breaking changes: Are they documented in ADRs?
- User impact: What decisions affect users?
- Team Roles - Team structure
- Contribution Guidelines - PR process
- High-Level Architecture - Architecture
QQQ — Java metadata and application behavior.
4.0 release status · GitHub · Documentation · License materials