Moving to source-available licensing
I’ve made the decision to update Level‘s licensing to a source-availability scheme. This is something I’ve been giving careful thought over past few months as I evaluate my goals and my vision for the product. Ultimately, I believe it is the most sustainable way to license the codebase and will allow me to continue fearlessly building it out in the open.
A quick tour of licensing
There are several common licensing schemes (and accompanying business models) for software businesses:
- Closed-source and proprietary
- The “open core” model: an open-source core version with a dual-licensed proprietary offering (e.g., GitLab)
- Open source with a managed services component (e.g., Discourse and Ghost)
- Source-available (similar to “open source” but with some added restrictions, such as the Commons Clause)
A majority choose to adopt the closed-source, proprietary model. The calculus is pretty straightforward: the company funds the development of the product and retains all intellectual property rights to monetize it.
The open core and fully open source models open up more possibilities: people from the community can download and use it for free and can contribute their development efforts back to the project if they so choose. There are many officially “approved” open source licenses with varying properties that all adhere to The Open Source Definition defined by the Open Source Initiative.
By and large, companies licensing their code as open source rely on selling hosting (or other managed services) to generate revenue. Additionally, most reserve their trademarks/copyrights to prevent a competing business from marketing their codebase under the same name (or something confusingly similar).
Why source-available is right for Level
When I made the decision to build Level out in the open, I had several goals:
- Provide an example to the developer community of a full-scale SaaS application built with emerging technologies (Elixir, Elm, GraphQL, etc.)
- Allow people to download the software for free and host it themselves
- Build a profitable little company to support the product
Herein lies the risk: open source licenses contain no provision preventing larger companies from forking the codebase, changing the name, and competing directly with the project creators.
If Level lives up to my expectations, then it would only make rational sense for someone to seize upon that opportunity eventually. I had to ask myself, “Is that what I desire to happen?”
I believe the answer for most companies is “no.”
There are some ways to disincentivize people from doing this:
- Dual-licensing the codebase and reserving the most valuable features for the proprietary version
- Intentionally making it harder to deploy the codebase (or keep that kind of code private altogether)
- Raising venture capital funding to level the playing field with other well-funded opportunists
None of these options align with my values and my vision for Level. Rather than adopting a pure open source license and attempting to play defense against opportunists, it makes the most sense for Level’s licensing to align with my original goals.
How the Commons Clause works
Level is licensed using a combination of the Apache 2.0 license and the Commons Clause. This clause can be added to any existing open source license to disallow one particular right: the right to sell a product “whose value derives, entirely or substantially, from the functionality of the Software.”
This means you can still:
➜ Host the software for your own personal and commercial use
➜ Fork the codebase and use it as the basis for a non-competing product or service
➜ Sell consulting services to help people host Level for their own use
But, you cannot do the following without permission:
✗ Sell a hosted (SaaS) version of Level
✗ Sell a downloadable version of Level
I genuinely believe this is the most reasonable and sustainable licensing scheme for Level moving forward.