AGPL¶
AGPL (GNU Affero General Public License, GNU AGPL) — это свободная лицензия на программное обеспечение с колёр-лефт (copyleft), разработанная Фондом свободного программного обеспечения (FSF) как расширение GNU General Public License (GPL) версии 3. Основное отличие AGPL от GPL заключается в дополнительном требовании, касающемся программ, доступных через компьютерную сеть: лицензия обязывает распространять исходный код изменённой версии программы всем пользователям, которые взаимодействуют с ней удалённо (например, через веб-интерфейс).
¶История
AGPL была создана для устранения «лазейки в сети» (network loophole) в GPL. Стандартная GPLv3 требует предоставления исходного кода только тем, кто получает копию программы (например, при установке, скачивании или распространении). Однако если программа работает на сервере и пользователи взаимодействуют с ней только через сеть (без прямой передачи копии), GPL не обязывала раскрывать код серверной части. Это позволяло компаниям использовать и модифицировать GPL-программы для веб-сервисов, не публикуя изменения.
Первая версия лицензии, GNU Affero General Public License версии 1 (AGPLv1), была выпущена в 2002 году организацией Affero Inc. для своего проекта — веб-приложения для ведения блогов. В 2007 году, после выхода GPLv3, FSF выпустила AGPLv3, которая была приведена в соответствие с GPLv3 и стала официальной лицензией FSF. AGPLv3 является прямой наследницей AGPLv1 и GPLv3, при этом она совместима с GPLv3 только в определённых условиях (см. раздел «Совместимость»).
¶Основные положения
AGPLv3, как и GPLv3, является лицензией с сильным колёр-лефт. Это означает, что любое производное произведение (модифицированная версия программы) должно распространяться под той же лицензией AGPLv3, если оно распространяется (передаётся третьим лицам). Ключевое дополнение AGPLv3 содержится в разделе 13.
¶Раздел 13: Remote Network Interaction (Удалённое сетевое взаимодействие)
Раздел 13 гласит: «Несмотря на любые другие положения настоящей Лицензии, если вы модифицируете Программу, ваша модифицированная версия должна предоставлять всем пользователям, взаимодействующим с ней удалённо через компьютерную сеть (например, через веб-сервер), возможность получать исходный код соответствующей версии с сервера, на котором она работает, стандартными средствами, без дополнительной платы, и без каких-либо ограничений, кроме тех, которые налагаются самой Лицензией».
На практике это означает, что если вы запускаете модифицированную версию AGPL-программы на веб-сервере и пользователи обращаются к ней через браузер или API, вы обязаны предоставить им полный исходный код вашей модифицированной версии (включая все изменения) — либо через веб-интерфейс (например, ссылку на скачивание), либо иным способом, указанным в лицензии.
¶Другие ключевые положения
- Авторское право: Лицензия защищает авторские права разработчика, предоставляя пользователям права на использование, копирование, модификацию и распространение программы при соблюдении условий.
- Распространение: Если вы распространяете копии программы (например, продаёте, дарите, публикуете в открытом доступе), вы обязаны предоставить исходный код и сохранить лицензионные уведомления.
- Патентные права: AGPLv3 содержит явный патентный грант от авторов, защищающий пользователей от патентных исков в отношении программы.
- Совместимость с GPLv3: AGPLv3 и GPLv3 не являются полностью совместимыми. Если вы комбинируете код под AGPLv3 с кодом под GPLv3, полученное произведение должно распространяться под AGPLv3 (так как AGPLv3 содержит более строгие требования). Однако код под GPLv3 может быть включён в проект под AGPLv3, если это не нарушает условий GPLv3. На практике это означает, что проекты под GPLv3 не могут включать код под AGPLv3 без перелицензирования, если они не хотят переходить на AGPLv3.
¶Отличия от GPL (GNU General Public License)
Основное отличие — это требование к программам, работающим по сети. GPLv3 не требует раскрытия кода для серверных приложений, если копия программы не передаётся пользователю. AGPLv3 закрывает эту «лазейку», делая лицензию более «вирусной» для веб-сервисов.
| Характеристика | GPLv3 | AGPLv3 |
|---|---|---|
| Требование к серверному коду | Нет | Да (раздел 13) |
| Совместимость с AGPLv3 | Нет (AGPLv3 несовместима с GPLv3) | Да (сама с собой) |
| Основная область применения | Десктопные, мобильные, библиотечные приложения | Веб-приложения, SaaS, облачные сервисы |
| Сложность соблюдения | Средняя | Высокая (из-за сетевого требования) |
¶Применение
AGPLv3 используется в проектах, где разработчики хотят гарантировать, что любые улучшения или модификации их кода, даже если они используются только на сервере, останутся свободными и доступными сообществу. Это особенно актуально для:
- Веб-приложений: Системы управления контентом (CMS), CRM, ERP, системы электронной коммерции.
- Библиотек и фреймворков: Библиотеки, которые могут быть включены в серверные приложения.
- Инструментов для разработки: Системы управления базами данных, серверы приложений, инструменты для DevOps.
¶Примеры проектов под AGPLv3
- MongoDB (до 2018 года, когда перешла на собственную лицензию SSPL, основанную на AGPLv3, но с дополнительными ограничениями для облачных провайдеров).
- Nextcloud — платформа для облачного хранения и совместной работы.
- GitLab (Community Edition) — система управления репозиториями кода и CI/CD.
- Rocket.Chat — платформа для обмена сообщениями.
- Element (Matrix-клиент) — децентрализованный мессенджер.
- Grafana (до версии 7.0, когда перешла на AGPLv3).
- WooCommerce (до 2023 года, когда перешла на GPLv3).
¶Критика
AGPLv3 подвергается критике со стороны коммерческих организаций, особенно тех, кто предоставляет программное обеспечение как услугу (SaaS). Основные претензии:
- Сложность соблюдения: Требование раскрывать код всех серверных модификаций может быть обременительным для компаний, которые хотят сохранить коммерческую тайну или конкурентное преимущество.
- Несовместимость с GPLv3: Это ограничивает возможность комбинирования кода под разными свободными лицензиями, что усложняет создание крупных проектов.
- «Вирусный» эффект: AGPLv3 считается одной из самых «вирусных» свободных лицензий, так как она распространяется на все производные работы, включая те, которые используются только на сервере.
- Неопределённость в отношении API: Возникают споры о том, что именно считается «взаимодействием» через сеть — например, является ли вызов REST API достаточным основанием для требования раскрытия кода.
Некоторые разработчики и компании предпочитают использовать более мягкие лицензии, такие как MIT, Apache 2.0 или LGPL, чтобы избежать обязательств AGPLv3. Тем не менее, AGPLv3 остаётся важным инструментом для сообществ, стремящихся к максимальной открытости и защите свобод пользователей даже в контексте облачных вычислений.
¶Интересные факты
- AGPLv3 была разработана в ответ на рост популярности модели SaaS, где компании могли использовать GPL-код, не публикуя свои изменения.
- Название «Affero» происходит от названия компании Affero Inc., которая первой предложила эту лицензию.
- AGPLv3 является официальной лицензией Фонда свободного программного обеспечения (FSF).
- Некоторые крупные компании, такие как Google и Amazon, запрещают использование AGPL-кода в своих проектах из-за юридических рисков, связанных с раскрытием исходного кода.
¶Источники
- GNU Affero General Public License v3.0 (текст лицензии, GNU.org)
- Free Software Foundation: "Why the Affero GPL" (статья на gnu.org)
- "A Practical Guide to GPL Compliance" (Heather Meeker, 2018)
- "Open Source Licensing: Software Freedom and Intellectual Property Law" (Lawrence Rosen, 2004)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


