My philosophy for licensing personal software projects is to allow for the widest adoption with the least amount of friction for downstream users.

  • Permissive > Copyleft
  • Sharing knowledge takes priority over personal profit
  • Attribution is appreciated, but shouldn’t be required
  • In practice, legal enforcement of licensing terms is unlikely and often impractical

Based on the above, I default to using the Zero Clause BSD License (0BSD) as the most simple approximation of public domain that’s legally viable. Directly releasing software into the public domain is problematic, as it’s a labyrinthine mess in the United States and an inconsistent concept globally.

Actual compliance with license obligations is far more complex than most developers anticipate, particularly in modern ecosystems where projects can incorporate hundreds or even thousands of transitive dependencies. This complexity has spawned entire industries specializing in license compliance tools, policy enforcement, and generating comprehensive audit reports. The non-trivial effort required for proper license management just diverts time and resources away from improving your actual project. Using 0BSD can help bypass all of that.

Comparisons to Other Licenses

  • MIT/BSD/ISC: Good, but require attribution
  • GPL: Compatibility issues
  • CC0: Patent concerns
  • MIT-0: Less universal acceptance (not on Google’s “unencumbered” list)
  • WTFPL: Legally imprecise, informal language
  • Unlicense: Copyright can’t be waived in all jurisdictions

Commercial Software

I don’t have as clear of a stance on what’s the best approach in the world of commercial software. If you want to make money from the software you write, what are good options?

There’s so much disagreement and arguing over license terms and rights, most of which have never actually been challenged in court. For a taste of the mess, just read through these two Hacker News threads regarding the GNU Affero General Public License (AGPL). And yet another HN thread about CockroachDB changing licenses after previously trying one of the middle ground options.

I need to think through “Fair Source” and it’s implications more deeply. Delayed Open Source Publication (DOSP) is a similar term. I’m not 100% convinced that it would be the direction I’d choose starting a software business now. I do think some of the pushback comes from projects that start as Open Source and later switch to being less open. Would there be as much of a feeling of betrayal if a company started as Fair Source from the beginning?

Note, I was directly involved in the internal discussions surrounding the Elastic License and am very familiar with the motivations and eventual impact. This GitHub blog post has a decent summary on why many single source projects have decided to tighten up their licensing.

Related to

Inspired by a BurntSushi’s take and further discussion on HN https://news.ycombinator.com/item?id=24939162

Explicitly allow AI training on my data is also an advocacy thing.


See Also

Further Reading