Commercial software that outlives its maker.
A source-available commercial license that automatically becomes open source
if the developer abandons it.
When you buy software from an indie developer, you take a quiet risk: if they disappear, your software stops getting updates and you never see the source. The Heirloom License removes that risk with a binding, self-executing promise — if the developer goes dormant, the code becomes open source for everyone, forever.
It's modeled on the Business Source License and Functional Source License, with one key change: those convert on a fixed calendar date; the Heirloom License converts on an abandonment condition, detected by a dead-man's switch.
| While active | Normal paid commercial product. Use it, don't resell or clone it. |
| Trigger | No maintenance signal for the dormancy window (default 12 mo) and no support response in 90 days. |
| On Sunset | Full source published publicly under the Change License (default MPL-2.0). Irrevocable. |
Read the plain-English summary or the full license.
- Pick your parameters. Change License (default
MPL-2.0), dormancy window (default12mo), and your repository URL. - Add the license. Copy
LICENSE.mdinto your project and fill in the Parameters table. - Install the switch. Drop in the reference dead-man's-switch workflow and keep it alive with your normal commits or a manual heartbeat.
- Show the badge. Add the badge to your README and About box so buyers can see the promise.
Full walkthrough (with safe testing and hardening): SETUP.md.
Then submit your app to the adopters directory — the bot verifies your badge and opens the PR.
Your switch can publish a public heartbeat so the directory shows your app as 🟢 armed — live proof the promise is active, with a runway countdown — and a switch that goes quiet shows stale rather than silently lapsing. Two ways, pick one:
- Public maintenance log (simplest — no keys): publish a public JSONL log of your
commits/releases; the directory reads it. Reference:
heartbeat-log.yml+heartbeat-dispatch.yml. - Signed heartbeat (hardened): the dead-man's switch signs and publishes a
heartbeat.jsonthe directory verifies.
Full protocol: HEARTBEAT.md.
Like SPDX and FSL, the license encodes its parameters in the name:
HL-1.0-<ChangeLicense>-<DormancyWindow>
Examples:
HL-1.0-MPL2.0-12mo— recommended defaultHL-1.0-GPL3.0-24mo— stronger copyleft, longer windowHL-1.0-AGPL3.0-6mo— network copyleft, short window
heirloom-license/
├── LICENSE.md The license text v1.0 (parameterized)
├── NOTICE Short copyright + trademark notice
├── TRADEMARK.md Marks policy (name + badge)
├── SUMMARY.md Plain-English explanation
├── README.md This file
├── SETUP.md Dead-man's switch + status-reporting setup guide
├── HEARTBEAT.md Status-reporting protocol (heartbeat → directory)
├── adopters.yml Source of truth for the adopters directory
├── ADOPTERS.md Generated adopters table (do not edit by hand)
├── DEPLOY.md How the site + directory automation are deployed
├── LEGAL-REVIEW.md What still needs a lawyer, and open questions
├── ROADMAP.md Website, funding, launch, governance plan
├── badges/ SVG badge + usage rules
├── templates/
│ └── HL-1.0-MPL2.0-12mo.md Pre-filled example for the default variant
├── scripts/ Directory pipeline: build, badge intake, heartbeat poll
├── reference/.github/workflows/
│ ├── dead-mans-switch.yml Auto-publish switch + signed heartbeat
│ ├── heartbeat-log.yml Public maintenance-log publisher (simplest)
│ └── heartbeat-dispatch.yml Private→public commit signal
├── .github/ Adopter issue form + directory automation workflows
└── site/
├── index.html Landing page for heirloomlicense.org
└── adopters.html Live adopters directory (reads adopters.json)
The Heirloom License text itself is dedicated to the public domain under
CC0 1.0. Copy it, adopt it,
fork it. The "Heirloom License" name and badge are project marks — use them
only for software released under an unmodified version of the license, so the
badge keeps meaning one specific thing. Full policy: TRADEMARK.md and NOTICE.
v1.0-draft — community draft, pending legal review. See LEGAL-REVIEW.md.
Feedback and red-lines welcome via issues.