GPL linking exception

from Wikipedia, the free encyclopedia

A GPL linking exception ( German about Exemption for left ) changed the terms of the GNU General Public License (GPL) so that a new, modified version of the license is created. Similar to the GNU Lesser General Public License, it is possible to link a program library that is licensed under such conditions to a program that may be under a different license. The resulting program may be distributed under a license of your choice and you are not bound by the terms of the GPL. Only the program library itself is still under the GPL. Modified versions of the library must therefore be distributed under the GPL.

The Free Software Foundation does not prescribe a uniform text for the linking exception. The original author must therefore write the corresponding permission notice himself and should attach it to the license notice before publication. However, you should note that you need the permission of all co-authors (all programmers involved, etc.) to add this note to the license later. In most cases, the option is given to remove the linking exception if the library version has changed. This means that the more restrictive terms of the GPL apply to the resulting program after it has been linked to the library. Once the linking exception has been removed, it may not be added again later without the permission of everyone involved.

The classpath exception

When GNU Classpath is class libraries for Java runtime environments. Operation with proprietary applications would be prohibited without the linking exception . The GNU Classpath project is distributed with the following linking exception:

Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination.
As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obliged to do so. If you do not wish to do so, delete this exception statement from your version.

Linking this library dynamically or statically to other modules creates a new work based on this library. As a result, the GNU General Public License applies to the entire combined work.
As a special exception will allow the copyright holders of this library, this with independent modules to link to an executable file ( executable spread to produce), regardless of the license of these independent modules, and the resulting executable under terms of your choice to copy and, as long as each independent module is distributed under its terms and conditions . An independent module is a module that is not derived from or based on this library. If you change this library, you can add this exception to your version of the library, but you do not have to. If you don't want to do this, remove this exception from your version.

Differences to the GNU Lesser General Public License

Basically, both license models pursue the same goal. Linking with proprietary software should be made possible without the resulting program also having to be published under the GPL, but the library itself still having to be under the respective license (GPL or LGPL) - so it is a weak copyleft .

One difference is that the LGPL requires that a note about the use of the library must be attached to the resulting program and that the source code of the library must also be supplied. In addition, the license of the resulting program must not prohibit linking the program with a new version of the library. As a result, the object code of the program must be supplied if the LGPL-licensed library is not made available under a shared library mechanism. In addition, the user must be allowed to decompile or disassemble (reverse engineering) so that he can debug the new version of the library .

Such conditions are sometimes difficult to implement, for example when LGPL code is used in programs for embedded systems , and are not required with the Linking Exception. The fact that certain linking exceptions can be removed is in no way contrary to the LGPL. The LGPL provides that programmers can irrevocably submit the code to the GPL.

After all, the Linking Exception does not represent a license of its own, but only an addition to the GPL. There is also no uniform text and the required conditions and additional rights granted may vary.