Senior Full-Stack Software Engineer
Licenses tell the world the conditions under which they can and can’t use an open source project and ensure that open source software developers — the community of minds behind many of today’s most innovative technologies — are able to protect their creations as they see fit.
If you think “I don’t own any open source projects, so I don’t care about open source licenses”, but you develop software for commercial use and you use open source libraries you might want to pay more attention as some licenses might impose more restrictions.
The MIT License is one of the most commonly used and permissive open source licenses. Under this license, you can essentially do anything with the software as long as you include the original copyright and license notice in the copy of the software. It is also compatible with many copyleft licenses, including the GPLs.
The Apache License 2.0 is another commonly used permissive open source license. With this license, you have the freedom to do what you want with the software, with the exception that you must include the original copyright and license notice, state any significant changes, and include the NOTICE file if there is one. It's also important to note that while the Apache License 2.0 is compatible with GPL v3, it is not compatible with GPL v2.
The BSD License, short for Berkeley Software Distribution, allows the freedom to use, modify, and distribute the software as long as the copyright notice and license text are included in the copy of the software. There are several different variants of this license; the difference between these versions is the number of clauses, or restrictions, included. The BSD 3-Clause License (also known as the "New BSD License" or "Modified BSD License") is the most popular variant. The BSD 3-Clause is very similar to the MIT Licenses, with the key exception of the BSD 3’s non-endorsement clause, which prohibits distributed derivative works from using the name of the original code's author or contributors for promotional purposes.
The GNU General Public License family, or GPL for short, includes two of the most commonly used copyleft licenses: GPL v2 and GPL v3. (GPL v1 is no longer widely used.) The GPL License states that if you write and distribute a program using a GPL-licensed component, you must also release the full source code while giving your users the same rights you received. This license was created to protect software from becoming proprietary, or private, which is why many programmers like this license. They get the assurance that the restrictions with the GPL License will keep their work free and acknowledged.
The Mozilla Public License 2.0, also known as MPL 2.0, is a weak copyleft license maintained by the Mozilla Foundation. If a distributed program modifies code licensed under MPL 2.0, those modifications must also be licensed under MPL 2.0 and made available in source code form. However, if a distributed program simply uses (as opposed to modifies) MPL 2.0-licensed code and keeps it in separate files, they can combine that code with non-MPL code to create a larger work.
Let's take a look at an example, the Java MySQL Connector is under a GPL license. If you use this in your Java application you either need to make your sourcecode public or buy a license in order to use it properly.
Check this appendix (https://choosealicense.com/appendix/) for a larger list of licenses and more details about permissions & restrictions that apply to each license.
This content is not legal advice, it’s meant to raise developer awareness regarding software licensing.