ADR 0033: License chosen (Apache 2.0) — first alpha release¶
Status¶
Accepted. Supersedes ADR 0003.
Context¶
ADR 0003 deliberately left the license undecided (spec section 9's permissive-vs-copyleft call) and, as an explicit consequence, barred pushing the repository to a public remote or accepting external contributions until it was resolved. That gate is now being lifted: the user asked to publish the project's first alpha release.
The requirement given: stay open source, but anyone who modifies or redistributes the code must credit the author.
Decision¶
Apache License 2.0. Permissive (no requirement that derivative works or plugins be released under the same license — unlike GPL/LGPL, the other side of ADR 0003's original fork), and the closest standard match to the stated requirement: redistribution must retain copyright/ attribution notices (§4(c)), and — the part MIT/BSD don't have — modified files must carry a prominent notice stating they were changed (§4(b)). It also adds an explicit patent grant (§3) neither MIT nor BSD provides, relevant given this project has a plugin ABI (ADR 0009) third parties can build against.
LICENSE (full Apache 2.0 text) and NOTICE (the copyright line:
"Copyright 2026 Saeed") added at the repository root — the standard
two-file layout the license's own Appendix recommends. docs/adr/0003
is left in place, not deleted, with its Status line updated to point
here — ADRs are a decision log, not something rewritten after the
fact.
What changed alongside it¶
README.md: dropped the "not published publicly, license still open" framing; License section now points atLICENSE; Contributing section no longer says external contributions aren't accepted; Status section rewritten to reflect Phases 8 through 17.5 actually being done (it had been stale since roughly Phase 7).CONTRIBUTING.md: dropped the "not accepting contributions yet" status line.CMakeLists.txt:project(... VERSION 0.0.0)→0.1.0— CMake'sVERSIONfield is strictly numeric, so the "-alpha" release-stage label is appended separately, at the GUI target, asASE_VERSION_STRING(gui/CMakeLists.txt,target_compile_definitions) — the one place that string is now defined, read byAboutPanelinstead of a second hardcoded literal.AboutPanel: version string, license line, and a third link (this project's Discord, alongside the existing GitHub/website links) — see docs/adr/0022 for why this panel exists and its general shape.- A local git tag,
v0.1.0-alpha, marks this point.
Consequences¶
The repository is now clear to push to a public remote and to accept external contributions whenever the user chooses to — that specific step (creating/pushing to an actual GitHub remote) was deliberately scoped out of this change at the user's own direction; this ADR only covers the local tag and the in-repo license/version/about-panel changes. Full test suite unaffected (docs/build-metadata only, no core or GUI logic changed besides the About panel's template string and version macro) — 9/9 still passing.