GNU General Public License (переводят как Универсальная общественная лицензия GNU, Универсальная общедоступная лицензия GNU или Открытое лицензионное соглашение GNU) — лицензия на свободное программное обеспечение, созданная в рамках проекта GNU в 1988 г., по которой автор передаёт программное обеспечение в общественную собственность[]. Её также сокращённо называют GNU GPL или даже просто GPL, если из контекста понятно, что речь идёт именно о данной лицензии (существует довольно много других лицензий, содержащих слова «general public license» в названии). Вторая версия этой лицензии была выпущена в 1991 году, третья версия, после многолетней работы и длительной дискуссии — в 2007 году. GNU Lesser General Public License (LGPL) — это ослабленная версия GPL, предназначенная для некоторых библиотек ПО. GNU Affero General Public License — это усиленная версия GPL для программ, предназначенных для доступа к ним через сеть[].
Цель GNU GPL — предоставить пользователю права копировать, модифицировать и распространять (в том числе на коммерческой основе) программы, а также гарантировать, что и пользователи всех производных программ получат вышеперечисленные права[]. Принцип «наследования» прав называется «копилефт» (транслитерация c англ. copyleft) и был придуман Ричардом Столлманом. По контрасту с GPL, лицензии проприетарного ПО «очень редко дают пользователю такие права и обычно, наоборот, стремятся их ограничить, например, запрещая восстановление исходного кода»[].
Согласно подготовленным Фондом разъяснениям по применению лицензии GNU GPL к конкретным лицензируемым программам (эти разъяснения приложены к размещенному на сайте Фонда тексту лицензии), лицензия должна в электронной форме присоединяться к компьютерной программе[].
Лицензируя работу на условиях GNU GPL, автор сохраняет за собой авторство].
GNU GPL не позволяет включать программу в проприетарное ПО. Если данная программа является библиотекой, вероятно, лучшим будет разрешить проприетарному ПО линковаться с ней. Для данной цели необходимо использовать GNU Lesser General Public License вместо GPL[].
GPL предоставляет получателям компьютерных программ следующие права, или «свободы»[6]: свободу запуска программы с любой целью; свободу изучения того, как программа работает, и её модификации (предварительным условием для этого является доступ к исходному коду); свободу распространения копий как исходного, так и исполняемого кода; свободу улучшения программы, и выпуска улучшений в публичный доступ (предварительным условием для этого является доступ к исходному коду).
В общем случае распространитель программы, полученной на условиях GPL, либо программы, основанной на таковой, обязан предоставить получателю возможность получить соответствующий исходный код.
Текст GNU GPL состоит из нескольких пронумерованных разделов. Ниже приведена схема версии 2.0 лицензии. Эта схема не имеет никакой юридической силы и служит только для краткого ознакомления. Определения (первый абзац) Определение термина «программа» (второй абзац) Область действия лицензии Право на копирование и распространение Изменение программы (первый абзац) Право на изменения при соблюдении следующих условий: a) добавление информации об изменении в модифицированных файлах; b) лицензирование модифицированных версий на условиях GNU GPL; c) условное требование интерактивного вывода информации об авторских правах и отсутствии гарантии. (абзацы 2—4) Уточнение термина «производная работа» Требование предоставления исходного кода (первый абзац) Возможные варианты распространения исполнимого кода: a) распространение вместе с исходным кодом, или b) распространение с гарантией предоставления исходного кода, или c) (для некоммерческого использования) распространение вместе с такой гарантией, полученной от третьего лица. (второй абзац) Определение термина «исходный код» (третий абзац) Достаточность одинакового доступа для копирования исполнимого и исходного кодов Прекращение действия лицензии при нарушении её условий Акты, означающие принятие лицензии Запрещение дополнительных ограничений при дальнейшем распространении Внешние ограничения не снимают обязательства выполнять условия лицензии Возможность географических ограничений Будущие версии GNU GPL Запросы на исключения из правил Отказ от предоставления гарантий Отказ от ответственности
Использование копилефта накладывает определённые ограничения на объединение работ под GPL и другими свободными (в первую очередь, копилефтными) лицензиями в производных работах.
GPLv2 несовместима с лицензиями Mozilla Public License (MPL), Common Development and Distribution License (CDDL), Apache Software License и некоторыми другими.
GPLv3 была сделана совместимой с лицензией Apache, однако с MPL и её производными она несовместима[7]. Работы под MPL часто одновременно лицензируются и под GPL, и под LGPL (например, код Mozilla Firefox), что частично решает проблему.
Известным примером несовместимости GPL с другой лицензией является невозможность включения файловой системы ZFS, выпущенной Sun Microsystems под CDDL, в ядро Linux, выпущенное под GPLv2.
Любая несвободная лицензия несовместима с GPL.
GNU GPL требует распространения с бинарными файлами (в том числе неизменными) исходного кода или письменного обязательства его предоставить (своего или чужого; способы зависят от версии лицензии). Некоторые авторы считают, что это требование непривычно для отдельных пользователей и разработчиков, и не является для них очевидным и понятным[].
Иногда у авторов возникают затруднения в выборе того, что считать исходным кодом для цифровых представлений аналоговых данных: музыкальных записей, видео с видеокамеры, фотографических изображений. Обычно это происходит при использовании сжатия с потерями или многократном преобразовании (например, цифровая запись игры на пианино по нотам или пения). Например, под вопросом свободность звуковой дорожки под лицензией CC BY-SA (не требующей распространять исходный код), если её компоненты недоступны под свободной лицензией отдельно, так как из них нельзя собрать такую же или другую звуковую дорожку.