A practical (developer-focused, rather than legal-focused) history and description of the Business Source License (BSL).
Introduced by MariaDB in 2016, the BSL:
- The source code is publicly available.
- Non-production use is always free.
- “Usage limitation” allows some provisions for limited production use as specified by the licensor. Most companies use this as a way to enable any production to be used except for ones deemed competitive (e.g., offering a competing managed service). Others, like MariaDB, put a limit on how many servers you can run in production without an additional license.
- Code converts to an open-source license within four years after its release date. This is version-specific. The open-source license must be GPLv2 or later.
Why would a company adopt a license like the BSL? Companies that are primarily selling infrastructure-level products that benefit from a bottoms-up open-source distribution have some of the following problems:
- Competition — This is where the non-production use/usage limitation clause comes in. Prevent your competitors from using your code, but allow your customers to try and integrate it before buying. Also may prevent cloud providers from offering your service at a discount (or at all).
- Monetization — Forces customers who are extensively using the project but not paying for it to sign up for a commercial plan. It's not ideal for companies to monetize their open-source like this, but it’s likely the best choice for some companies.
- Bottoms up — In many markets, buyers are sensitive to integrating fully proprietary code. In many cases, such as lower-level infrastructure, they might be unable to (it’s hard to predict all of the APIs that need to be exposed to satisfy many heterogeneous architectures). The BSL tries to assuage those concerns by the eventual open-sourcing of the code and source availability. However, most organizations can probably not integrate the eventual GPL code anyway.
It’s an intended compromise between the availability of code (for bottoms-up and customer integration) and strategic concerns (competition, monetization, etc.).
Notable projects that have adopted the BSL:
- MariaDB
- CockroachDB
- ZeroTier — a
- Akka
- Redpanda
- Sentry
- Uniswap v3 and Uniswap v4
- Terraform (Hashicorp)
- Couchbase