Software Licenses Explained

Every development practice requires us t0 use some sort of license for our source code at some point. There is a large number of license options to choose from. I’ll try to give my comprehensive analysis of the most common licenses that we use at Shakuro in different web/mobile/software development projects.

Public Domain License

Public domain equivalent license belongs to the licenses that grant public-domain-like rights or/and act as waivers. They are used to make copyrighted works usable by anyone without conditions while avoiding the complexities of attribution or license compatibility that occur with other licenses. However, in different countries Public Domain concept may not be defined or defined in a different way, so using this license can bring certain risks.

Zero/public domain (CC0)

CC0 was created to boost the compatibility with legal domains which have no concept of dedicating to the public domain. This is achieved by a public domain waiver statement and a fall-back to the all-permissive license.

Permissive Software License

The permissive software license, sometimes also called BSD-like or BSD-style license, is a free software license with minimal requirements on how the software can be redistributed. Such licenses require more than just attributing the original portions of the licensed code to the original developers in your own code and/or documentation.

The examples of permissive licenses are MIT License, BSD licenses, Apple Public Source License, and the Apache license.

Copyleft Software License

Copyleft is a general approach to building a program in an unconstrained way which requires all the modified and extended versions of the program to be free as well. The Copyleft licenses for software require the necessary information to reproduce and modify the work,  to be made available to recipients of the binaries. But what does it mean in practice?

If you do distribute your application, and use some Copyleft library as part of your application, (even if it’s just the run-time linking to a library) even if you do not charge anything, and even if you do not change that library in any way, then you must make the source code of your application available for end users.

Making the source available does not mean users can download it automatically. It might be that you must get a written request, and then send sources. You can’t escape the obligation to make your own source code available to end users.

The examples of Copyleft licenses: GPL Licenses, IBM Public License.

The Hybrids (Combinations of Permissive and Copyleft licenses)

MPL v2.0 (Mozilla Public License Version 2.0) is a copyleft license that is easy to comply with. You can combine the MPL version 2.0 software with a proprietary code.

  • If you don’t modify it, you will have to provide just a link to the library sources. It looks a lot like Permissive license.
  • If you modify it, you will have to provide sources for the modified files (not the entire project). It looks a bit like a weak Copyleft license.

License Compatibility

Software Licenses Explained | Shakuro

License compatibility between common software licenses

The vector arrows denote a one-directional compatibility, therefore better compatibility on the left side (“permissive licenses”) than on the right side (“copyleft licenses”).

The comparison of free and open-source software licenses

Refer to Comparison of free and open-source software licenses to find out if the license compatible with your project.

Software Licenses In A Nutshell

In general, all software licenses have one thing in common and that is “Keep the copyright notice.” The least you can do is include a copyright notice to your documentation or an end-user license agreement (EULA). For example, “This software uses library name. See library-license.txt”.

The MIT License

Software Licenses Explained | Shakuro

The MIT license is a free software license created by the MIT (Massachusetts Institute of Technology). Being a permissive license, it puts very limited restrictions on reuse, which means it has great license compatibility.

Key points:

  • Keep the copyright notice.
  • You are free to modify, redistribute, and even sublicense the code under another license.
  • The original author is not liable for any damage resulting from their code.

The BSD License

Software Licenses Explained | Shakuro

The BSD license is a part of a family of permissive free software licenses, imposing minimal restrictions on the use and redistribution of covered software. Unlike the copyleft licenses, with reciprocity share-alike requirements, the BSD license is a simple license that merely requires all code licensed under the BSD license to be licensed under the BSD license if redistributed in source code format.

Key points:

  • Keep the copyright notice.
  • You are free to use, redistribute, and license the code under another license.

The Apache 2.0 License

Software Licenses Explained | Shakuro

The Apache 2.0 license is a permissive free software license by the Apache Software Foundation. The 2.0 version requires preservation of the copyright notice and disclaimer.  It also allows the user of the software the freedom to use the software for any purpose, modify it, and distribute the modified versions of the software, under the terms of the license, without concern for royalties.

Key points:

  • Keep the copyright notice.
  • Your software has to contain a copy of the Apache 2.0 license.
  • You are free to use, modify, distribute, and redistribute the software.
  • If you modify the code, you have to mention your modifications particularly.
  • If there is a text file called NOTICE, take time and read it. It contains further information about the specific parts of the license and the purpose of the software.
  • The NOTICE file has to be included in your software release too.

The GPL License

Software Licenses Explained | Shakuro

The GPL license is the first copyleft license for general use. A copyleft license means the derivative work can only be distributed under the same license terms. This is in distinction to permissive free software licenses like the BSD licenses and the MIT license.

Key points:

  • Keep the licensing header.
  • Your software release has to be GPL-licensed too.
  • If anyone requests it, you have to make the sources available.

The MPL 2.0 License

Software Licenses Explained | Shakuro

The Mozilla Public License (MPL) is a free and open source software license developed and maintained by the Mozilla Foundation. It is a weak copyleft license, characterized as a middle ground between permissive free software licenses and the GNU General Public License (GPL), that seeks to balance the concerns of proprietary and open source developers. The 2.0 version showcases major updates with the goals of greater simplicity and better compatibility with other licenses.

Key points:

  • Keep the copyright notice.
  • Provide the link to the MPLed code source.
  • If you modify the code, you must make the MPL-licensed portions of the source code available and inform the recipients how they can obtain them.