Skip to content

Commit 8417c5d

Browse files
authored
docs: add engineering section (#11072)
2 parents 57187a6 + 1563bfd commit 8417c5d

31 files changed

Lines changed: 1166 additions & 134 deletions

‎.github/pull_request_template.md‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22

33
### Prior to submitting a pull request, please familiarize yourself with...
44

5+
- Our [Engineering docs](https://github.com/thunderbird/thunderbird-android/tree/main/docs/engineering)
6+
- Including the [Architecture Decision Records](https://github.com/thunderbird/thunderbird-android/tree/main/docs/engineering/adr)
57
- Our [Architecture docs](https://github.com/thunderbird/thunderbird-android/tree/main/docs/architecture)
6-
- Including the [Architecture Design Records](https://github.com/thunderbird/thunderbird-android/tree/main/docs/architecture/adr)
78
- Read [Mozilla’s Community Participation Guidelines](https://www.mozilla.org/en-US/about/governance/policies/participation/)
89
- Check out our [contribution code quality guides](https://github.com/thunderbird/thunderbird-android/tree/main/docs/contributing), especially our [git commit guide](https://github.com/thunderbird/thunderbird-android/blob/main/docs/contributing/git-commit-guide.md), which can also help you write your pull request title
910

@@ -20,6 +21,7 @@ As always, thank you for the contribution!
2021
## Contribution Summary
2122

2223
Linked Issue/Ticket:
24+
RFC / Technical Design (if applicable):
2325

2426
#### Description
2527

@@ -45,4 +47,5 @@ Select **one** of the following (mandatory)
4547
- [ ] This contribution adheres to the existing codestyle (run `gradlew spotlessCheck` to check and `gradlew spotlessApply` to format your source code; will be checked by CI).
4648
- [ ] This contribution does not break existing unit tests (run `gradlew testDebugUnitTest`; will be checked by CI).
4749
- [ ] This contribution includes tests for any new functionality, and maintains tests for any updated functionality.
50+
- [ ] This contribution adheres to our [Engineering process](https://github.com/thunderbird/thunderbird-android/tree/main/docs/engineering) (RFC/Technical Design/ADR)
4851
- [ ] This PR has a descriptive title and body that accurately outlines all changes made, and contains a reference to any issues that it fixes (e.g. _Closes #XXX_ or _Fixes #XXX_).

‎AGENTS.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ The repository implements a white-label architecture producing:
2323
- `app-k9mail`: K-9 Mail
2424

2525
Project documentation resides in the `docs/` directory.
26-
Architectural Decision Records (ADRs) are located in `docs/architecture/adr/`.
26+
Architectural Decision Records (ADRs) are located in `docs/engineering/adr/`.
2727

2828
Agents MUST consult relevant documentation before making architectural or structural changes.
2929

@@ -43,7 +43,7 @@ Before making changes, agents MUST:
4343

4444
- Read `README.md`, `docs/CONTRIBUTING.md`, and relevant documentation in `docs/`
4545
- Review existing implementations in affected modules
46-
- Check for related ADRs in `docs/architecture/adr/`
46+
- Check for related ADRs in `docs/engineering/adr/`
4747
- Understand the module's role in the white-label architecture
4848

4949
### 3. Make Changes
@@ -78,7 +78,7 @@ Agents MUST:
7878
- Keep implementation details internal using the `internal` modifier
7979
- Bind implementations in `app-common` or app modules only
8080

81-
New code MUST NOT violate the API/internal boundary, see [ADR-0009](docs/architecture/adr/0009-api-internal-split.md).
81+
New code MUST NOT violate the API/internal boundary, see [ADR-0009](docs/engineering/adr/0009-api-internal-split.md).
8282

8383
If existing code violates this boundary, agents MUST NOT replicate the pattern and SHOULD move the code toward the
8484
intended architecture when modifying it.

‎README.md‎

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,15 +64,17 @@ We welcome contributions from everyone.
6464
- Thunderbird is supported solely by financial contributions from users like you. [Make a financial contribution today](https://www.thunderbird.net/donate/mobile/?form=tfa)!
6565
- Make sure to check out the [Mozilla Community Participation Guidelines](https://www.mozilla.org/about/governance/policies/participation/).
6666

67-
### Architecture Decision Records (ADR)
67+
### Engineering Process
6868

69-
We use [Architecture Decision Records](https://adr.github.io/) to document the architectural decisions made in the
70-
development of Thunderbird for Android. You can find them in the [`docs/architecture/adr`](docs/architecture/adr) directory.
69+
We use a structured engineering process to propose, decide, and deliver technical changes. This includes:
70+
- [Requests for Comments (RFCs)](docs/engineering/rfcs/README.md) for technical direction.
71+
- [Technical Designs](docs/engineering/technical-designs/README.md) for implementation details.
72+
- [Architecture Decision Records (ADRs)](docs/engineering/adr/README.md) for durable architectural decisions.
7173

72-
For more information about our ADRs, please see the [ADRs README](docs/architecture/adr/README.md).
74+
You can find more information in the [`docs/engineering`](docs/engineering) directory.
7375

74-
We encourage team members and contributors to read through our ADRs to understand the architectural decisions that
75-
have shaped this project so far. Feel free to propose new ADRs or suggest modifications to existing ones as needed.
76+
We encourage team members and contributors to read through our engineering documentation to understand the
77+
processes and decisions that have shaped this project so far.
7678

7779
## K-9 Mail
7880

‎docs/CONTRIBUTING.md‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,18 @@ We don’t track new ideas or feature requests in GitHub Issues.
4141
- Start a discussion in [Mozilla Connect – Ideas](https://connect.mozilla.org/t5/ideas/idb-p/ideas/label-name/thunderbird%20android)
4242
- Once a feature is accepted and work is planned, maintainers will create the corresponding GitHub issue(s).
4343

44+
**GitHub Work:**
45+
46+
GitHub Bug Issues track confirmed defects. GitHub Feature Issues and GitHub Task Issues track work that maintainers have
47+
accepted and planned. New feature proposals still start in Mozilla Connect; maintainers create GitHub issues after a
48+
proposal is accepted and scheduled.
49+
50+
- External contributors should start from an existing GitHub Bug Issue, GitHub Feature Issue, or GitHub Task Issue.
51+
- Bug issues labeled `unconfirmed` are not ready for contributions.
52+
- Issues labeled `tb-team` are reserved for maintainers.
53+
- If you are unsure whether an existing issue is ready for your contribution, follow
54+
[Working From GitHub Issues](contributing/contribution-workflow.md#working-from-github-issues).
55+
4456
## 🌐 Translations
4557

4658
If you'd like to help to translate Thunderbird for Android, please visit:
@@ -60,6 +72,7 @@ development, testing, and review.
6072

6173
### 🏗️ Development Practices
6274

75+
* **[Engineering](engineering/README.md)** – Process and artifacts for proposing, deciding, and delivering technical changes (RFCs, Technical Designs, ADRs).
6376
* **[Architecture](architecture/README.md)** – System design: module types, UI/Domain/Data layers, offline-first.
6477
* **[Development Guidelines](contributing/development-guide.md)** – Project-specific conventions and quick “do’s & don’ts.”
6578
* **[Code Quality Guide](contributing/code-quality-guide.md)** – Style rules, static analysis tools, and security practices.

‎docs/SUMMARY.md‎

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,18 +29,38 @@ generator, in this case, **mdbook**. It defines the structure and navigation of
2929
- [Settings](architecture/settings.md)
3030
- [Feature Flags](architecture/feature-flags.md)
3131
- [Legacy Module Integration](architecture/legacy-module-integration.md)
32-
- [Architecture Decision Records](architecture/adr/README.md)
32+
- [Engineering](engineering/README.md)
33+
- [Delivery Planning](engineering/delivery-planning.md)
34+
- [Milestone Issues](engineering/milestone-issues/README.md)
35+
- [Template](engineering/milestone-issues/0000-milestone-issue-template.md)
36+
- [User Journeys](engineering/user-journeys/README.md)
37+
- [Template](engineering/user-journeys/0000-user-journey-template.md)
38+
- [RFCs](engineering/rfcs/README.md)
39+
- [Template](engineering/rfcs/0000-rfc-template.md)
40+
- [Proposed]()
41+
- [Accepted]()
42+
- [Rejected]()
43+
- [Obsolete]()
44+
- [Architecture Decision Records](engineering/adr/README.md)
45+
- [Template](engineering/adr/0000-adr-template.md)
46+
- [Proposed]()
3347
- [Accepted]()
34-
- [0001 - Switch From Java to Kotlin](architecture/adr/0001-switch-from-java-to-kotlin.md)
35-
- [0002 - UI - Wrap Material Components in Atomic Design System](architecture/adr/0002-ui-wrap-material-components-in-atomic-design-system.md)
36-
- [0003 - Test - Switch Test Assertions From Truth to Assertk](architecture/adr/0003-switch-test-assertions-from-truth-to-assertk.md)
37-
- [0004 - Naming Conventions for Interfaces and Their Implementations](architecture/adr/0004-naming-conventions-for-interfaces-and-their-implementations.md)
38-
- [0005 - Central Project Configuration](architecture/adr/0005-central-project-configuration.md)
39-
- [0006 - White Label Architecture](architecture/adr/0006-white-label-architecture.md)
40-
- [0007 - Project Structure](architecture/adr/0007-project-structure.md)
41-
- [0008 - Change Shared Module package to `net.thunderbird`](architecture/adr/0008-change-shared-modules-package-name.md)
48+
- [0001 - Switch From Java to Kotlin](engineering/adr/0001-switch-from-java-to-kotlin.md)
49+
- [0002 - UI - Wrap Material Components in Atomic Design System](engineering/adr/0002-ui-wrap-material-components-in-atomic-design-system.md)
50+
- [0003 - Test - Switch Test Assertions From Truth to Assertk](engineering/adr/0003-switch-test-assertions-from-truth-to-assertk.md)
51+
- [0004 - Naming Conventions for Interfaces and Their Implementations](engineering/adr/0004-naming-conventions-for-interfaces-and-their-implementations.md)
52+
- [0005 - Central Project Configuration](engineering/adr/0005-central-project-configuration.md)
53+
- [0006 - White Label Architecture](engineering/adr/0006-white-label-architecture.md)
54+
- [0007 - Project Structure](engineering/adr/0007-project-structure.md)
55+
- [0008 - Change Shared Module package to `net.thunderbird`](engineering/adr/0008-change-shared-modules-package-name.md)
56+
- [Rejected]()
57+
- [Obsolete]()
58+
- [Technical Designs](engineering/technical-designs/README.md)
59+
- [Template](engineering/technical-designs/0000-technical-design-template.md)
4260
- [Proposed]()
61+
- [Accepted]()
4362
- [Rejected]()
63+
- [Obsolete]()
4464
- [User Guide]()
4565
- [Setup]()
4666
- [Installing ADB](user-guide/setup/installing-adb.md)

‎docs/architecture/README.md‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,20 @@ The application follows a modular architecture with clear separation between dif
1616

1717
## 📝 Architecture Decision Records
1818

19-
The [Architecture Decision Records](adr/README.md) document the architectural decisions made during the development of the
19+
The [Architecture Decision Records](../engineering/adr/README.md) document the architectural decisions made during the development of the
2020
project, providing context and rationale for key technical choices. Reading through these decisions will improve your
2121
contributions and ensure long-term maintainability of the project.
2222

23+
## 🏗️ Engineering Process
24+
25+
We use a structured engineering process to propose, decide, and deliver technical changes. This includes:
26+
27+
- **[RFCs](../engineering/rfcs/README.md)** for proposing technical direction and reaching consensus.
28+
- **[Technical Designs](../engineering/technical-designs/README.md)** for detailing implementation plans.
29+
- **[ADRs](../engineering/adr/README.md)** for recording durable architectural decisions.
30+
31+
For more details on how these artifacts work together, see the [Engineering](../engineering/README.md) documentation.
32+
2333
## 📦 Module Structure
2434

2535
The application is organized into several module types:

‎docs/architecture/adr/0000-adr-template.md‎

Lines changed: 0 additions & 36 deletions
This file was deleted.

‎docs/contributing/code-review-guide.md‎

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Paste this into your PR to self-check:
1616
- [ ] Security/privacy: inputs validated; no PII in logs; TLS; secure storage; permission changes documented
1717
- [ ] i18n: No new localizable strings unless justified; translations policy followed
1818
- [ ] Release train: feature flags set; uplift label + risk/impact (if applicable)
19-
- [ ] Docs/CHANGELOG updated; issues linked (Fixes #123); PR title/commits clear
19+
- [ ] Docs/CHANGELOG updated; issues linked (Fixes #123); Engineering process (RFC/TechDesign) followed; PR title/commits clear
2020
```
2121

2222
## 🧑‍💻 For Code Authors (self‑review checklist)
@@ -35,7 +35,7 @@ Paste this into your PR to self-check:
3535
3. **Architecture & module boundaries**
3636
- Follow modular rules: API vs internal separation; use `internal` visibility for all code in `:internal` modules (except for DI).
3737
- Only depend on `:feature:foo:api` externally; `:feature:foo:internal` (and legacy `:feature:foo:impl`) are internal.
38-
See [ADR-0009](../architecture/adr/0009-api-internal-split.md) for full module structure and dependency rules.
38+
See [ADR-0009](../engineering/adr/0009-api-internal-split.md) for full module structure and dependency rules.
3939
- Respect MVI/Compose patterns in the UI layer; keep business logic out of UI implementation.
4040
- Prefer constructor injection with Koin; keep constructors simple and dependencies explicit.
4141
4. **Code quality & style**
@@ -63,6 +63,7 @@ Paste this into your PR to self-check:
6363
10. **Documentation & metadata**
6464
- Update relevant docs, CHANGELOG entries and add context as needed.
6565
- Link relevant issues using GitHub keywords so they auto-close on merge (`Fixes #123`, `Resolves #456`).
66+
- Adhere to the [Engineering process](../engineering/README.md) (RFC/Technical Design/ADR) if applicable.
6667
- For commit format, see the [Git Commit Guide](git-commit-guide.md)
6768
11. **CI status**
6869
- Ensure CI is green
@@ -72,8 +73,9 @@ Paste this into your PR to self-check:
7273

7374
1. **Correctness & requirements**
7475
- Does the change solve the stated problem? Any edge cases missed? Are invariants upheld?
76+
- If non-trivial, does it align with the agreed [RFC or Technical Design](../engineering/README.md)?
7577
2. **Architecture & boundaries**
76-
- Adheres to module API/internal separation per [ADR-0009](../architecture/adr/0009-api-internal-split.md) and project architecture (UI: Compose/MVI, Domain, Data).
78+
- Adheres to module API/internal separation per [ADR-0009](../engineering/adr/0009-api-internal-split.md) and project architecture (UI: Compose/MVI, Domain, Data).
7779
- No cross‑module leaks (check for proper `internal` visibility in `:internal` modules); dependencies flow in the right direction.
7880
- Note: The codebase still contains `:impl` modules during ADR-0009 migration; treat them with the same separation rules as `:internal`.
7981
3. **Readability & maintainability**

0 commit comments

Comments
 (0)