Opinionated Guide to Choosing a Free License

Q: What's a Derivative Work?

That depends on your jurisdiction, but in general, if your work incorporates the copyrighted works of others, it's a derivative work. If you're modifying a free/open source project, for example, it's a derivative work, and the original license may require you to release your derivative work under specific terms. The GPL is the best known of licenses like this—anything that incorporated GPL-licensed code must itself be GPL.

Q: What’s CC0?

CC0 is a license that dedicates your work to the Public Domain to the extent allowable in a given jurisdiction. It's the only Creative Commons license approved for use with software. You should use it if you don't want attribution (because all other licenses will need the name of the copyright holder), or the work might be in the public domain anyway but you want to remove ambiguity.

Q: What if I'm distributing a work that's not mine but is already in the Public Domain?

Use the Creative Commons Public Domain Mark.

Q: What if I don't want people to make money of my work?

If you prevent people from using your work commercially, it is by definition not free. But in general, copyleft licenses like CC-BY-SA or GPL are unlikely to be used commercially.

Q: Why should I use different licenses for Software vs. other works?

Licenses written with software in mind cover important cases, like distribution of source code vs. binaries. Creative Commons recommends against using its licenses for software, except for CC0

Q: When should I allow use in proprietary software / non-free works?

If you use a permissive license (ones that allow use in proprietary software), it could be more popular than if you only allow use in free software. Sometimes this is sometimes more valuable to the cause of freedom. For instance, the library for decoding OGG files was released under a permissive license, because promoting the free OGG format was more important that protecting the code of the program. You might also have selfish reasons for wanting to write a popular program, like gaining notoriety for yourself. However, outside cases like these, you should not use permissive licenses, because they can give an advantage to proprietary software, which is bad and should not exist.

Q: What's the LGPL and why should I use it?

The Lesser GPL is used mostly for libraries, which can be used by proprietary software, but which cannot have proprietary modifications made to them. This is useful if for some reason you need a permissive license, but you only want free versions of the library to exist.

Q: Why should I use the Apache License?

The Apache license is the best of the permissive license, because it protects against Patent treachery, among other things.

Q: Why should I use MIT (only) for trivial code

The MIT license is strictly inferior to Apache, except that it's short. It's just not worth distributing a license like Apache or GPL that goes on for pages and pages just to protect a work that's short and unlikely to lead to the problems that these licenses are meant to protect against.

Q: What's the Affero GPL and why should I use it?

The Affero GPL is a modified version of the GPL that requires the distribution of source code for versions accessed by users over a network, for example in a Web App. This closes the loophole where someone could modify a GPL program without contributing back the source code, becuase they would only run it on their own servers. Thus, if your program could even conceivably be used in this way, you should use Affero GPL in place of normal GPL

Google employees aren't allowed to use Affero GPL programs even on their workstations, so if you should also use Affero GPL if you really hate Google.

Q: Why should I use GPL version 3 or later

GPL version 3 is superior to version 2 because it prevents "Tivoization," where a GPL2-licenses program could be rendered effectively non-free by distributing it hardware where modified versions could not be installed. GPL2 also technically required anyone seeding a torrent of a binary copy of a program to distribute source code to anyone downloading it, which was obviously not the original intention of the license and is pointlessly restrictive.

You should include the "or later" clause to avoid the situation where a new version of the GPL comes out, but it's not compatible with the old version, so free projects using the new GPL version couldn't use source from projects using the old version.