Software licenses fall into four main types: public domain licenses, which let anyone use the code without conditions; permissive licenses such as MIT, BSD, and Apache 2.0, which put minimal restrictions on reuse; copyleft licenses such as the GPL, which require derivative work to be distributed under the same terms; and hybrids like MPL 2.0 that sit in between. Almost all of them share one rule: keep the copyright notice.
The difference matters as soon as your product uses open-source libraries. A permissive library can go into proprietary code with little more than attribution. A copyleft library can oblige you to make your own application’s source code available to end users, even if you only link to it at run time and never change it.
Below, we explain public domain, permissive, copyleft, and hybrid licenses, how license compatibility works, and the key points of the MIT, BSD, Apache 2.0, GPL, and MPL 2.0 licenses.
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
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
![]()
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. Both React and Angular are released under it, so licensing is rarely a factor in an Angular vs React comparison.
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
![]()
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

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

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

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.
FAQ
What are the main types of software licenses?
There are four main types. Public domain licenses, such as CC0, make work usable by anyone without conditions. Permissive licenses, including MIT, BSD, Apple Public Source License, and Apache, have minimal requirements for redistribution. Copyleft licenses, such as the GPL and IBM Public License, require modified versions to stay free. Hybrids like MPL 2.0 combine traits of permissive and copyleft licenses.
What is the difference between permissive and copyleft licenses?
A permissive license lets you modify and redistribute code, and even sublicense it under another license, as long as you keep the copyright notice. A copyleft license requires derivative work to be distributed only under the same license terms. That is why permissive licenses have better compatibility: code under them can be combined with more projects, including proprietary ones.
Can I use a GPL library in a commercial application?
Only if you accept its terms. If you distribute an application that uses a GPL library, even through run-time linking, even for free, and even without changing the library, you must make your application’s source code available to end users. Your release has to be GPL-licensed too. Sources don’t have to be downloadable, but you must provide them on request.
What does the MIT license allow?
The MIT license, created by the Massachusetts Institute of Technology, puts very limited restrictions on reuse. You are free to modify the code, redistribute it, and even sublicense it under another license, as long as you keep the copyright notice. The original author is not liable for any damage resulting from the code. React and Angular are both released under it.
What does the Apache 2.0 license require?
Apache 2.0 is a permissive license from the Apache Software Foundation. You can use, modify, and distribute the software for any purpose without royalties, but you must keep the copyright notice and include a copy of the Apache 2.0 license in your software. If you modify the code, you have to mention your modifications, and a NOTICE file, if present, must be included in your release.
What is the Mozilla Public License 2.0?
MPL 2.0 is a weak copyleft license from the Mozilla Foundation, a middle ground between permissive licenses and the GPL. You can combine MPL-licensed code with proprietary code. If you don’t modify it, you only provide a link to the library sources. If you do modify it, you must make the source of the modified MPL-licensed files available, not the entire project.
Related reading
