
Sooner or later, each developer is faced with the issue of licensing their development. It is more or less clear when developing a commercial product with a closed code. But when a developer wants to distribute a program, plugin, or class library for free and with open source codes, difficulties may arise because there are a lot of licenses of this kind in nature. This article is designed to collect, organize data on licenses and isolate the most important.
UPD : translation of a small piece of the official GPL published. FAQ
habrahabr.ru/blogs/Dura_Lex/45878UPD2 : corrected and reformulated the list of compatible licenses
If you touch the world of "free" licenses, then the GNU General Public License (GPL) can be considered the main pillar and pivot. And in this article I would like to separate the licenses that fall under the GNU GPL and describe all others that do not fall under the terms of this license. The first part of the article will describe the GNU GPL itself, its brief history, other licenses that are similar to it. In the end I will give a small glossary of terms and abbreviations.
')
GNU General Public License
First I would like to clarify what GNU is. GNU stands for “GNU's not UNIX” is a recursive acronym invented by Richard Stallman, a well-known ideologue of open and free software. This name was coined for the operating system, which in the 80s was developed by Stallman. The history of GNU deserves a separate article, so I’ll get straight to the point.
The GNU General Public License or the open license agreement of the GNU is a license, the first version of which dates from February 1, 1989 (Wikipedia reports 1988, but I consider the date to be
original ). To date, there are four license options that are numbered in order of appearance.
GNU GPL v1.0
The main requirements of the GNU GPL v1.0 are the following requirements:
- the provision of source codes available for study to binary codes published with this license;
- license inheritance in the case of source code modification, that is, modified or combined with another code, as a result, must also be released under the GNU GPL license, therefore, be available for modification by anyone.
These requirements serve essentially one goal, to prevent the effect of copyright law on the distributed open source software, which prohibits the modification and use of someone else's code.
GNU GPL v2.0
The second version of the license
dates back to 1991 and proclaims (according to the wiki) the principle of "Liberty or Death" (Freedom or Death). This principle is concluded in the seventh and eighth paragraph of the agreement:
7. The Licensee is not exempt from performance of obligations in accordance with this License if, as a result of a court decision or a statement on violation of exclusive rights or in connection with occurrence of other circumstances not directly connected with violation of exclusive rights, on Licensee on the basis of a court decision contract or other basis imposed obligations that contradict the terms of this License. In this case, the Licensee shall not have the right to distribute copies of the Program, if it cannot simultaneously fulfill the conditions of this License and the obligations assigned to it in the manner indicated above. For example, if, under the terms of the license agreement, sublicensees cannot be granted the right to free distribution of copies of the Program, which they purchased directly or through third parties from the Licensee, then the Licensee must refuse to distribute copies of the Program.
If any provision of this clause is deemed invalid or inapplicable upon occurrence of specific circumstances, this clause applies except for such provision. This clause is generally applied when termination of the above circumstances or their absence.
The purpose of this clause is not to compel the Licensee to infringe a patent or claim for other property rights or to challenge the validity of such a statement. The sole purpose of this clause is to protect the integrity of the free software distribution system, which is ensured by public licensing. Many people have made their generous contribution to the creation of a large number of software that is distributed through this system in the hope of its long-term and consistent application. The licensee is not entitled to force the author to distribute the software through this system. The right to choose a software distribution system belongs exclusively to its author.
This clause 7 is intended to clearly define those objectives that pursue all other provisions of this License.
8. In the event that the distribution and / or use of the Program in certain states is limited by patent or copyright agreements, the original copyright holder distributing the Program under the terms of this License may limit the distribution area of ​​the Program, indicating only those states in whose territory distribution is permitted. Programs without restrictions due to such agreements. In this case, such an indication in respect of the territories of certain states is recognized as one of the conditions of this License. [one]
As you can see, the main motive is the following principle: the program should not be distributed if the end user cannot fully use their right to modify and distribute under the same license.
GNU Lesser GPL v2.1
This version of the license dates back to 1999 and contains one huge difference from the usual GNU GPL license: the one designed for libraries, the license allows them to be used in proprietary software. For example, the GNU C libraries are distributed under the GNU Lesser GPL v2.1 license, so that third-party developers can use them in their free or commercial software.
GNU GPL v3.0

