Software licensing
What is a Software license?
A software license is a document that provides legally binding guidelines for the use and distribution of software.
Software licenses typically provide end users with the right to one or more copies of the software without violating copyrights. The license also defines the responsibilities of the parties entering into the license agreement and may impose restrictions on how the software can be used. Software licensing terms and conditions usually include fair use of the software, the limitations of liability, warranties and disclaimers and protections if the software or its use infringes on the intellectual property rights of others. Failure to adhere to software license agreement terms often incurs criminal charges related to licensed intellectual property (IP) and copyrighted material.
Different types of software licences
Here are five types of common software license models you should know about. Four are examples of open source licenses (which allow you to reuse code to some extent), and one disallows any reuse whatsoever.
Public domain. This is the most permissive type of software license. When software is in the public domain, anyone can modify and use the software without any restrictions. But you should always make sure it’s secure before adding it to your own codebase. Warning: Code that doesn’t have an explicit license is NOT automatically in the public domain. This includes code snippets you find on the internet.
Permissive. Permissive licenses are also known as “Apache style” or “BSD style.” They contain minimal requirements about how the software can be modified or redistributed. This type of software license is perhaps the most popular license used with free and open source software. Aside from the Apache License and the BSD License, another common variant is the MIT License.
LGPL. The GNU Lesser General Public License allows you to link to open source libraries in your software. If you simply compile or link an LGPL-licensed library with your own code, you can release your application under any license you want, even a proprietary license. But if you modify the library or copy parts of it into your code, you’ll have to release your application under similar terms as the LGPL.
Copyleft: Copyleft licenses are also known as reciprocal licenses or restrictive licenses. The most well-known example of a copyleft or reciprocal license is the GPL. These licenses allow you to modify the licensed code and distribute new works based on it, as long as you distribute any new works or adaptations under the same software license. For example, a component’s license might say the work is free to use and distribute for personal use only. So any derivative you create would also be limited to personal use only. (A derivative is any new software you develop that contains the component.)
The catch here is that the users of your software would also have the right to modify the code. Therefore, you’d have to make your own source code available. But of course, exposing your source code may not be in your best interests.
Proprietary. Of all types of software licenses, this is the most restrictive. The idea behind it is that all rights are reserved. It’s generally used for proprietary software where the work may not be modified or redistributed.
Open source software licenses
An open-source license is a type of license for computer software and other products that allows the source code, blueprint or design to be used, modified and/or shared under defined terms and conditions. This allows end users and commercial companies to review and modify the source code, blueprint or design for their own customization, curiosity or troubleshooting needs. Open-source licensed software is mostly available free of charge, though this does not necessarily have to be the case.
Open source software licenses mainly belong to Permissive type or Copyleft type of software licenses.
Dual licensing
Dual licensing usually refers to licensing software under both a proprietary license and an open source license, typically the GPL. While this may seem like a conflicting approach, it has become a popular means by which licensors gain the economic benefits associated with commercial licensing while leveraging the community benefits associated with open source licensing.
Some major software licenses
GNU General Public License (GPL)
The GNU’s General Public License is the most popular open source license around. Richard Stallman created the GPL to protect the GNU software from becoming proprietary, and it is a specific implementation of his “copyleft” concept.
GPL is a copyleft license. This means that any software that is written based on any GPL component must be released as open source. The result is that any software that uses any GPL open source component (regardless of its percentage in the entire code) is required to release its full source code and all of the rights to modify and distribute the entire code.
The Apache Licenses
The Apache License is an open source software license released by the Apache Software Foundation (ASF). The Apache License allows you to freely use, modify, and distribute any Apache licensed product. However, while doing so, you’re required to follow the terms of the Apache License.
In version 1.1, removed the advertising clause which meant that the advertising materials of the derivative works of any Apache licensed product were no longer required to include the Apache License attribution.
Microsoft Public Licenses (Ms-PL)
The Microsoft Public License is a free and open source software license released by Microsoft, which wrote it for its projects that were released as open source.
You are free to reproduce and distribute original or derivative works of any software licensed under the Ms-PL license. However, you may not use any contributors’ name, logo, or trademarks when you do so. The Ms-PL protects the authors by explicitly not offering any express warranties or guarantees for using your code, so the author is not liable if the code doesn’t work well in some cases.
When you distribute software (or its portion) under the Ms-PL, you’re not required to distribute its source code. You may do so if you want to, but you’re not obliged. However, you’re required to retain all copyright, patent, trademark, and attribution notices that are originally present in the software.
Additionally, if you distribute any portion of the software in its source code form, you may do so only under the Ms-PL by including a complete copy of this license with your distribution. If you distribute any portion of the software in its compiled or object code form, you may only do so under any other license that complies with the Ms-PL.
It is important to note that the Ms-PL terms and conditions document is very short, concise and written in a very coherent language. Microsoft wanted to be very clear and direct with the open source community.
Berkeley Software Distribution (BSD)
BSD Licenses or the original BSD License and its two variants — the Modified BSD License (3-clause), and the Simplified BSD License/FreeBSD License (2-clause) are a family of permissive free software licenses.
The BSD License lets you freely modify and distribute your software’s code in the source or binary format as long as you retain a copy of the copyright notice, list of conditions, and the disclaimer.
The original BSD License or the 4-clause BSD License also contains an advertising clause and a non-endorsement clause (detailed explanation about these clauses are offered in the following questions). The modified BSD License or the 3-clause BSD License was formed by removing the advertising clause from the original BSD License. Further, the FreeBSD version or the 2-clause BSD License was formed by removing the non-endorsement clause from the modified BSD License or the 3-clause BSD License.
Eclipse Public License (EPL)
The EPL license is a copyleft license. If you modify an EPL’ed component and distribute it in the source code form as part of your program, you’re required to disclose the modified code under the EPL. If you distribute such a program in its object code form, you’re required to state that the source code can be made available to the recipient upon request. You’re also required to share the method for requesting the source code.
The Eclipse Foundation makes clear that, in their opinion, ‘merely interfacing or interoperating’ with an Eclipse plugin does not make your code a derivative work of the plugin.
The EPL protects the author from possible lawsuits or damages caused if a company used his/her component in a commercial product. It also offers a patent grant.
MIT License
MIT is one of the most permissive free software licenses. Basically, you can do whatever you want with software licensed under the MIT license — only if you add a copy of the original MIT license and copyright notice to it. Its simplicity is the reason behind its high adoption rate among developers.
References