Why should you pick a license?
In other words, why not just put code online without a license? A license clarifies the conditions under which your code can be re-used. In absence of a license, the author still retains copyright, and the conditions under which the code can be used are unclear. A sentence like "feel free to use this code" does not improve the situation, because it does not clarify to what extent any possible user should "feel free" to use it. Standard licenses provide pre-defined sets of standard conditions, which both providers and users only have to understand once, and then immediately can recognise/categorise later.
Also see "Why is an open-source licence useful?" on the Software Sustainability's Choosing an open-source licence page article.
Picking a license
The most common licenses for a given artifact can be determined by its type: code, data, or any other generic digital "creative work" (documentation, reports, figures). For any given project, its components can be licensed independently by type.
At the most basic level, one must decide on whether one wants to use a copyleft license or a more permissive license. While copyleft assures that code changes by any future contributors must stay public, permissive licenses only require attribution in derived works.
With these two distinctions (type of work, type of license), the following decision matrix can be drawn:
|| GPL licenses
|| MIT, BSD, Apache
The following sections elaborate on both options for each type of work: code, data, and other.
The following minimal questions can give a guideline whether one should choose a copyleft or a permissive license for a project. The Wikipedia article on Free software licenses gives a more in-depth overview on both types and their properties.
- Are you ok with your code becoming part of a closed-source commercial software product?
- No: GPL
- Yes: permissive licenses (MIT/BSD/Apache)
- Do you want to force users to publish their improvements to your software, or to software they develop based on your software, under the same licence?
- No: permissive licenses (MIT/BSD/Apache). This makes the code more broadly usable, but also allows people to take the code without sharing their improvements to it.
- Yes: GPL. This ensures that any future changes/improvements to the code remain free and open.
Developers who use GPL code must publish the source code available they share or sell an application built upon it. In this case, the source code must also contain any changes the developers may have made. If GPL code is used but not shared or sold, the code is not required to be made available and any changes may remain private. This has the important consequence that software written under such a license can not be included in "non-free" software. The GPL licenses are:
- GPL: the basic GPL license
- LGPL: Lesser GPL. Permits non-free software to link to the LGPL-licensed software, which the GPL does not.
- AGPL: Affero GNU GPL. It closes a loophole in the GPL that permits somebody to operate a web application that uses GPL code, without making the code available to users
More information, geared towards the use of copyleft licenses for one's code, can be found in the article How to choose a license for your own work on gnu.org.
The article Why you should use a BSD style license for your Open Source Project on freebsd.org. The permissive licenses allow code to be re-used with no restrictions, including the possibility to build commercial software for which new code is no longer made publicly available at all.
The site choosealicense.com has a great three-column summary of the differences between the major open source licenses. Summary from their explanations (links to their license description pages):
- The MIT license is a simple permissive license
- The Apache License adds an additional term explicitely granting code contributor's patent rights to the user of such code.
- The BSD license, or its newer even shorter successor ISC is virtually identical to MIT, but worded shorter.
One important aspect of all these licenses is the liability clause. It prohibits any code user from holding the code producer liable for any damages caused by using the software code.
The go-to solution for data licenses comes from the Open Data Commons that have created the following three licenses, and a nice 2-minute guide on the why and how of data licensing.
- Creative Commons licenses have been reworked since version 2 to include provisions which make them suitable for databases and data sets as well. Please refer to the section "Other" below for their properties. See also the related question are CC licenses suitable for data? on StackExchange.
If you would like your model documentation to be used verbatim on Wikipedia, you need to use one of these Creative Commons licenses:
- CC BY, all versions and ports up to and including 4.0
- CC BY-SA, versions 1.0, 2.0, 2.5, and 3.0
However CC BY-SA 4.0 is not compatible with Wikipedia. For more information, please see the Wikipedia compatibility table.
The Creative Commons license family is probably most widely known. As of now (September 2015), the fourth version of these licenses have been published. First, the two "free licenses" are presented:
- CC BY, short for attributions ("by" whom was the work created?), requests to name the source when sharing the work or a derived work.
- CC BY-SA is similar to the GPL as it requires any derived works to be published under a "compatible" (easiest: the same) license. It is therefore the license used by Wikipedia.
Only the previous two licenses qualify as "free" licenses, as they do not restrict, what a user may do with the licensed work.
- The non-commercial (NC) option allows to prohibit any "commercial" usage of one's work. However, it is notoriously hard to define what exactly is a commercial activity. This problem is explained in great detailed in the brochure Consequences, risks and side-effects of the license module "non-commercial use only". Anyway, the two resulting licenses are consequently called CC BY-NC and, with the share-alike option, CC BY-NC-SA.
- If you do not want any changes or improvements to your work to be shared or redistributed, the "no derivatives" (ND) is available. Its main use is by musicians that only want their music to be shared by listeners, but not allowing remixes or cover version. The resulting licenses are CC BY-ND or, by combining it with the NC tag, CC BY-NC-ND.
For inspiration, the Creative Commons homepage also lists a host of example projects licensed under all different licenses to give an impression which situation triggered which decision by the presented individuals.
Why is it a bad idea to use Creative Commons licenses for code?
Long answer is in the question Why is CC BY-SA discouraged for code? on StackExchange.
Short answer: the license is written for creative works (music, film, texts), not software code. Therefore, it leaves many important details (what consitutes a "derived" work, is linking allowed, what about patents?) unspecified. So: don't use CC licenses for code.
At what point of time to choose/can I change license?
With the first release (if possible already for “small” releases like within your institute) detmermine a licence for your project.
Can I change the licence? The important thing is that, when you receive a copy of source code with a particular license, you have been granted that license. So long as the license doesn't have a revocation clause, it's permanent. Related question on StackOverflow: What happens when an open source project changes its license?
But the license can be changed: You can change the licence for the next version/release if all contributors (copyright holders) agree, or have previously agreed on the possibility of doing so, via a contributor agreement. Search for "contributor (license/assignment) agreement" online, for pointers on how to enable the latter up front. (cf. FAQ on contributor agreements on opensource.org, Civic Commons article on contributor agreements)
What does sublicensing mean?
"The basic idea [...] is that if this is granted, a licensee can become a licensor of some of the rights of the grant they received regardless of any other claim they may have to copyright control over what they distribute." Source: https://programmers.stackexchange.com/questions/189633/what-sublicense-actually-means
Sublicensing allows somebody to relicense all or part of the licensed software, for example, to use BSD-licensed code in a closed-source commercial application.
- The Software Sustainability Institute (UK) provides information and answers to frequently asked questions. The questions dealt with include:
- “Why is an open-source licence useful?”
- “How can I tell the difference between open-source licences?”
- “What happens if I am using someone else's code in my software?”
- “What do I need to do before applying my choice of licence?”