This is an in-progress draft, enjoy.

Choose and document your license

Choosing and making very clear what license your app will use is a simple step for many, but it's a necessary step and you should give some thought to it.

Why license

Licenses are terms under which other people may use, edit, and distribute the software you have written.

At least in the United States, if you don't provide a license then by default it's unlicensed. You own the copyright to work you produce thus no one else is legally entitled to use it or share it without your express permission. Kind of a bummer, and of course your mileage my vary based on what locality you're in.

Where to license

If nothing else, declare the license in your setup.py file (more on this later). Then adding this to your README file and/or to a separate LICENSE file in your project root.

What licenses do

Licenses grant other people the right to use, modify, and redistribute the copyrighted work you have created and published. They specify specific terms under which use, modification, and distribution are allowed.

There are numerous variations of licenses and they largely differ along a few lines:

  • Whether the software can be freely used
  • Whether the source code can be modified
  • Whether you can redistribute with software with different licenses

How to decide

There are a number of factors that you need to decide how to license your standalone app, but I'm going to boil it down to one:

Do you want to restrict how your software is bundled with other distributions?

If, for example, you were worried your software might end up bundled into some product sold by a monopolistic company, you might choose a copyleft license like a variant of the GNU Public License to ensure that distributions made the source code publicly available under the same terms.

On the other hand, if you just want to ensure that people can use your software so long as its attributed to you, then a more permissive license like the MIT or BSD license would be a better choice.