A licensing standard for vertical-industry software commons — fair source, not OSI.
OpenLBM is not a single license. It is one standard, one shared Definitions Core, and six named Profiles, applied per component (per directory or per repository) rather than per project. A component's location tells you which license governs it; an SPDX identifier on every file makes that machine-readable.
This repository is the canonical, authoritative home of the Standard: the six license texts, the normative Definitions & Eligibility core, the Gable Charter, the design rationale, and copy-paste templates for adopting it in your own repo.
Version 1.0 — effective. See VERSION and
CHANGELOG.md.
The OpenLBM Commons License conditions one of its obligations on who you are (organization size), and excludes one field of use (building a competing vertical product). Both are deliberate. Both put the Standard outside the OSI Open Source Definition.
We say so in the license text itself (Commons §9, "NO OSI CLAIM") rather than implying otherwise. What you get in exchange:
- An independent dealer runs, modifies, and privately deploys the commons free, forever, with no obligation to publish anything.
- A consolidator cannot take-and-privatize at scale — it contributes back or licenses commercially.
- A legacy ERP vendor cannot strip-mine the commons into a competing product.
- Everything gated trends open on a timer, and opens early if the project is abandoned (the continuity clause). It cannot be rug-pulled.
If you need an OSI-approved license, OpenLBM is not it, and we would rather you learn that from this paragraph than from your counsel three months in.
Each Profile is a named composition of grant and condition modules over the
shared Definitions Core. Full texts are in
LICENSES/.
| Profile | SPDX identifier | Covers | Distinctive term |
|---|---|---|---|
| OpenLBM Commons 1.0 | LicenseRef-OpenLBM-Commons-1.0 |
Core suite, add-ons, open interfaces, pure-commons satellites | Size-conditioned reciprocity — a Large Operator owes Corresponding Source to the Steward even for purely internal production use |
| OpenLBM Surface 1.0 | LicenseRef-OpenLBM-Surface-1.0 |
Surfaces and native client apps (ERP desktop, POS, driver, yard) | Reciprocity on distribution only — customize your own UI privately |
| OpenLBM Connector 1.0 | LicenseRef-OpenLBM-Connector-1.0 |
Module SDK, generated API clients — the plug-in seam | Maximally permissive, no copyleft. The neutral boundary |
| OpenLBM Community-Source 1.0 | LicenseRef-OpenLBM-Community-Source-1.0 |
Community satellites (e.g. AI_LM) | Free for Community Members immediately; fee for Large Operators; converts to AGPL-3.0-only after 5 years |
| OpenLBM Docs 1.0 | LicenseRef-OpenLBM-Docs-1.0 |
Documentation, specs, guides, this Standard's prose | Attribution + share-alike |
| OpenLBM Trademark 1.0 | LicenseRef-OpenLBM-Trademark |
The Gable / GableLBM / AI_LM / OpenLBM marks | Not a code license. A brand-use policy |
Every Profile carries a normative Deed — a plain-language summary at the top that is part of the license, so a reviewer can clear it in a minute and then read the binding detail below it.
The Connector Profile is what makes the rest safe to combine. Because the SDK seam is Apache-style permissive with no copyleft, a proprietary product, a community-source satellite, and the copyleft commons can all interoperate across it without any license crossing the boundary. If you are integrating with an OpenLBM commons, you integrate over the Connector and your own licensing is your own business.
The canonical definitions live in definitions.md. This is
the summary; where this table and definitions.md disagree, definitions.md
governs.
Eligibility is decided by three independent gates, not one. Collapsing them into a single "member vs. everyone else" test is the mistake this design exists to correct.
| Gate | Question | Keyed on | Consequence |
|---|---|---|---|
| Size | Small independent, or a consolidator? | Locations + affiliated-group revenue | An Independent Operator (< 50 Locations, not $1B+-controlled) uses the commons free and keeps private modifications private. A Large Operator owes reciprocity to the Steward and pays for community-source satellites. |
| Field of use | An industry business, or a competing software vendor? | What you do with it | Competing Use — building or enhancing a rival vertical ERP/POS/ops platform — is outside the grant for everyone, regardless of size, and needs a separate written license the Steward may decline. |
| Participation | An active member of the Gable community? | Opt-in engagement | Community Member determines advisory-panel seats, micro-JV eligibility, and contributor incentives. It is a governance term, not the grant. |
The consequence people miss: a small dealer who has never spoken to the community is an Independent Operator and gets the software free. Free use does not require participation. Those are different questions with different answers.
Adopting OpenLBM is four artifacts. Two of them are in this repo as templates you can copy directly.
1. Vendor the license texts. Copy the Profiles you actually use from
LICENSES/ into a LICENSES/ directory at your repo root, keeping
the filenames exactly as they are — the filename must match the SPDX identifier
for REUSE tooling to resolve it.
2. Write a LICENSE-MAP.md. The human-readable index of which path prefix is
governed by which Profile. Start from
LICENSE-MAP-TEMPLATE.md.
3. Write a REUSE.toml. The same mapping in machine-readable REUSE 3.x form.
Start from REUSE.toml.example. Order matters — when a
path matches more than one [[annotations]] block, the last match wins, so
narrower carve-outs must come after the broad defaults.
4. Put an SPDX header on every file.
// SPDX-License-Identifier: LicenseRef-OpenLBM-Commons-1.0
// SPDX-FileCopyrightText: 2026 Your Organization and OpenLBM contributorsThen verify with the REUSE tool:
pip install reuse
reuse lintA green reuse lint means every file in your tree resolves to a named license.
Run it in CI.
The gable repository is a full worked example of the layout above — a single
repo carrying four different Profiles across backend/internal/ (Commons),
backend/pkg/apps/ (Connector), app/ (Surface), and docs/ (Docs), with a
carve-out demonstrating last-match-wins precedence:
| Path | What it is |
|---|---|
LICENSES/ |
The six authoritative license texts. These are the operative instruments. |
definitions.md |
The normative Definitions & Eligibility core that every Profile incorporates by reference. |
CHARTER.md |
The Gable Charter — the governance instrument, including §8 FutureBuild Reserved Rights. |
LICENSE-MAP-TEMPLATE.md |
Copy-paste starting point for an adopter's license map. |
REUSE.toml.example |
Copy-paste starting point for an adopter's machine-readable mapping. |
design/ |
Why the Standard is shaped this way — the greenfield design rationale, the master overview, the entity/economics model, and the component-to-license outline. |
VERSION · CHANGELOG.md |
Standard version and its revision history. |
CONTRIBUTING.md |
How to propose a change to the Standard. |
Every Profile opens by incorporating the OpenLBM Definitions Core v1.0 by
reference. That core is definitions.md in this
repository. It is normative: the license texts do not restate the definitions,
they point at this file. If you are evaluating an OpenLBM-licensed component,
read definitions.md first — every operative term in every Profile resolves
there.
The Standard's framework IP is owned by FutureBuild, Inc. The LBM commons it governs is held by the Gable Steward, a purpose-locked vehicle that cannot be sold, captured, or extracted, with a Community Advisory Panel holding a hard veto over a narrow, load-bearing set of decisions — including the license terms themselves and the size thresholds.
Two locks make that symmetric and safe for both sides to invest behind:
- §2 steward-ownership lock — FutureBuild can never capture or sell the commons.
- §8 FutureBuild Reserved Rights — the community can never extract FutureBuild's contribution or lock it out. Non-amendable, expressly outside the Panel's authority.
Read CHARTER.md in full before forming a view on whether the
"commons" here is real. It is designed to be judged on that question.
The Standard is versioned. VERSION names the current release; CHANGELOG.md
records what changed and when. We may publish revisions — clarifications,
corrections, and new Profiles — as new versions of the Standard.
A published version is stable for the material licensed under it. Material
licensed under LicenseRef-OpenLBM-Commons-1.0 stays governed by the 1.0 text; a
later revision does not retroactively change the terms you accepted. Adopting a
new version is an explicit act — you change the SPDX identifiers in your tree.
Changes to the OpenLBM license terms as applied to the Gable commons are subject
to the Community Advisory Panel's veto (CHARTER.md §4.1).
Proposals to change the Standard are welcome and are handled deliberately —
license text is not a place for drive-by edits. See
CONTRIBUTING.md for how to open a proposal, what a good one
contains, and which changes require Panel ratification.
If you use Claude Code or another agent to work in this repository, read
CONTRIBUTING-WITH-CLAUDE.md as well.
Please also read our Code of Conduct. To report a security or integrity problem with the Standard or this repository, follow SECURITY.md — do not open a public issue.
The prose in this repository — this README, the definitions, the charter, the
design notes, the templates — is licensed under OpenLBM Docs 1.0
(LicenseRef-OpenLBM-Docs-1.0). See LICENSE and
REUSE.toml.
The license texts in LICENSES/ are the instruments
themselves, not content licensed under the Docs Profile. Reproduce them
verbatim and unmodified. You may reference and apply them; you may not publish a
modified text under the OpenLBM name (see
LICENSES/LicenseRef-OpenLBM-Trademark.txt).
Not legal advice. This repository publishes license instruments; it does not advise you on them. Have your own counsel review any license before you rely on it.