The latest to date version of the GPL, which was released in 2007. The changes made to the license were designed to protect users of the license from patent lawsuits, and now the creators of the program cannot sue the user. GPL 3.0 prohibits the application of a license to software that is prohibited to “circumvent” by certain laws and directives (Digital Millennium Copyright Act and the European Union Copyright Directive). That is, you cannot release under the license any software that falls under the effect of these directives. Thus, GPL 3.0 ensures that any software released under its license can be freely modified, circumvented or modified.
In addition, GPL 3.0 is struggling with such a phenomenon as “tivoizatsiya”, when the device on which the software is installed under the GPL license, does not allow you to modify it for various reasons. GPL v3.0 prohibits tivization for consumer goods (leaving the possibility of tivization for medical and other important devices).
Together with GPL 3.0 there was also an updated version of the GNU Lesser GPL 3.0, which continues to differ in that it allows the use of free libraries in proprietary software.
Compatibility
Many licenses practically repeat the principles laid down in the GPL and differ, in principle, only in that they are accepted by commercial or other organizations. Below I will try to reduce such licenses under certain versions of the GPL. Compatibility means that separate parts of software with a compatible type of license can be produced in conjunction with GPL-parts and under the same GPL license.
GPL 3.0 compatible licenses only.
GNU Affero General Public License (AGPL) v3 - contains a clause stating that users who interact with the program over the network should also be able to receive the source codes;
Apache License, Version 2.0;
Educational Community License 2.0;
Freetype Project License;
Microsoft Public License (Ms-PL);
XFree86 1.1 License;
GNU GPL compatible licenses (both with v2 and v3 version)
Artistic License 2.0;
Berkeley Database License (aka the Sleepycat Software Product License);
Boost Software License;
Modified BSD license;
CeCILL version 2;
Cryptix General License;
Eiffel Forum License, version 2 - previous versions were not compatible;
Expat License;
FreeBSD license;
The iMatix Standard Function Library license;
Independent JPEG Group License;
License imlib2;
Intel Open Source License;
ISC License;
NCSA / University of Illinois Open Source License;
Netscape Javascript License;
OpenLDAP License, Version 2.7;
Perl license 5 and lower;
Public Domain;
Licenses Python 2.0.1, 2.1.1, and newer versions;
Ruby license;
Standard ML of New Jersey Copyright License;
Unicode, Inc. License Agreement for Data Files and Software;
W3C Software Notice and License;
X11 License - sometimes mistakenly called the MIT license.
Lesser GPL Compatible Licenses
eCos license version 2.0.
Vocabulary
GNU is a recursive acronym GNU's Not Unix;
GNU GPL - GNU open source license agreement;
Proprietary software - software that has limitations in use and is closed for modification, in other words "non-free software";
Tivization is a term introduced by the name of the TiVo device on which Linux stood under GPL 2.0, which was not possible to modify.
Copyleft , a term that is opposed to “copyright”, implies full access rights to the source codes of the software, which can only be used to create free software.
Sources used
[1]
TRANSLATION TO RUSSIAN GENERAL PUBLIC LICENSE GNU LANGUAGE[2]
A Quick Guide to GPLv3[3]
Unofficial Translation of the GNU GPLv3[4]
Various Licenses and Comments about ThemIn the next article, I will try to consider the philosophy of BSD licenses, what distinguishes BSD licenses from the GPL, and which licenses are incompatible with the GPL (which, therefore, can be considered as not completely open and free). In addition, I will touch on licenses that describe documentation and things other than software.