
GNU General Public License (GPL) — одна из самых известных лицензий открытого программного обеспечения. Она требует, чтобы при использовании, изменении или распространении кода исходный код оставался открытым и распространялся на тех же условиях. GPL считается одной из самых влиятельных лицензий в мире open-source.
Лицензия на открытое программное обеспечение определяет правила, по которым автор разрешает другим использовать и модифицировать свой код — как если бы делились рецептом и разрешали его дорабатывать. GPL обязывает публиковать любые улучшенные версии «рецепта» и распространять их по тем же правилам. Благодаря этому требованию сообщество постоянно получает доступ к новым улучшениям.
В основе GPL лежит концепция «copyleft» — взаимный авторский контроль: если вы используете или изменяете открытый код, любые ваши изменения при распространении также должны быть открытыми, а исходные уведомления об авторских правах и тексты лицензии должны сохраняться.
Ключевые принципы:
Ядро Linux уже много лет использует GPL-2.0 (на 2025 год), что делает его одним из самых известных примеров применения GPL.
GPL определяет, можно ли распространять ПО с open-source кодом в закрытом виде или нужно открывать исходный код при распространении. В Web3 требования GPL могут распространяться на node-клиенты, кошельки, фронтенды и смарт-контракты.
Например, если ваш dApp frontend использует компонент под GPL и вы распространяете исполняемую версию, возможно, потребуется опубликовать исходный код frontend и сохранить все оригинальные уведомления. Это способствует прозрачности, но ограничивает закрытые бизнес-модели.
В on-chain среде открытый исходный код повышает возможности аудита и безопасность. Многие команды публикуют критический код для доверия, но тщательно оценивают совместимость лицензий с продуктовой стратегией.
Смарт-контракты обычно пишутся на Solidity, а лицензия указывается в начале файлов через SPDX-License-Identifier (например, «SPDX-License-Identifier: GPL-3.0-or-later»). Требования GPL к взаимной лицензии создают ряд нюансов для смарт-контрактов:
Первое — распространение: компиляция и деплой контракта в сети обычно считаются публичным распространением. Если ваш контракт включает или модифицирует GPL-код, публичный деплой может потребовать открытия исходного кода изменений. Оцените, считается ли это распространением, на этапе проектирования.
Второе — связывание и производные работы: наследование контрактов или вызовы библиотек часто считаются созданием производных работ. Если вы наследуете контракт под GPL, ваш распространяемый контракт должен соответствовать этой лицензии.
Третье — распространенная практика: многие команды выбирают более свободные лицензии, такие как MIT или Apache для основных контрактов, чтобы снизить будущие обязательства. Если используется GPL, размещайте полный исходный код, уведомления об авторских правах и инструкции по сборке в репозитории для аудита и повторного использования.
Главное отличие между GPL, MIT и Apache — степень взаимных требований.
Вывод: выбирайте GPL для максимального открытого сотрудничества и обязательного обмена улучшениями; MIT или Apache — для большей гибкости между открытой и закрытой коммерциализацией.
Шаг 1: Разместите файл LICENSE (полный текст GPL) в корневом каталоге репозитория и укажите лицензию в README.
Шаг 2: Добавьте заголовок SPDX-License-Identifier (например, «SPDX-License-Identifier: GPL-3.0-or-later») в начало каждого исходного файла для автоматического определения лицензии инструментами.
Шаг 3: Сохраняйте оригинальные уведомления об авторских правах и лицензии; четко отмечайте свои изменения с датой, автором и кратким описанием.
Шаг 4: Предоставьте способ получения исходного кода для любых распространяемых исполняемых файлов — например, публикуйте исходный код, скрипты сборки и документацию по зависимостям для воспроизводимости.
Шаг 5: Проверьте сторонние зависимости на совместимость лицензий; если нужно, используйте LGPL (лучше подходит для библиотек).
Шаг 6: Проведите аудит соблюдения требований перед запуском; обратитесь к юристу, если планируется коммерческое использование, чтобы снизить риски.
Основные версии — v2 и v3:
«Or later» и «Only»: выбор «GPL-3.0-or-later» позволяет использовать будущие версии для гибкости; «only» фиксирует версию для управления совместимостью.
LGPL предназначена для библиотек (разрешает связывание на более свободных условиях), а AGPL распространяет open-source требования на ПО, предоставляемое через сеть — backend и frontend Web3 должны учитывать триггеры AGPL.
Да — GPL допускает коммерческое использование. Однако при распространении производных работ с GPL-кодом вы обязаны открывать исходный код и сохранять все уведомления. Популярные стратегии для бизнеса:
Частые заблуждения:
Риски включают нарушение прав и споры о соблюдении, что может повлиять на финансирование, листинг или партнерство. Проекты, связанные с финансами или безопасностью контрактов, должны заранее завершать проектирование лицензии и аудит исходного кода.
Если ваша цель — развитие сотрудничества, возврат улучшений и поддержание возможности аудита, GPL — надежный выбор. Для большей свободы в закрытых или двойных моделях лицензирования используйте MIT или Apache. Обеспечивайте последовательное лицензирование для смарт-контрактов и frontend — размещайте LICENSE-файлы и SPDX-заголовки в репозиториях, стандартизируйте распространение исходного кода. Учитывайте различия версий, совместимость зависимостей и то, считается ли ваш сценарий распространением или производной работой. Всегда проводите аудит соблюдения и консультируйтесь с юристами перед коммерциализацией. Четкая стратегия лицензирования обеспечивает сотрудничество и соответствие требованиям в экосистеме Web3.
Да — но вы обязаны опубликовать производный код как open-source. «Вирусная» модель GPL означает, что если вы создаете продукт на базе GPL-кода и продаете его, вы должны публиковать исходный код на тех же условиях. Это делает GPL несовместимой с закрытыми бизнес-моделями. Если бизнес строится на приватности кода, используйте библиотеки под Apache или MIT.
Главный риск — возможные претензии от авторов за нарушение авторских прав. Несмотря на развитие законодательства о смарт-контрактах, суды в ряде стран признают обязательность GPL — нарушение может привести к взысканию убытков. При поиске инвестиций или продаже инвесторы могут опасаться рисков GPL. Привлекайте юристов заранее или выбирайте менее ограничительные лицензии для снижения рисков.
Это распространенное описание «вирусного» эффекта GPL. Если вы включаете GPL-код в проект — даже косвенно — весь проект может попасть под требования GPL (в ряде случаев). Для разработчиков, желающих сохранить приватность кода, такое «принудительное раскрытие» воспринимается как «заражение». Это не недостаток, а часть концепции — для защиты принципов свободного ПО.
Это зависит от способа взаимодействия и версии GPL. Если вызовы API происходят динамически (например, через внешние сервисы), обычно открывать исходный код не требуется. Однако статическое связывание или модификация GPL-кода потребуют публикации исходного кода проекта под GPL. Проконсультируйтесь с юристом по open-source, чтобы определить, что считается «производной работой» и избежать юридических рисков.
Вам нужно соблюдать обе лицензии — это может быть сложно. GPL требует открывать исходный код всех производных работ; MIT допускает закрытое использование — эти условия конфликтуют. На практике проект должен соответствовать «более строгой» лицензии (GPL) для совместимости. Лучше не смешивать лицензии или явно разделять модули по типу лицензии для снижения рисков.


