Free open source software licenses

The defining characteristic of free open source software is a free license. A free license is a license that allows to use the software for any purpose, to modify it and to distribute original and modified versions of the software. While any license that meets these requirements is a free license, there may be some other requirements imposed by various free licenses, which affect the ways the software can be distributed and combined with other software.

Free software licenses can be divided into two major groups: copyleft, or protective licenses, and permissive licenses. The difference between these groups is whether modified versions of the software are required to carry the same license or not. Copyleft licenses require the derivatives to be distributed under the same free license, while permissive licenses allow the derivatives to be distributed under a different free license, or under a nonfree license.

Permissive licenses

Permissive licenses include licenses such as MIT, BSD, ISC and zlib licenses. These are very simple licenses and the only limitation they impose is that they prohibit claiming the authorship of the original program.

Another widely used permissive license is Apache 2.0 license. Unlike the licenses mentioned before, it also has additional restrictions that serve to prevent patent trolling.

The main advantage of permissive licenses is high license compatibility, which allows combination with software released under different license, free or nonfree. At the same time, however, they allow anyone to use the code for their own projects without having to contribute anything back, which is considered unacceptable by some software developers.

Copyleft licenses

By contrast, copyleft licenses require that any derivatives have the the same license. This motivates developers to contribute back to the original software, but creates practical problems when combining the software with the code released under a different license.

The most widely use copyleft license is GPL. It requires that all modified versions of the software are also released under GPL, and that access to the source code is provided to all users of the software. It comes in two different editions: version 2 and version 3, which are not compatible with each other unless an explicit conversion clause such as "GPL version 2 or later" is given.

Another widely used copyleft license is LGPL, which is a relaxed version of GPL that allows combining the software with the code released under a different license, but requires that all modifications of the code itself are released under LGPL or GPL.

Another copyleft license is AGPL, which is GPL with additional requirement that all users that interact with the software by means of a network are also granted access to the source code.

There are also other copyleft licenses, such as CDDL, MPL, CeCILL and many others. Most of these are not compatible with each other and with GPL, but some have explicit relicensing or compatibility clauses that allow for compatibility.

Available as video here