Every OSS license has certain requirements for both the use of open-source code and its modification. The “Open-Source Initiative” organization contains a list of OSS licenses, which must go through the approval process, as they must comply with all open-source definition requirements. There are over 70 OSS licenses, but the 10 most popular ones are applied in 90% of cases.
If we would simplify the explanation of the OSS licenses as much as possible, the rough division would be to:
- Restrictive or prohibitive (copyleft) licenses
- Permitting or permissive (non-copyleft) licenses
Restrictive or copyleft licenses guarantee all users the aforementioned four freedoms free of charge, provided that this open-source code or any program that is created using this open-source code guarantees the same terms to its users. In other words, if OSS is protected by a restrictive license, you cannot restrict further users from using that code or its modifications. The four freedoms are forever embedded in this open-source code.
The substance of restrictive licenses is that the source code is publicly available, so that other developers can study, modify and improve it, and that such improved software remains free and accessible to the entire world and future developers with the same goals. If there was no copyleft, or if there would be no restrictions to such software being commercialized, the derivatives of this software would become very quickly unavailable to everyone, and users of these derivatives would have no more an option to use such a code freely, to copy, distribute, modify and improve it The intention is for a restrictive license to motivate developers who are not exclusively profit-oriented, to promote various software solutions. Certain important programs (for example, the GNU C ++ compiler) were created exclusively thanks to them.
The most famous restrictive license is the GNU General Public License (GNU GPL or just GPL) compiled by Richard Stallman. For example, Linux operating systems are based on GPL licenses. Furthermore, if you were to write the code and publish it under the GNU GPL license, another developer who modifies your code and wants to distribute it would have to do it solely under the GNU GPL license. In other words, both the original and the new code must be open-source. Otherwise, another developer may violate your copyright.
On the other hand, permissive open-source licenses provide software users with the unlimited freedom to use, study, and modify software, and contain minimum redistribution requirements for this software. If OSS you use is under the permissive license, you can also use the source code as part of the closed-source software, or software protected with a proprietary software license.
One of the most popular permissive licenses are BSD, MIT, and Apache. For instance, the known software packages that use one of the MIT license versions include Expat, Ruby on Rails, Node.js, jQuery, etc.