Skip to content

chore(license): relicense to FSL-1.1-Apache-2.0 - #62

Closed
dviejokfs wants to merge 2 commits into
mainfrom
feat/fsl-license
Closed

dviejokfs wants to merge 2 commits into
mainfrom
feat/fsl-license

Conversation

@dviejokfs

@dviejokfs dviejokfs commented Apr 25, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Relicenses Temps from dual MIT OR Apache-2.0 to Functional Source License, Version 1.1, with an Apache 2.0 Future License (FSL-1.1-Apache-2.0) — the same license Sentry uses.

  • Self-hosting remains free for any use, including commercial.
  • Only competing hosted PaaS offerings are restricted, and only for 2 years per release.
  • After 2 years, every release automatically becomes Apache 2.0 — a legally binding promise that the project can never become permanently proprietary.

Full legal text: LICENSE.md. Plain-English summary and FAQ: LICENSING.md.

Why this change

Temps Cloud is the planned revenue stream — the managed Hetzner hosting tier described in CLAUDE.md. A pure permissive license (MIT/Apache-2.0) explicitly allows the one outcome that would kill that plan before it starts: a hyperscaler or competitor taking the code, slapping their branding on it, and selling it as a managed service for less than Temps Cloud — without contributing anything back. Switching now, before the commercial offering ships and before the contributor base grows, is the cheapest moment to do it.

This is a proven, repeating pattern:

Project Cloned by Response
Elasticsearch AWS Elasticsearch Service Switched to Elastic License v2
MongoDB AWS DocumentDB Switched to SSPL
Redis AWS MemoryDB, Google Memorystore Switched to RSAL/SSPL
Terraform Multiple commercial forks Switched to BUSL-1.1
Sentry (preempted) Started with FSL

Every one of these projects had to relicense defensively after the damage was done. Sentry preempted it. We're doing the same — moving while the project is still small, friction-free, and entirely ours.

Why FSL specifically (vs BUSL, AGPL, Elastic License)

Concern FSL-1.1-Apache-2.0 BUSL-1.1 AGPL-3.0 Elastic v2
Self-host free for users ✅ ✅ ✅ (with copyleft) ✅
Blocks competing managed service ✅ ✅ ❌ ✅
No copyleft virality on user apps ✅ ✅ ❌ ✅
Becomes truly OSS over time ✅ 2yr → Apache 2.0 ✅ 4yr already OSS ❌ never
Proven by precedent Sentry, Keygen HashiCorp, MariaDB Grafana, Plausible Elastic, Redis

FSL wins on the combination of: short OSS conversion window (2 years vs BUSL's 4), no copyleft (unlike AGPL), and a permanent OSS guarantee (unlike Elastic v2).

Why this does NOT affect end users

For 95% of users, nothing changes. The license switch only blocks one specific use case: building a competing commercial PaaS. Everything else remains explicitly permitted.

Use case Before (MIT/Apache-2.0) After (FSL-1.1-Apache-2.0)
Self-host for your own apps ✅ Allowed ✅ Allowed
Self-host for your company's internal use ✅ Allowed ✅ Allowed
Deploy client apps on your Temps install ✅ Allowed ✅ Allowed
Fork and modify Temps ✅ Allowed ✅ Allowed
Contribute changes back via PRs ✅ Allowed ✅ Allowed
Sell consulting/support around Temps ✅ Allowed ✅ Allowed
Build a SaaS on top of Temps (your app) ✅ Allowed ✅ Allowed
Use education/research ✅ Allowed ✅ Allowed
Launch competing hosted PaaS ("Acme Cloud powered by Temps") ✅ Allowed ❌ Blocked for 2 years

Key safeguards for users

  1. Existing MIT/Apache-2.0 releases stay open forever. This change only affects code released going forward. Previous releases keep their existing licenses — no clawback.
  2. The 2-year Apache 2.0 clause is irrevocable. Once a release is published, it auto-converts to Apache 2.0 on its 2-year anniversary. If you ever distrust the licensor's interpretation of "competing use," you can fork from a 2-year-old release with zero restrictions.
  3. No CLA required. Contributors keep their copyright; contributions go in under the same license. Same as before.
  4. No copyleft virality. Unlike AGPL, your app code stays yours. You can deploy proprietary apps on Temps without any obligation to open-source them.
  5. The "Competing Use" definition is intentionally narrow — only commercial offerings that substitute for Temps or Temps Cloud. Internal use, client services, and SaaS-on-top are all explicitly Permitted Purposes.

What this enables

  • A viable path to sustainable funding. When the planned managed offering ships, its revenue won't be undercut by clones — which directly funds more development for all users.
  • Investor and enterprise readiness. Enterprise procurement teams actually prefer FSL/BUSL to MIT for vendor-backed projects, because it signals a sustainable business model.
  • Project longevity. The 2-year Apache 2.0 auto-conversion means even if Temps stops being maintained, every release older than 2 years is permanently open source — a stronger guarantee than proprietary or BUSL.

Files changed

  • ✅ Add LICENSE.md — full FSL-1.1-Apache-2.0 legal text
  • ✅ Add LICENSING.md — plain-English summary, FAQ, comparison table, contributor terms
  • ✅ Remove LICENSE and LICENSE-MIT (old dual-license files)
  • ✅ Update NOTICE to reference FSL + 2-year Apache 2.0 conversion
  • ✅ Update workspace Cargo.toml: license = "LicenseRef-FSL-1.1-Apache-2.0" + license-file = "LICENSE.md"
  • ✅ Update temps-captcha-wasm to inherit workspace license (was MIT OR Apache-2.0)
  • ✅ Update README.md badge and license section
  • ✅ Add CHANGELOG.md entry under [Unreleased] with commit reference
  • ✅ Allowlist HashiCorp in typos config (used in the license comparison table)

Commercial licensing contact: dviejokfs@temps.sh

Test plan

  • cargo metadata --no-deps parses cleanly
  • All workspace members inherit LicenseRef-FSL-1.1-Apache-2.0
  • No member overrides license except where intentional
  • Pre-commit hooks (typos, fmt) pass
  • Verify GitHub renders LICENSE.md correctly in the repo sidebar
  • Verify the README license badge displays correctly

Adopts the Functional Source License (same model as Sentry, Keygen) with
a 2-year Apache 2.0 future grant. Self-hosting remains free for any
internal or commercial use; only competing hosted PaaS offerings are
restricted, and only for 2 years per release.

- Add LICENSE.md (full FSL-1.1-Apache-2.0 legal text)
- Add LICENSING.md (plain-English summary, FAQ, comparison table)
- Remove LICENSE and LICENSE-MIT (dual MIT/Apache-2.0 stubs)
- Update NOTICE to reference FSL + 2-year Apache 2.0 conversion
- Update workspace Cargo.toml: license = LicenseRef-FSL-1.1-Apache-2.0
- Update temps-captcha-wasm to inherit workspace license
- Update README badge and license section
- Allowlist HashiCorp identifier in typos config
- Commercial licensing contact: dviejokfs@temps.sh
@dviejokfs dviejokfs closed this Apr 27, 2026
@dviejokfs
dviejokfs deleted the feat/fsl-license branch July 1, 2026 00:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant