Disclaimer: I am not a lawyer, I wrote this for personal reference. If you find some inconsistencies or incorrect statements, please let me know - I'll apply the corrections.
This article provides short, plain English descriptions of different open source license types, so you can rely on it when deciding whether a component is suitable for use in your commercial program, or which license to use for your products.
It is opimized for shortness and for being clear to non-experts.
Beer vs freedom
Free as in "beer" vs free as in "freedom" - you must've seen this a zillion times all over the web:
- Beer - when a person says something is "free", they usually mean the cost is zero
- Freedom - in the world of open source software, "free" means that you have the freedom to review and create derivative works. This is about liberty, not about money.
- In fact, open source software can be sold for money, no one prohibits that. However, you must provide the source code too.
- FLOSS - free/libre open source software - this means that you can see the code and you get the freedoms too
- "Open source" doesn't always imply "libre" (i.e. free as in "freedom"). For example, a piece of code can be open source, but it may be an implementation of a patented algorithm, so you really can't use it unless you pay royalties to someone.
The licenses themselves
Public domain - not a license per se, but you need to understand the term
- Do whatever you want, no need to tell anyone about it
- This is where works end up when their copyright term expires
- In some countries (ex: USA), work done for the government is in the public domain
GPL [v2]
- Source code must be made available
- Derivative works must be GPL too
- Use in commercial software - allowed, but every other component must be made GPL too
- Some call it a plague - because it "infects" anything it touches (i.e. turns into GPL) in order to propagate freedoms
- Exceptions may apply if the license has a specific clause for that. This is relevant for low-level libraries. For example, if there were no exception for libgcc, one would not be able to use GCC to create non-GPL software.
GPL v3
LGPL (lesser GPL)
- A permissive version of the GPL
- Use in commercial software - yes, you can link proprietary code to LGPL code, without turning the whole thing into LGPL. This is what makes it permissive
AGPL (Affero GPL)
- Created to handle an edge case of the GPL - a company uses modified GPL software on their server
- The software is not distributed per se, people see just the output of said software via HTTP, for example
- The license says that anyone using the system over a network must be able to obtain the code
BSD, MIT, Apache - they are different, but within the scope of this article - they are similar
- Use in commercial software is allowed, you don't have to change the license of the whole system (unlike in GPL)
- Derivative works must include a copy of the license
- They differ in terms of whether you can leave references to the original authors and how to do that
- No plague element here - you can take the module and turn it into a proprietary application.
Creative commons
Moral aspects
- GPL aims to protect freedom by forcing freedom upon anyone else who uses GPL. If you write GPL code, all the derivatives will be GPL and you'll always be able to reap the benefits of others' work based on your work.
- BSD folks see it differently - freedom implies the freedom to allow others to take my code and do whatever they want. If I write BSD code, someone can derive and build something else - but this derivative work may not be shown to the world. The derivator will be the sole benefactor, they took other people's contributions but did not give anything back.
Very helpful, thank you for the research!
Small bug-report: AGPL, item 3: the sentence looks like a fragment.
(Also, you may want to unify the capitalisation styles in your enumerations :-) )
Alex: Thanks for pointing it out, I made the changes :-)