Choosing A License

· 5 minute read · 4 Comments

How to choose a license for your open source project?

Let’s talk licenses.

I figured this was a fitting first real post due to it has been something I have been struggling with lately. I am new to having public code. This is partly due to the companies I’ve worked for do not allow external work; but, admittedly, it has mostly been on me for just not working on stuff that I could release.

choosealicense.com

Github has a page that has fittingly a domain named choosealicense.com.

I prefer looking at the appendix for it gives a nice chart of all the licenses that it has on file.

Now to choose a license.

Please note that for the remainder of this post I will be referencing choosealicense.com’s list of licenses. If there are others that I should be aware of, please let me know. It’s just easier to refer back to a single list.

Choosing a license

The funny thing is, even after given so many options, I am not sure what I want.

What is the biggest thing I do not want happen?

I think my biggest fear releasing software publicly is someone taking my code, slapping a copyright or patent on it, and I am forced to not use or share my code or software.

How likely is that to happen? How likely is that to happen specifically to any of my projects? Probably close to zero.

I think if I had one goal out of choosing a license, is that protection.

So what am I looking for?

Other than the obvious I would like to share my code, here are some things I am looking for in a license:

  • I want the license to be simple and easy to understand.
  • Minimize what is enforced on the user.
  • That the code can be used.

A simple license

By simple and easy to understand, I want a license that is concise, and does not trick the reader in terminology or language.

Some of the more permissive licenses may be “simple”, are still quite long. Is everything in the license needed?

Limit what is enforced on the user

A lot of Open Source licenses have must clauses:

  • Source code must be made available when software is distributed.
    (Like the GPL licenses such as GPLv2, GPLv3, etc.)
  • A copy of the license and copyright notice must be included with the software.
    (Most licenses, safe for licenses such as Creative Commons Zero and The Unlicense)
  • Modifications must be released under the same license when distributing the software.
    (Like GPLv2, GPLv3, Creative Commons Attribution Share Alike 4.0 etc.)
  • Changes made to the code must be documented.
    (Like the GPL, Apache, Creative Commons)

And to me a lot of these musts feel too restrictive. There have been many times when I’ve worked on projects that we skipped on some Open Source solutions simply due to some of the requirements.

For me, a lot of these would be nice. Like it would be nice to be credited. It would be nice that you shared your code. It would be nice that you shared your improvements. But I am not fond of forcing this on the user.

Having worked on projects that used Open Source software, it was often in the best interest of the company to release the modifications to the public or else you are maintaining a heavily modified branch. This becomes very difficult then to integrates updates to the public version.

The code can be used

I don’t want the license to be in the way of someone being able to use my code.

Possible choices

Of all the licenses that I have read on choosealicense.com’s appendix, I think I am leaning towards:

  1. BSD, either:
    a. BSD 2 - Simplified
    b. BSD 3 - Clear
  2. MIT
  3. The Unlicense

All three to me fall under the simple to read and understand.

Options 1. and 2. both have the must of including the license when distributing of the code.

The reason BSD 3 - Clear is listed is for I am not a fan of patents. I believe they hinder innovation more than they protect the creator.

Your thoughts?

What license do you default to when creating your Open Source Project? Please let me know by emailing me and if you would like your comment published or not.1

I am reaching out to a lawyer to discuss the legality of Open Source Licensing. If you have any recommendations on one in the Vancouver, Canada area, that would also be appreciated.

Comments

2017-07-24 17:57
miotatsu @choosing a license I like this site: https://tldrlegal.com/

2017-07-24 18:01
miotatsu MIT is my usual go-to license, I released nwr_mem.h as dual-licensed MIT/unlicense like the stb libs

2017-07-24 18:02
Brian how come you chose dual?

2017-07-24 18:04
miotatsu I think sean makes a compelling argument for public domain but you want to still have MIT as an option as public domain isn’t recognized everywhere, etc. This is why he does it that way and I just went with his approach because I like MIT and also want to provide that flexibility


  1. Privacy is important to me. My assumption if you email me and don’t specify if you would like your comment to be published is that you don’t want it published. [return]

Contents


Please contact me at if you have any questions or comments.