After some modest preliminary research of my own, here are my opinions and what I have learned so far.
These are merely my own personal notes based upon what I've gathered thus far; I am not an expert on these matters so do take everything written here with a grain of salt.
First, anything published publicy should have a license (particularly and especially published software).
- A license is essentially the only thing which grants others permission to use, modify, redistribute, etc., your code.
- A license typically also clarifies that you are providing no warranty whatsoever so that you are not legally liable for anything caused by the use of your software.
- GPL
- rather complicated
- long read
- restrictive
- many versions (GPLv1, v2, v3) and alternatives (LGPL and its versions, typically used for libraries)
- copyleft
- you probably want version 2 (and don't allow those downstream to upgrade the copyleft to v3)
-
MIT
- easy read
- used by MIT
- 2 versions
- not technically called
The MIT License
as there is no such thing, but everyone calls it that anyway
-
Apache 2.0
- more thorough
- longer read
- incompatible with GPL2, but not GPL3
- the GNU recomended alternative to the GPL
-
BSD
- 2 or 3 versions, mainly 2 clause and 3 clause
-
ISC
- short and sweet, similar to MIT
- the default license for new npm packages
- probably better to just choose one of the above instead however as the ISC has potential wording issues
There is also the so-called Unlicense
, although it is seldom used and somewhat unnecessarily complicated. It basically publishes your work as/into the public domain (which forfeits your copyright(s)?) but falls back to a license in certain situations.
- only the word
Copyright
or©
is needed, although both are typically included - source code usually uses
(c)
instead of©
for some reason (maybe for historical reasons because it's a non-ASCII multibyte character?) - copyright year is year of first publication
- author and copyright holder are not necessarily the same thing
- https://www.law.cornell.edu/uscode/text/17/401
For those viewng this, please let me know by leaving a comment below if you feel like there's something I got wrong or left out.
More
GNU Licenses Home
GNU License List (maybe somewhat opinionated, but very informative)
https://spdx.org/licenses/
Linus Torvalds GPL v3 criticism
GPL Recommendation
https://en.wikipedia.org/wiki/GNU_General_Public_License#Open-source_criticism
https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository
A simple website created by GitHub covering the basics
TLDR:
Use GPLv3 if you want to use a controversial license that few will fully understand (but at least will be compatible with Apache 2.0, but not GPLv2).
Use MIT/BSD/ISC if you want your software stolen and secretly used in proprietary software.
Use Apache 2.0 if you want to be incompatible with GPLv2.
Easy enough. Let's do this!