first, we use a fairly intuitive and clear picture of a concerned person to divide various protocols: the differences between open source licenses GPL, BSD, MIT, Mozilla, Apache and LGPL
license.jpeg
The following is a brief introduction of the above protocols:
BSD open source protocol
BSD open source protocol is a protocol that gives users great freedom. Basically, users can "do whatever they want", use and modify the source code freely, and redistribute the modified code as open source or proprietary software.
However, the premise of "doing whatever you want" When you publish the code using BSD protocol, or develop your own product on the basis of BSD protocol code, you need to meet three conditions:
If the redistributed product contains source code, the source code must contain the BSD protocol in the original code.
if you redistribute only the binary class library/software, you need to include the BSD protocol in the original code in the document and copyright notice of the class library/software.
you can't use the name of the author/organization of the open source code and the name of the original product for marketing.
BSD code encourages code enjoyment, but it needs to respect the copyright of the code author. BSD is a protocol that is friendly to business integration because it allows users to modify and redistribute codes, and also allows users to use or develop commercial software distribution and sales on BSD codes. Many companies and enterprises prefer BSD protocol when choosing open source products, because they can completely control the code of these third parties and can modify or redevelop it when necessary.
Apache license 2.
Apache license is a protocol adopted by Apache, a famous non-profit open source organization. Similar to BSD, this protocol also encourages the code to enjoy and respect the copyright of the original author, and also allows the code to be modified and then released (as open source or commercial software). The conditions that need to be met are similar to BSD:
You need to give the user of the code an Apache Licence
If you modify the code, you need to explain it in the file that needs to be modified.
in the extended code (modified code and code derived from the source code), it is necessary to include the agreements, trademarks, patent notices and other descriptions specified by the original author in the original code.
if the redistributed product contains a Notice file, Apache Licence is required in the Notice file. You can add your own license in Notice, but it can't be shown as a change to Apache Licence.
Apache license is also a business-friendly license. Users can also modify the code when necessary to meet the needs and publish/sell it as an open source or commercial product.
GPL
Linux, which we are familiar with, adopts GPL. GPL protocol is very different from BSD, Apache Licence and other licenses that encourage code reuse. The starting point of GPL is the open source/free use of code and the open source/free use of reference/modification/derivative code, but the modified and derivative code is not allowed to be published and sold as closed source commercial software. This is why we can use all kinds of free linux, including linux of commercial companies and all kinds of free software developed by individuals, organizations and commercial software companies on linux.
the main content of the GPL protocol is that as long as a product of the GPL protocol is used in a software ("use" refers to class library reference, modified code or derivative code), the software product must also adopt the GPL protocol, which is both open source and free. This is the so-called "infectivity". The products of GPL protocol can be used as a single product without any problems, and they can also enjoy the advantage of free.
because GPL strictly requires that software products using GPL class library must use GPL protocol, open source code using GPL protocol, commercial software or departments with confidentiality requirements on code are not suitable for integration/adoption as the basis of class library and secondary development.
other details, such as the need to accompany the GPL protocol when redistributing, are similar to BSD/Apache.
LGPL
LGPL is an open source protocol of GPL designed mainly for class libraries. It is different from the GPL requirement that any software using/modifying/deriving the GPL class library must adopt the GPL protocol. LGPL allows commercial software to use the LGPL class library by means of class library reference (link) without the code of open source commercial software. This enables the open source code using LGPL protocol to be referenced, distributed and sold by commercial software as a class library.
however, if the code or derivative of the LGPL protocol is modified, all modified codes, extra codes and derivative codes involved in the modified part must adopt the LGPL protocol. Therefore, the open source code of LGPL protocol is very suitable to be cited by commercial software as a third-party class library, but it is not suitable for commercial software that wants to make secondary development based on LGPL protocol code through modification and derivation.
GPL/LGPL both protect the intellectual property rights of the original author and prevent anyone from copying and developing similar products by using open source code.
MIT
MIT is a license agreement as broad as BSD, and the author only wants to keep the copyright without any other restrictions. In other words, you must include a statement of the original license agreement in your distribution. Whether you distribute it in binary or source code,
MPL
MPL is short for The Mozilla Public License, which was designed by the Mozilla team of Netscape for its open source software project in early 1998. The most important reason for the appearance of MPL license is that Netscape believes that GPL license does not well balance the developer's demand for source code and the benefits they get from using source code. Compared with the famous GPL license and BSD license, MPL is the same as them in many aspects of rights and obligations (because they are all open source software licenses recognized by OSIA). However, compared with MPL, there are several significant differences:
◆ Although MPL requires that the modification of the source code released by MPL license should be re-licensed in the form of MPL license, so as to ensure that others can enjoy the source code under the terms of MPL. However, in the MPL license, the definition of "distribution" is "file distributed by source code", which means that MPL allows an enterprise to add an interface to its existing source code base. In addition to the source code of the interface program being licensed externally in the form of MPL license, the source code in the source code base can be forced to be licensed externally without MPL license. All these have left a gap for learning from other people's source code for their own commercial software development.
◆ Paragraph 7 of Article 3 of the MPL license allows the licensee to mix the source code obtained through the MPL license with other types of codes of his own to obtain his own software program.
◆ Regarding the attitude towards software patents, MPL license does not explicitly express opposition to software patents like GPL license, but it explicitly requires the source code provider not to provide the source code that has been protected by patents (unless he is the patentee and licenses these source codes to the public free of charge in writing), nor to apply for patents related to these source codes after licensing them in the form of open source licenses.
◆ Definition of source code
In the MPL (version 1.1) license, the definition of source code is: "Source code refers to the most preferred form for modifying works, which includes all source programs of all modules, plus the definition of relevant interfaces, plus the' original' (the original is' script') that controls the installation and compilation of executable works, or it is not significantly different from the original source code.
◆ Article 3 of the MPL license has a special provision on the description of source code modification, that is, all redistributors are required to have a special file describing the time and method of modifying the source code program.