Files
rutster/docs/adr/0004-license.md
Aaron D. Lee da6b7c9ff0
All checks were successful
CI / fmt (push) Successful in 1m5s
CI / clippy (push) Successful in 1m53s
CI / test (1.85) (push) Successful in 5m54s
CI / test (stable) (push) Successful in 6m36s
CI / deny (push) Successful in 2m12s
adr: +0009 spend-gate rescope +0010 spearhead 4.5 benchmark/sim; amend 0004
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
2026-07-04 00:00:57 -04:00

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-laterconsidered. 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.