Help me choose a license for my project

My 3 step process for choosing a license:

  1. Do you need to actively prevent businesses from interacting with your code but still want to open source? Then use the GPL. Legally, this prevents someone from taking your code and building a product out of it without also sending their code. Practically it means companies won’t touch the codebase with a 10 foot pole. Heck, I won’t touch GPL code with a 10 foot pole. Almost no projects need this, but I have met one person who I agreed should use this.
  2. Do you care about patents? First, talk to a lawyer. Second, choose Apache.
  3. None of the above? Choose MIT. MIT is very compatible with other licenses, so it’s easy to switch from MIT to something more restrictive if desired. The other direction means tracking down everyone who has contributed to get their to permission for the copyright the own.

Never: CLA. Contributor license agreements are for big companies who have lawyers that are given too much freedom.

Generally avoid: Anything else, IMO. I haven’t seen any reason to use anything else, and businesses and their lawyers will be most familiar with the above 3.

Basically, I’ve always chosen MIT.

Also, depending on your project, getting a trademark is a practical step. Basically, the code can be open source while still limiting how people use the name. This can weaken others making money with the projects clout, and can defend in some aspects against hostile forks. Honestly probably not worth it for most projects, but it might be relevant.

13 Likes