Skip to content

Latest commit

 

History

History
123 lines (95 loc) · 5.65 KB

File metadata and controls

123 lines (95 loc) · 5.65 KB

Heirloom License

The Heirloom License™

Commercial software that outlives its maker.
A source-available commercial license that automatically becomes open source if the developer abandons it.


Why this exists

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.

The 60-second version

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.

Adopt it in four steps

  1. Pick your parameters. Change License (default MPL-2.0), dormancy window (default 12mo), and your repository URL.
  2. Add the license. Copy LICENSE.md into your project and fill in the Parameters table.
  3. Install the switch. Drop in the reference dead-man's-switch workflow and keep it alive with your normal commits or a manual heartbeat.
  4. 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.

Show you're alive (recommended)

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.json the directory verifies.

Full protocol: HEARTBEAT.md.

The identifier convention

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 default
  • HL-1.0-GPL3.0-24mo — stronger copyleft, longer window
  • HL-1.0-AGPL3.0-6mo — network copyleft, short window

Repository structure

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)

License of the license

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.

Status

v1.0-draft — community draft, pending legal review. See LEGAL-REVIEW.md. Feedback and red-lines welcome via issues.