GPL linking exception
A GPL linking exception modifies the GNU General Public License (GPL) in a way that enables software projects which provide library code to be "linked to" the programs that use them, without applying the full terms of the GPL to the using program. Linking is the technical process of connecting code in a library to the using code, to produce a single executable file. It is performed either at compile time or run-time in order to produce functional machine-readable code. There is a public perception, so far unsupported by any legal precedent or citation, that without applying the linking exception, a program linked to GPL library code may only be distributed under a GPL-compatible license. The license of the GNU Classpath project explicitly includes a statement to that effect.
Many free software libraries which are distributed under the GPL use an equivalent exception, although the wording of the exception varies. Notable projects include ERIKA Enterprise, GNU Guile, the run-time libraries of GNAT, GNU Classpath and the famous GCC Runtime Library Exception.
In 2007, Sun Microsystems released most of the source code to the class libraries for the Java SE and Java EE projects under version 2 of the GPL license plus the Classpath linking exception, and used the same license as one possible license for their enterprise server GlassFish and for their NetBeans Java IDE.
Version 3 of the GNU Lesser General Public License (LGPL) is likewise constructed as an exception to the GPL.
The classpath exception
The GNU Classpath project provides an example of the use of such a GPL linking exception. The GNU Classpath library uses the following license:
- Classpath is distributed under the terms of the GNU General Public License with the following clarification and special 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.
As such, it can be used to run, create and distribute a large class of applications and applets. When GNU Classpath is used unmodified as the core class library for a virtual machine, compiler for the Java language, or for a program written in the Java programming language it does not affect the licensing for distributing those programs directly.
The GNU Lesser General Public License
While version 2.1 of the LGPL was a standalone licence, the current LGPL version 3 is based on a reference to the GPL.
Compared to the GNU Classpath license above, the LGPL formulates more requirements to the linking exception: you must allow modification of the portions of the library you use and reverse engineering (of your program and the library) for debugging such modifications.
- Golden, Bernard (2005), "Chapter 3. Open Source Risks", Succeeding with Open Source, Addison-Wesley, p. 44, ISBN 978-0-321-26853-2
- "Erika Enterprise Open-Source RTOS". Linux Foundation.
- Stallman, Richard. Various Licenses and Comments about Them Archived August 15, 2000, at the Wayback Machine.. Free Software Foundation. Published on 2007-05-17. Retrieved on 2007-05-18.
- Classpath::License. Free Software Foundation. 2007-04-23. Retrieved on 2007-05-18.
- GCC Runtime Library Exception. Free Software Foundation. 2009-03-31. Retrieved on 2011-10-18.
- Text of the GCC license gcc code repository. 2009-09-24. Retrieved on 2010-01-19.
- "Open-Source Java Project Overview". Sun Microsystems. Retrieved 2007-05-22.
- Glassfish license, 2008-03-27, retrieved 2008-03-27
- Netbeans license. 2008-03-27. Retrieved on 2008-03-27.
- GNU Lesser General Public License, Version 3. 2007-06-29. Retrieved on 2007-10-19.
- Guide to the second draft of LGPLv3. 2007-04-03. Retrieved on 2007-05-10.