Что такое лицензия GPL? Объясняем GNU General Public License
Понятное объяснение лицензии GPL: копилефт, исходный код, коммерческое использование и различия между правами на программу и услугами для WordPress.
GPL расшифровывается как General Public License. В лицензировании программ обычно имеется в виду GNU General Public License: свободная лицензия, которая позволяет запускать, изучать, изменять и распространять программу. Её главная особенность — копилефт. Распространяя произведение, на которое действует GPL, необходимо сохранять предоставленные получателям свободы и выполнять требования лицензии к исходному коду.
Лицензия GPL разрешает коммерческое использование и платное распространение. Она не требует публиковать в интернете каждое личное изменение и не предоставляет автоматически подписку на поддержку разработчика или облачный аккаунт. Эти различия важны и при установке плагина WordPress, и при создании приложения, и при передаче изменённой программы.

Что лицензия GPL означает для вашей копии
GNU GPL публикует Free Software Foundation, или Фонд свободного программного обеспечения. GNU указывает на проект, стоящий за лицензией, а GPL — её название. Английские выражения «GPL license» и «GPL licence» обозначают одно и то же: различается написание слова «лицензия». Конкретные условия зависят от версии и лицензионного уведомления, сопровождающего программу.
Слово свободная говорит о свободах, а не о гарантированной нулевой цене. За программу под GPL можно брать плату. Если вы получили копию под этой лицензией, оплата не отменяет предоставленные ею права. GNU объясняет это различие в определении свободного программного обеспечения.
Эти права позволяют выполнять несколько обычных действий:
- Запускать программу: использовать её для своих задач, в том числе в бизнесе.
- Изучать её: читать исходный код, чтобы понять, как она работает.
- Изменять её: адаптировать код под свои требования.
- Делиться ею: распространять разрешённые копии, включая изменённые версии, соблюдая применимые условия GPL.
Например, небольшая компания может вести внутренний учёт в приложении под GPL. Разработчик может изменить функцию под другой рабочий процесс. Поставщик может предлагать копии вместе с помощью в установке. Лицензия допускает эти действия, однако обязанности различаются в зависимости от того, что именно передаётся другим людям.
Поэтому прочитать лицензию полезнее, чем просто выяснить, «бесплатна» ли программа. Проверьте, что охватывает уведомление, какая версия GPL применяется и есть ли у других компонентов самостоятельные условия.
Копилефт сохраняет разрешения вместе с программой
Авторское право на код под GPL продолжает действовать. Авторы используют лицензию, чтобы предоставить разрешения на определённых условиях. Поэтому программа под GPL отличается от программы, переданной в общественное достояние.
Копилефт означает, что распространитель не может взять производное произведение, охватываемое GPL, и лишить получателей закреплённых за ним свобод. Он сохраняет возможность работать с программой для следующего получателя, а не только для первого. GNU описывает этот механизм в объяснении копилефта.
Рассмотрим условный проект: приложение для составления расписаний под GPL, в котором вы улучшили отображение часовых поясов. Изменённую копию можно использовать лично. Если вы распространяете это изменённое приложение, на которое действует GPL, нужно выполнить соответствующие требования к распространяемому произведению. Уведомление «можно использовать, но нельзя передавать другим» противоречило бы правам, которые должны получать пользователи.
Из этого не следует, что любой посторонний файл на вашем компьютере автоматически становится GPL-кодом. Образует ли код производное или объединённое произведение, на которое распространяется лицензия, зависит от его связи с GPL-программой. Само по себе нахождение на одном носителе или сервере с другим приложением вопрос не решает. Подключение библиотек и создание объединённых продуктов требуют изучения фактической архитектуры.
Использование и распространение программы — разные действия
Самый полезный вопрос: передаёте ли вы кому-либо копию программы, на которую действует GPL? Получение оплаты — отдельный вопрос.
В GPLv3 используется термин convey: он описывает действия, позволяющие другим сторонам создавать или получать копии. Лицензия прямо отличает это от взаимодействия через сеть без передачи копии. В GPLv2 используется понятие распространения. Эти определения и основные разрешения изложены в разделах 0–2 текста GPLv3.
| Условное действие | Что нужно учитывать |
|---|---|
| Запустить GPL-программу для работы компании | Коммерческое использование разрешено; сам запуск не требует публичной публикации исходников. |
| Изменить копию и оставить её для личного использования | Частные изменения не нужно размещать в интернете только потому, что они существуют. |
| Передать заказчику программу или её изменённую версию, охватываемую GPL | Применяются обязанности при распространении, включая соответствующие уведомления, лицензирование и требования к исходникам. |
| Продавать копии программы, охватываемой GPL | Получать оплату можно; получатели сохраняют применимые права по GPL. |
| Предоставить посетителям сайта доступ к серверной GPL-программе | Одно лишь сетевое взаимодействие не является convey по GPLv3; проверьте, передаётся ли посетителям также какой-либо код, охватываемый лицензией. |
Установщик, скачиваемый архив или клиентский набор кода могут изменить оценку: пользователь может получить саму программу. Аналогично передача изменённого пакета другой организации отличается от хранения копии на собственном компьютере. Таблица помогает сориентироваться, но не даёт заключения для любых отношений с подрядчиками, групп компаний или способов развёртывания.

