Maintainer-ratified from the 2026-07-03 review (R1-R3): - ADR-0009: retire "structurally impossible for a 3-vendor stack" post-0007; restate the gate's true guarantees (credential isolation, unskippable mediation, media-plane enforcement, audit co-location). Propagated to README pillar 3, ARCHITECTURE, PORT_PLAN s10; amendment note on ADR-0002. - ADR-0010: insert step 4.5 (benchmark + simulation harness, rutster-sim seed, CI-regressed p50/p99 + kill-time) after barge-in; pull rung-2 escalation ahead of steps 5-6. Spearhead lists updated. - ADR-0004: delete the legally-broken AGPL escape hatch; GPL-3.0-or-later permanent, no CLA; tap protocol/SDKs intended permissive (future ADR). - README: add brain-vendor-direct competitor row (review D2). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018vNe64BBDkgo5oQVkBa3XF
3.3 KiB
ADR-0004 — License: GPL-3.0-or-later
- Status: Accepted
- Date: 2026-06
- Closes: the license open-decision carried in the founding docs
Context
The founding docs (and the vision-revision open-decisions list) left license open. rutster is a self-hosted engine whose competitor set (ADR-0002) includes cloud CCaaS that could wrap-and-resell it as a managed service — the classic strong-copyleft concern.
Decision
GPL-3.0-or-later.
Strong copyleft (requires source-sharing on binary conveyance), OSI-clean, modernized one notch
over Asterisk's GPLv2+. SPDX-License-Identifier: GPL-3.0-or-later.
Alternatives considered
- AGPL-3.0-or-later — considered. AGPL additionally closes the network-use / SaaS loophole: GPLv3 §13 states network use is not conveyance (so a hosted service triggers no source-sharing obligation); AGPL §13 fixes that, compelling source disclosure for network-served use. Given that cloud CCaaS is a named competitor, AGPL would harder-prevent a vendor from hosting rutster-as-managed-CCaaS without contributing back.
- GPL-3.0-or-later was chosen in favor of simplicity and lower downstream-embedding friction (operators and tooling/library authors integrating rutster avoid AGPL's network-trigger), while remaining strong copyleft against proprietary forking of the engine itself.
Trade-off accepted deliberately
A cloud competitor can host GPL rutster and owe source only on binary distribution, which for a hosted service may be nothing. The license is the floor, not the moat: the wedge — self-host
- data-ownership + one auditable boundary + operational simplicity + data-ownership as a buying criterion — is the actual reason operators self-host rather than wrap.
Amended 2026-07-03 (maintainer-ratified; origin: adversarial review D5). The paragraph this note replaces claimed the "or-later" clause permits a clean later transition to AGPL. That claim was wrong: "or-later" covers later versions of the GNU GPL (GPLv3 §14); AGPL is a different license, not a later GPL version — GPLv3 §13 permits combining with AGPL works, not relicensing GPL code as AGPL. Relicensing requires the consent of every copyright holder, so the option would die at the first external contribution accepted without a CLA.
Resolution: rutster accepts GPL-3.0-or-later permanently for the engine. No CLA — the contributor friction and community optics were judged worse than the loss of a relicensing option. Cloud-wrap remains a named, accepted risk mitigated by the wedge, exactly as the trade-off paragraph above already argued. (The tap protocol spec and client SDKs are intended to be permissively licensed for adoption — engine GPL, protocol permissive — to be ratified in the tap-protocol ADR when that interface hardens.)
Consequences
- Positive: OSI-clean strong copyleft in the Asterisk lineage; compatible with the project's dependencies (Valkey BSD-3-Clause per ADR-0005; Rust-ecosystem MIT/Apache crates).
- Negative: the network-use loophole is open by design choice — mitigated by the wedge, not the license.