Open Source Licenses
This is a Frequently Asked Questions list about open source software licenses.
- 1 How does copyright & licensing work?
- 2 What is open source?
- 3 What are my options, in short?
- 4 Which open source license should I use?
- 5 When should I release my open source software?
- 6 Can I make money on my open source?
- 7 Will I be able to change the license?
- 8 What is dual licensing?
- 9 Do I have to take violators of my license to court?
- 10 What about creative commons?
How does copyright & licensing work?
Copyright is something you get for any creative production you make. It automatically forbids anyone else to make copies of your creation, no action is needed on your side.
With a "license" you can grant people the right to make copies of your creations that would otherwise violate your copyrights, under very specific conditions that you as copyright owner can specify.
Copyright and licenses are connected: a license is only required if someone wants to do something that would otherwise be forbidden because of copyrights.
Copyrights are quite universal: they work the same in different countries. In contrast, licensing is tightly bound to the law of each country, and it is therefore very difficult to write a good license that will work everywhere.
What is open source?
Open Source is defined by the Open Source Initiative (OSI): http://opensource.org/docs/osd . It is a specification of some ideas that can be present in a software license.
According to OSI, open source means that a user of a piece of software should have the source code available, and should be able to give it away to others and to make derivatives from them and distribute those. The OSI rules also say that you can not restrict users in what they can use the software for (including e.g. making money on it, or building weapons systems).
What are my options, in short?
This section avoids exact legal language and attempts to give a readable summary of what you need to know at the very least. Please check the sources of the licenses to know more.
The GPL license, Gnu General Public License, also called Gnu copyleft tells users that they can do anything they want with the code, with basically only two restrictions: (1) any derived work must use the same license, and (2) if software under the GPL is distributed to others, it must be equally easy to get the source code as it is to get the binary executables.
The first restriction makes GPL a viral license: once a piece of code with a GPL license is included in a program, the whole program must be made GPL.
The GPL has a large following, and a group of fanatic people behind it including legal experts. The official wording is very formal and wordy, but does not need any adaptation to be used for your own project. GPL has been tested in court.
There are different versions of the GPL, and camps of people in favor of them: both version 2 and version 3 are in use. Version 3 contains an explicit license to any patents the authors may have on techniques used in the code, and it contains restrictions on DRM usage (DRM = Digital Rights Management; GPLv3 can not be used for software restricting users rights). Very important is that GPL Version 2 is incompatible with the Apache license, they can not be used in the same project. If you choose GPL for your new project, choose GPL version 3.
There are two variants of GPL:
- LGPL, applicable to libraries used in other code, is less viral: it does not require that a derivative work is licensed completely under the same license. Still, if a modified version of the library is made and distributed, it must be made available under the LGPL again.
- AGPL, applicable to code used in web services, changes what is considered distribution: AGPL adds the restriction that if someone uses the software as part of a software-as-a-service (SaaS) offering, it must have a button to download the source code of the entire service.
X11, aka MIT
This is a very short license (three paragraphs) that can easily be included in every source file. It says you can do anything you want with the code, as long as you keep the copyright message. And it disclaims all usability of the code, making the user responsible for the results.
MIT license is compatible with the GPL license, you can safely combine the two in a project.
There is a variant of the MIT license that adds the restriction that you can not use the name of the author in advertising. This extra restriction is possibly incompatible with the GPL license.
The BSD license is a very permissive license that, in a few lines of text, claims ownership and gives any user the rights to copy the code with some minor restrictions.
There are several versions of the BSD license. There is a very old one without any bullet points, an old one with 4 bullet points, and newer ones with 2 or 3 bullet points. Do not use the old ones as they are either not considered as open source by the Open Source Initiative, or not compatible with the GPL.
The apache license is similar to BSD, but more explicit in its legal wordings (and therefore more verbose). It also grants users an explicit license to patents that the authors may hold on pieces of the code. This last bit makes the Apache licenses incompatible with the GPL version 1 and 2 (but it is compatible with GPLv3).
Which open source license should I use?
This actually requires some thought, at the beginning of the project. There is no "magic bullet" solution to this; each of the licenses has its merits and its disadvantages. The right license depends on the specifics of the project. Some general remarks:
- NBIC has an "open source, except" policy. This means that unless you have very good reasons and can defend them to the IP committee, your software developed in NBIC should be released as open souce. This does not mean that you can not have commercial licenses too (see the section on dual licensing below).
- You may be working in other consortia that restrict the license choice. Make sure to check.
- When you release your software, you have to make sure you comply with any licenses for software you have used to develop your code. You may be using libraries that have license requirements, or you may have used a development environment that has license requirements. Make sure you align all of these before deciding.
- Do NOT try to make your own license. Since licenses need to be valid in different countries and need a lot of checking for that reason, it is really hard to make a new license. Instead, check http://www.opensource.org/ to find existing reusable open source licenses, and choose there.
- Ask the Technology Transfer Office to help, at as early a stage as possible (i.e. preferably before you start coding and not after everything is done and a company is on your doorstep that wants to license your software).
I am just starting the project
If you start with an empty slate, you can choose your license based on what you want to do with the software and what you want others to do with it.
- If you want to be able to force other people to release derivative works under an open source license, choose the GPL
- If you want to be able to force other people to release fixes and changes to your code as open source, choose the LGPL
- If you want to leave everything to the user, choose the MIT, BSD or Apache license.
The project is done
If you are "done" coding your project and are now at the final stages before the public release, it may be very hard to choose the right license: most likely it is largely dictated by any code in libraries that you have used and maybe even by your development environment.
- If you have written all code yourself, and the development tools (e.g. compiler and IDE) do not add any restrictions to the license, you can choose the license for your code freely.
- If you are using any GPL licensed code (e.g. libraries), your project can only be released as GPL. If there are also libraries that are not licensed under the GPL, you have to make sure each of them is "compatible" with the GPL.
- If there are libraries with incompatible licenses, or any packages with non open source licenses, you will not be able to open source your complete software package.
When should I release my open source software?
Can I make money on my open source?
Sure. There are different business models possible. Some examples:
- You can provide the software as a service (SaaS). People pay you for keeping it running on a server for them.
- You can sell customer support.
- You can use dual licensing, taking away license restrictions (e.g. GPL restriction that the source code must be available) for a fee. See the section on dual licensing below.
- You can sell an enhanced version under another license (so-called "Freemium" model).
Will I be able to change the license?
If you are the copyright owner for the complete software, you can make it available under any license you want. This is much more complicated if there are multiple authors that each have their portion of the copyrights. It is therefore useful to think ahead.
What is definitely not possible is to revoke a license: a version of your code that you have released under the Apache license on your web site can not be restricted any more. What you can do is continue the development and make the new version of the code available under a new license.
See also the section on dual licensing.
What is dual licensing?
If you have the freedom to choose licenses (see above), you also have the freedom to use dual licensing. With dual licensing, you give users a choice between two possible licenses. This is commonly used to have a possibility of making money on an otherwise open source project.
The idea is that the software is released as open source under a license with a restriction, and that this restriction is absent from a second license, which is available for a fee. Often, the restriction is the fact that the source code of modified code must also be made available (see the GPL above).
It is possible as well to offer software standard under a single (open source) license and negotiate specific terms with any customer. For this to be interested, the standard license must have something that is "unpleasant" for the customer that you want to pay money.
Do I have to take violators of my license to court?
This is difficult. It may be very expensive to make a court case. You may find that competitors of a company that violates your license may be willing to help.
What about creative commons?
Creative Commons licenses are great, but they are for works of art that do not need compilation and execution. They are suitable for documentation, but not for software projects.