Требует ли GPL сделать исходный код общедоступным?
GPL не устанавливает универсальную обязанность загружать каждое изменение в публичный репозиторий. При распространении программы, охватываемой лицензией, необходимо соблюдать правила предоставления исходного кода для применимой версии и способа распространения.
Есть важное уточнение: некоторые разрешённые способы с письменным предложением предоставить исходники распространяются не только на непосредственного покупателя. Например, раздел 3(b) GPLv2 описывает предложение предоставить исходный код любой третьей стороне. Поэтому утверждение «исходники всегда предоставляются только вашим клиентам» тоже слишком широкое. Проверьте выбранный способ в разделе 3 текста GPLv2.
Для распространителя практический вопрос звучит иначе: может ли человек, имеющий право на соответствующий исходный код, действительно получить правильные исходники именно этой копии? Расплывчатая ссылка на исходный проект хуже понятного порядка передачи кода, соответствующего конкретной версии.
Что такое соответствующий исходный код?
Исходный код — форма произведения, используемая разработчиками для его изменения. По GPLv3 соответствующий исходный код включает материалы, необходимые для создания, установки, запуска и изменения охватываемого объектного кода, с учётом определённых в лицензии исключений.
Представим поставщика, который изменил логику обработки данных в приложении и отправил заказчикам скомпилированную сборку. Если передать только исходники первоначального проекта, в них не будет изменения, которое получили заказчики. Предоставляемые исходники должны соответствовать этой сборке и включать необходимые материалы для её получения. Пример показывает связь между распространяемой копией и её кодом; конкретные способы передачи по-прежнему определяются применимой лицензией.
Также важно сохранять текст лицензии и необходимые уведомления. Папка с читаемым исходным кодом не заменяет эти требования. Рассматривайте исходники, уведомления и способ распространения как части одной задачи подготовки выпуска.
GPLv2 и GPLv3: сначала прочитайте уведомление
GPLv2 и GPLv3 — разные версии GNU GPL. GPLv2 появилась в 1991 году, GPLv3 — в 2007 году. Обе используют копилефт, но их формулировки и требования не взаимозаменяемы. Новая лицензия не заменяет автоматически ту, под которой уже выпущена программа.
GPLv3 содержит явно сформулированные патентные положения, обновлённые правила совместимости и требования к информации об установке в определённых обстоятельствах для User Products — продуктов пользователей в значении лицензии. Эти изменения затрагивают ситуации, выходящие за рамки обычного скачивания исходников. GNU объясняет их в кратком руководстве по GPLv3.
Требование об информации для установки особенно легко истолковать слишком широко. GPLv3 не обязывает каждого продавца программ передавать все рабочие пароли. Её раздел 6 касается охватываемого объектного кода, передаваемого в составе определённых User Products, вместе с ними либо специально для использования в них, при установленных условиях и исключениях. Это различие важно для продуктов, которые иначе могли бы не позволять получателю устанавливать изменённую версию.
Для большинства читателей первый шаг проще: найти лицензионное уведомление программы.
- GPLv2 only: разрешение ограничено этой версией, если нет другого применимого разрешения.
- GPLv2 or later: уведомление позволяет выбрать GPLv2 или более позднюю версию, опубликованную FSF.
- GPLv3 only: программа лицензируется по GPLv3 без общего разрешения выбирать более поздние версии.
Код под GPLv2-only и GPLv3 не становится автоматически совместимым в объединённом произведении. Уведомление GPLv2-or-later может дать возможность использовать GPLv3. GNU объясняет это различие в списке совместимости лицензий.
Не предполагайте наличие «or later» только по заголовку сайта, где написано GPL. Если пакет включает несколько зависимостей, проверьте и их уведомления. Разрешение использовать более позднюю версию для одного компонента не переписывает лицензии остальных зависимостей.
GPL, LGPL, AGPL и MIT решают разные задачи
Эти названия обозначают разные лицензионные условия. Понимание основных различий помогает найти нужный текст и не считать все лицензии открытого ПО одинаковыми.
| Лицензия | Главное отличие | Полезный вопрос |
|---|---|---|
| GNU GPL | Сильный копилефт для распространяемых произведений, охватываемых лицензией | Распространяем ли мы программу или объединённое произведение, на которое действует GPL? |
| GNU LGPL | Дополнительные разрешения допускают определённые сочетания с приложениями под другими лицензиями при соблюдении условий | Могут ли пользователи заменить или перелинковать LGPL-компонент так, как требуется? |
| GNU AGPL | Добавляет требование предложить исходники пользователям, удалённо взаимодействующим с изменённой версией, в соответствующих обстоятельствах | Изменяли ли мы AGPL-программу, которой люди пользуются через сеть? |
| MIT | Разрешительная лицензия с требованиями к уведомлениям, без копилефта в стиле GPL | Сохранили ли мы обязательные уведомления об авторском праве и разрешении? |
Lesser General Public License часто используется для библиотек. Она не позволяет игнорировать их лицензионные условия. Например, раздел 4 LGPLv3 содержит требования к объединённым произведениям, уведомлениям и возможности пользователя работать с изменённой библиотекой.
Affero General Public License непосредственно затрагивает удалённое взаимодействие. Раздел 13 AGPLv3 требует, чтобы изменённая версия заметно предлагала соответствующие исходники пользователям, взаимодействующим с ней удалённо через компьютерную сеть. Обычная GPLv3 не создаёт такую же обязанность лишь потому, что программа работает на сервере.
Лицензия MIT разрешает широкое повторное использование при сохранении уведомлений об авторском праве и разрешении. Код под MIT обычно можно включать в проект, охватываемый GPL, если эти условия сохранены. Это не превращает уже существующий GPL-код в MIT-код и не отменяет обязанностей по GPL для объединённого произведения.
Среди этих лицензий нет универсального победителя. Для автора выбор отражает желаемые правила дальнейшего распространения. Для пользователя существующего проекта доступные разрешения начинаются с лицензии, которую действительно предоставили правообладатели.
В каких случаях GPL ограничивает проект
Главное ограничение возникает, когда задуманные условия распространения противоречат копилефту. Если вы хотите передавать получателям исполняемый код охватываемого объединённого произведения, одновременно запрещая его дальнейшее распространение или доступ к соответствующим исходникам, GPL может не подходить для такого выпуска. Подготовку исходников и проверку совместимости зависимостей тоже нужно учитывать при планировании релиза.
Практический выбор состоит между сохранением свобод последующих получателей и определёнными ограничениями распространения. Он не мешает строить бизнес вокруг программы. Оцените этот выбор до включения GPL-компонента в продукт, который собираетесь передавать другим, чтобы не обнаружить противоречащие обязательства непосредственно перед выпуском.
Что GPL означает для WordPress, плагинов и тем
WordPress указывает, что его программное обеспечение распространяется под GPLv2 or later. На официальной странице о лицензии также изложена позиция проекта: плагины и темы являются производными произведениями. При этом признаётся юридическая неоднозначность границы производного произведения.
Поэтому GPL так часто упоминается при обсуждении расширений WordPress. Она разрешает делиться охватываемыми программами на её условиях, в том числе коммерчески. Однако название продукта или отметка на площадке не рассказывает обо всех особенностях конкретного пакета.
При выборе плагина разделяйте три вопроса:
- Авторская лицензия: какие разрешения действуют для охватываемого кода?
- Передаваемый пакет: какие файлы и ресурсы с отдельными лицензиями действительно включены?
- Услуги: кто предоставляет скачивания, обновления, поддержку и размещённые на сервере функции?
Ключ аккаунта разработчика может управлять доступом к сервису или каналу обновлений. Это отдельный вопрос от разрешений на полученный код. Сама GPL не обещает аккаунт у поставщика, платный удалённый сервис или будущую поддержку.
У требований каталогов WordPress тоже есть собственная область действия. Правила каталога плагинов требуют GPL-совместимого лицензирования размещаемого кода, данных и изображений. Это правило каталога, а не доказательство того, что любой скачиваемый архив на другой площадке имеет такое же содержимое и такие же права.
Если вас интересует, что входит в стороннюю поставку WordPress-плагина, прочитайте руководство по пакетам GPL-плагинов WordPress. В нём подробнее рассматриваются состав пакета и выбор услуг. Здесь объясняется сама лицензия, без сравнения продавцов и отдельных плагинов.
Четыре примера, которые проясняют границы
Следующие ситуации — условные примеры. Они показывают, какой факт меняет вопрос; это не отчёты о тестировании продуктов.
Магазин использует GPL-приложение внутри компании
Магазин устанавливает инструмент учёта запасов под GPL и отслеживает остатки. Он получает оплату от покупателей за физические товары. Такая коммерческая деятельность сама по себе не распространяет программу учёта. Действие с программой здесь — её запуск, который GPL разрешает и для коммерческих целей.
Магазину всё равно полезно сохранить сведения об установленной программе и её лицензии. Если позднее он передаст приложение другой организации, это новое действие потребует проверки условий распространения.
Разработчик передаёт изменённое приложение заказчику
Разработчик меняет формат отчёта в GPL-приложении и передаёт изменённое приложение клиенту. Клиент получает копию программы, поэтому необходимо выполнить применимые требования к распространению. Оплата разработки их не отменяет.
До передачи разработчику нужно определить охватываемые изменения, сохранить обязательные уведомления и подготовить предоставление соответствующих исходников. Договор может описывать работу и поддержку, но не должен обещать ограничения, противоречащие правам по GPL, которые получает клиент.
Сайт использует серверную GPL-программу
Компания изменяет программу под GPLv3 для выполнения расчётов на своём сервере. Посетители отправляют данные и получают результаты, не получая копию программы. Одно только сетевое взаимодействие не является convey по GPLv3.
Теперь изменим один факт: сайт передаёт охватываемый программный код на устройства посетителей. Возвращается вопрос о распространении. Изменим другой факт: серверная программа использует AGPLv3, и компания её изменила. Тогда становится актуальным сетевое требование AGPL к исходникам. Поэтому фразы «это сайт» недостаточно, чтобы определить применимые обязанности.
Дизайнер создаёт контент с помощью GPL-инструмента
Дизайнер использует графическое приложение под GPL и создаёт оригинальную иллюстрацию. GPL-лицензия приложения не делает иллюстрацию автоматически GPL-произведением. Важно содержимое результата: GPLv3 распространяется на вывод программы только тогда, когда сам вывод представляет собой охватываемое произведение.
Дизайнеру нужно отдельно проверить шрифты, шаблоны и ресурсы, использованные в иллюстрации. Лицензия редактора и разрешения на эти материалы — разные факты. GNU рассматривает этот принцип в ответе на вопрос о результатах работы программы.
Как использовать GPL для собственной программы
Чтобы получить GPL, не нужно покупать специальный ключ активации. Если у вас есть необходимые авторские разрешения, вы можете выпустить собственную программу под этой лицензией. Процесс описан в руководстве GNU по применению лицензий.
Сначала определите, на какой код у вас есть права. Проект может включать вклад других участников, произведения работодателя, зависимости и ресурсы с разными правами. Выбор GPL для собственных исходных файлов не разрешает менять лицензию чужих материалов.
Затем выберите версию лицензии и решите, будет ли уведомление разрешать более поздние версии. Включите полный текст лицензии и необходимые уведомления в комплект исходников. Ясно обозначьте выбор в документации проекта и подготовьте порядок предоставления исходников для конкретного способа распространения до передачи сборок.
Для условной небольшой утилиты, полностью написанной одним автором, практическая работа может быть простой: добавить файл лицензии, соответствующие уведомления и опубликовать исходники с понятными инструкциями по сборке. Более крупному проекту с зависимостями нужна проверка каждого компонента. Надписи GPL в README недостаточно, если остальные материалы пакета говорят о другом.
Короткие ответы на оставшиеся вопросы о GPL
Можно ли продавать программы под GPL?
Да. GPL допускает платное распространение охватываемых программ при соблюдении её условий. Покупатели получают применимые права по GPL, включая дальнейшее распространение. В руководстве GNU о продаже свободного ПО объясняется, почему получение оплаты и сохранение свобод совместимы.
GPL и открытый исходный код — одно и то же?
GPL — лицензия открытого ПО, однако к этой группе относятся и другие лицензии с другими условиями. Разрешительная MIT и копилефтная GPL допускают совместную работу с исходниками, но устанавливают разные правила последующего распространения.
Даёт ли GPL право использовать товарный знак проекта?
Разрешения в области авторского права на программу не решают автоматически вопросы товарных знаков. Право распространять код не обязательно разрешает заявлять, что первоначальный разработчик одобряет вашу версию. У WordPress, например, существует отдельная политика использования товарных знаков.
Доказывает ли отметка GPL безопасность скачиваемого файла?
Нет. Лицензионные условия описывают разрешения и обязанности. Они не устанавливают происхождение, целостность или качество сопровождения конкретного архива. Это отдельные проверки независимо от того, использует ли программа GPL, разрешительную или проприетарную лицензию.
Начните с копии и действия
Чтобы применить объяснение к реальному проекту, зафиксируйте лицензионное уведомление программы, определите предполагаемое действие и выясните, получает ли кто-либо охватываемый код. Затем проверьте условия соответствующей версии и способа распространения.
При покупке для WordPress отдельно проверьте нужный состав пакета и услуги. При подготовке программы к выпуску — зависимости и соответствующие исходники. Эти конкретные факты расскажут гораздо больше, чем само слово GPL.