Исключение для связывания GPL изменяет GNU General Public License (GPL) таким образом, что позволяет программным проектам, которые предоставляют библиотечный код, быть « связанными» с программами, которые их используют, без применения полных условий GPL к использующей программе. Связывание — это технический процесс связывания кода в библиотеке с использующим кодом для создания одного исполняемого файла . Он выполняется либо во время компиляции , либо во время выполнения для создания функционального машиночитаемого кода. Free Software Foundation заявляет, что без применения исключения для связывания программа, связанная с библиотечным кодом GPL, может распространяться только по лицензии, совместимой с GPL. [1] Это не было явно проверено в суде, но нарушения связывания привели к урегулированию. [2] Лицензия проекта GNU Classpath явно включает заявление на этот счет.
Многие библиотеки свободного программного обеспечения, распространяемые под лицензией GPL, используют эквивалентное исключение, хотя формулировка исключения различается. Известные проекты включают ERIKA Enterprise , [3] GNU Guile , [4] библиотеки времени выполнения GNAT , [4] GNU Classpath [5] и GCC Runtime Library Exception. [6]
Библиотеки времени выполнения компилятора также часто используют эту модификацию лицензии или эквивалентную ей, например, libgcc
библиотека в коллекции компиляторов GNU [7] , а также все библиотеки проекта Free Pascal .
В 2007 году компания Sun Microsystems выпустила большую часть исходного кода библиотек классов для проектов Java SE и Java EE под лицензией GPL версии 2 с исключением связывания Classpath [8] и использовала ту же лицензию в качестве одной из возможных лицензий для своего корпоративного сервера GlassFish [9] и для своей среды IDE NetBeans Java [10] .
Версия 3 GNU Lesser General Public License (LGPL) [11] также создана как исключение из GPL. [12]
Проект GNU Classpath представляет собой пример использования такого исключения GPL-ссылки. Библиотека GNU Classpath использует следующую лицензию:
Classpath распространяется на условиях GNU General Public License со следующими разъяснениями и особыми исключениями.
Статическое или динамическое связывание этой библиотеки с другими модулями создает комбинированную работу на основе этой библиотеки. Таким образом, положения и условия GNU General Public License распространяются на всю комбинацию.
В качестве особого исключения владельцы авторских прав на эту библиотеку дают вам разрешение на связывание этой библиотеки с независимыми модулями для создания исполняемого файла, независимо от условий лицензии этих независимых модулей, а также на копирование и распространение полученного исполняемого файла на условиях по вашему выбору, при условии, что вы также соблюдаете для каждого связанного независимого модуля условия лицензии этого модуля. Независимый модуль — это модуль, который не является производным от этой библиотеки или не основан на ней. Если вы изменяете эту библиотеку, вы можете распространить это исключение на свою версию библиотеки, но вы не обязаны это делать. Если вы не хотите этого делать, удалите это исключение из своей версии.
Таким образом, его можно использовать для запуска, создания и распространения большого класса приложений и апплетов. Когда GNU Classpath используется без изменений в качестве основной библиотеки классов для виртуальной машины, компилятора для языка Java или для программы, написанной на языке программирования Java, это не влияет на лицензирование для распространения этих программ напрямую. [5]
В то время как версия 2.1 LGPL была отдельной лицензией, текущая версия 3 LGPL основана на ссылке на GPL.
По сравнению с лицензией GNU Classpath, указанной выше, LGPL формулирует больше требований к исключению связывания: лицензиаты должны разрешать модификацию частей библиотеки, которые они используют, и обратную разработку (своего программного обеспечения и библиотеки) для отладки таких модификаций. [ необходима ссылка ]