While open sourcing a project, one needs a license so that the terms distribution, linking, modification, private use, etc., can be automatically taken care of. There are many open source licenses to choose from, some of them being MIT, GNU GPL, Apache 2.0, Creative Commons, BSD licenses. Each has its own terms of the above characteristics that even decide the ownership and credibility of the project.
When I started using GitHub to store my projects’ source code, I would choose a License randomly, mostly because that project wouldn’t really be a tool for others to use and build things upon or tinker with. But when one builds such a tool or product, that can be forked by others to build their own versions by tweaking and changing its source code, one needs to decide an open source license for it. There are so many options to choose from:
- Apache License 2.0
- BSD 3-Clause “New” or “Revised” license
- BSD 2-Clause “Simplified” or “FreeBSD” license
- GNU General Public License (GPL) v3.0
- GNU Library or “Lesser” General Public License (LGPL)
- MIT license
- Mozilla Public License 2.0
- Common Development and Distribution License
- Eclipse Public License
- Creative Commons License
But first let’s see, what is licensing.
What is licensing?
There has always been a lot of confusion in what licensing really means. When one Licenses
something, one is not giving its rights away, as the copyrights (or the patent, if one has one) are your own to have. Licenses provide rules and guidelines for others to use your work. Open source licenses help others to contribute to your work or project without seeking special individual permission to do so.
Here are some of the licenses and what they mean by their terms and conditions of linking, distribution, modification, private use, etc.
Different types of open source licenses:
GNU General Public License
- Copy the Software: There’s no limit to where you can copy that code. Copy it on your own server, on your client’s server, on your local workstations, wherever and howsoever many times.
- Distribution: You can distribute it in your thumb or hard drives, you can distribute the code under this license with a download link on your website, you can print out the code on paper, whatever form of distribution you want.
- Charge a Fee: You can charge someone for the software, but remember to give them a copy of GNU GPL which would tell them that they could get the software free from elsewhere. This also gives a chance for you to tell them why you are charging for it.
- Change the Codebase Howsoever: If you want to fork the project and make changes to it, you can. Remove or add features howsoever you want. The only condition is that your project should also be released under GNU GPL.
It is important to know the distinction between source and binary distributions. There are some constraints regarding releasing applications under each other. Also, if a project uses GNU GPL license, it has to comply with some standard rules of commenting parts of license requirements inside the code itself.
GNU LESSER GENERAL PUBLIC LICENSE
It grants fewer right to work than GNU GPL. It’s generally appropriate for libraries and projects that want to allow linking from non-GPL and non-open-source Software
. GPL requires any other project or source that is using the project under GPL to also be licensed as GPL; GPL licensed code can’t be used for paid and proprietary software. LGPL cancels it out by not
requiring other projects with parts of the code to be similarly licensed.
BSD license is a part of a family of free software licenses that have much fewer restrictions in distribution as compared to other free software licenses. Two important versions are:
- The New BSD License / The New Modified BSD License
- The Simplified BSD License / FreeBSD License
Both have been accepted as open source licenses by the Open Source Initiative.
The New BSD License (known as the “3-clause license”) allows unlimited redistribution for any purpose, so as long as the copyrights and disclaimers of warranty of the license are maintained. This license has an interesting requirement. It contains a phrase restricting the use of contributors’ names for endorsements of a derived work without specific permissions. It basically means that if someone has forked some famous person’s code and made changes to make a new project, s/he can’t use that person’s name to endorse it. The primary difference between the New and the Simplified BSD License is that simplified BSD license omits this clause.
It’s the shortest and perhaps most used of all the popular open source licenses. Its terms are loose and more open than most others. The main giving of this license is:
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
This basically means that you can use, copy, and modify the software however you want. No one can prevent you from using it in any other project. You can give the software under it for free, or sell it. No restrictions on distribution howsoever. Anyone can do whatever one fancies with the code licensed under MIT license, as long as it’s accompanied by the license.
Creative Commons (CC) [under which MIT Open Courseware Material is released] licenses aren’t quite open source. They are common for design projects. A wide variety of them are available each granting particular and certain rights. A CC License has four basic parts.
- Accreditation: Author must be attributed as the creator of the work. Then, work can be modified, distributed, copied, used otherwise.
- Shared with CC: The work can be modified, distributed but only under CC License.
- Non-Commercial: Work can be modified, distributed but not for commercial purposes. The word “commercial” is a bit vague in its meaning since no solid lined definition is provided.
- No Derivative Works: You can copy and distribute the licensed work, but you can’t modify it in any way or create work based on the origin [as MIT Open Courseware Material is]
Remember, these are not necessarily all the rules in all the licenses based on CC. Some CC Licenses may or may not have the above rules. They are mutually exclusive and can be combined as per the needs.
Apache License version 2.0 rights can be applied to both copyrights and patents. Some of the licenses can be applied only to copyrights and not patents. Some details of Apache License:
- Rights are Never Ending: Once the rights under Apache License have been granted, you can continue to use them forever, there’s no need of renewing it.
- Worldwide Authority of Rights: Even if rights are granted to one country, automatically, they’re granted in all countries.
- Rights for No Fee or Royalty: No charge, neither up front nor per usage or on any other basis applicable.
- Rights are Irrevocable: No can ever say to you that your derivative of the code that was licensed under this license can’t be in use anymore (A clause in the license states that if you sue someone over patent infringement on anything under this license, then your license is terminated, but that only applies to patented work, and as long as you don’t sue anyone over the work, you won’t have to worry about it).
Redistribution of the code has requirements, mainly related to proper credit to those who’ve worked on the code and maintaining the license.
Stay tuned for the tribute post for Aarzon Swartz, Internet’s Very Own Boy, where we remember what he stood for, projects he was involved in, what kind of books he read, things he wrote on his blog, which is still alive after his death, and more.
Don’t forget to share your valuable feedback and opinions. Keep reading.