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
- 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.
Tivoization - TiVo uses a modified Linux kernel, the code is available, but they use hardware checks to prevent the system from running others' binaries
- Reactions are different. RMS says this is bad, Linus is OK with it, YMMV.
- GPL v3 includes a special clause that prohibits tivoization
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.
A set of elements that can be combined to build other licenses
- by, attribution - do what you want, as long as there's a reference to the original author
- nc, noncommercial - do whatever you want, as long as it is not for commercial purposes
- nd, no derivatives - do whatever you want, as long as you don't derive works from it
- sa, share alike - the derived work must be distributed with the same license as the original
- Combine these elements to tweak the license to your needs. For example, if you want to make something and make sure the world knows it is you and you don't want it to be used for commercial purposes, the result is cc-by-nc (creative commons, attribution, non-commercial)
- 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.
Comment from: Sergiu [Visitor]
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 :-) )
>>beer vs freedom
:D , remembers me the “Dodon vs Chisinau Beer” thing
Comment from: arun [Visitor]
1. We want to create a commercial software out of open source. We want to sell the commercial software but do not want to share our code and do not want to make it GPL.
Can you please suggest which license is best for us?
2. If we use GPL 2.0, can we sell that software? If we need to share the code, how to share the code with customers? should a document be created and shared?
Comment from: gr8dude [Member]
Arun, for #1 - BSD is the way to go. This permissive license lets you take code and use it for commercial purposes without forcing you to make the end result open source. The MIT and Apache licenses are pretty much the same thing.
#2 - yes, you can sell it, as long as you also offer the source. How exactly it should be distributed - the easiest way is to include the source code in the same package as the binaries themselves. The alternatives are to include a readme with the binaries that says something like “to obtain the source code, contact us at …..” or “the sources can be downloaded from …..”
For more details, see section 4.1.1 of A Practical Guide to GPL Compliance.
Comment from: Nicu [Visitor]
I don’t fully understand the gpl license; if for example I take a software under this license and I modify it to suit my needs and use it offline they will never know I used the code(so I don’t have to publish it)
Comment from: gr8dude [Member]
Nicu, you’re right - they will never know about it.
However, they won’t care either. The license terms apply only if you distribute the software.
Form is loading...