GNU Affero General Public License
GNU Affero General Public License (сокр. GNU AGPL, AGPLv3, AGPL) — это лицензия на свободное программное обеспечение, разработанная Фондом свободного программного обеспечения (Free Software Foundation, FSF) на основе GNU General Public License (GPL) версии 3. Основное отличие AGPL от GPL заключается в требовании предоставлять исходный код программы пользователям, взаимодействующим с ней через компьютерную сеть (например, при использовании веб-приложений). AGPL является копилефт-лицензией, то есть требует, чтобы производные работы распространялись на тех же условиях.
История
Предпосылки создания
Классическая GPLv2 (1991) и GPLv3 (2007) содержали требование распространять исходный код только тем, кто получает копию программы (например, при установке или скачивании). Однако с развитием интернета и модели «программное обеспечение как услуга» (SaaS) возникла ситуация, когда компания может модифицировать свободную программу, запустить её на своём сервере и предоставлять к ней доступ через сеть, не распространяя при этом копии программы конечным пользователям. Таким образом, пользователи, взаимодействующие с программой удалённо, не получали исходный код, что противоречило духу свободного ПО.
Первая версия: AGPLv1
Первая версия лицензии, Affero General Public License (AGPLv1), была написана в 2002 году Генри Пулом (Henry Poole) из компании Affero, Inc. для проекта, связанного с веб-сервисами. AGPLv1 была основана на GPLv2 и содержала дополнительное условие (раздел 2d), которое обязывало распространителя программы, предоставляющего к ней доступ через сеть, предоставлять пользователям исходный код. Однако эта версия не была официально одобрена FSF, так как не была совместима с GPLv2.
AGPLv3: современная версия
В 2007 году, после выхода GPLv3, FSF решила создать новую версию AGPL, совместимую с GPLv3. Работа велась под руководством FSF, и в ноябре 2007 года была опубликована GNU Affero General Public License версии 3 (AGPLv3). Она была официально принята FSF и стала частью семейства лицензий GNU. AGPLv3 полностью совместима с GPLv3: программы, распространяемые под AGPLv3, можно комбинировать с программами под GPLv3, при условии, что результат будет распространяться под AGPLv3.
Основные положения
AGPLv3 является копилефт-лицензией, основанной на GPLv3. Она включает все условия GPLv3, но добавляет одно ключевое требование, касающееся удалённого сетевого взаимодействия.
Копилефт и распространение
Как и GPL, AGPLv3 гарантирует четыре основные свободы:
- Свобода запускать программу для любых целей.
- Свобода изучать, как программа работает, и изменять её (для этого требуется доступ к исходному коду).
- Свобода распространять копии программы.
- Свобода улучшать программу и публиковать свои улучшения (для этого требуется доступ к исходному коду).
При распространении программы (например, при передаче копии другому лицу) лицензиат обязан предоставить исходный код и сохранить условия лицензии.
Сетевое взаимодействие (Section 13)
Главное нововведение AGPLv3 содержится в разделе 13 (Section 13). Оно гласит: если вы модифицируете программу и предоставляете удалённый доступ к ней через компьютерную сеть (например, через веб-сервер), то вы обязаны предоставить всем пользователям, взаимодействующим с программой через сеть, исходный код вашей модифицированной версии. Это условие действует независимо от того, распространяете ли вы копии программы традиционным способом. Таким образом, AGPLv3 закрывает «лазейку SaaS», которая существовала в GPL.
Совместимость с GPLv3
AGPLv3 и GPLv3 совместимы. Это означает, что код, распространяемый под GPLv3, можно включать в проект, который распространяется под AGPLv3, и наоборот, при условии, что результирующий продукт распространяется под AGPLv3. Однако код под AGPLv3 нельзя включать в проект, распространяемый только под GPLv3, так как GPLv3 не содержит требования о раскрытии кода при сетевом использовании.
Отличия от GPL
Основное различие между AGPLv3 и GPLv3 заключается в условии о сетевом взаимодействии.
| Характеристика | GPLv3 | AGPLv3 |
|---|---|---|
| Раскрытие исходного кода | Требуется только при распространении копий программы (например, при продаже, передаче, скачивании). | Требуется как при распространении копий, так и при предоставлении удалённого доступа к программе через сеть. |
| Использование в SaaS | Не требует раскрытия кода для пользователей, взаимодействующих с программой через сеть. | Требует раскрытия кода для всех пользователей, взаимодействующих с программой через сеть. |
| Совместимость | Совместима с AGPLv3 (односторонне: AGPLv3-код можно использовать в GPLv3-проектах, но не наоборот). | Совместима с GPLv3 (двусторонне, при условии распространения результата под AGPLv3). |
| Основная цель | Защита свобод пользователей при распространении ПО. | Защита свобод пользователей при распространении ПО и при использовании ПО через сеть. |
Применение
AGPLv3 используется в проектах, разработчики которых хотят гарантировать, что их код останется свободным, даже если он будет использоваться в качестве веб-сервиса. Это особенно актуально для:
- Веб-приложений и фреймворков: Например, серверная часть социальных сетей, систем управления контентом (CMS), CRM-систем.
- Библиотек и компонентов для веб-сервисов: Если библиотека используется в серверной части, её лицензия AGPLv3 обязывает раскрыть код всего приложения.
- Проектов, стремящихся к максимальной открытости: Разработчики, которые хотят, чтобы любые улучшения их кода, даже используемые в закрытых сервисах, были возвращены сообществу.
Примеры известных проектов под AGPLv3
- MongoDB (до смены лицензии на Server Side Public License в 2018 году). Ранее использовала AGPLv3.
- Nextcloud — платформа для облачного хранения и совместной работы.
- GitLab Community Edition (CE) — система управления репозиториями и DevOps-циклом.
- Mattermost — платформа для обмена сообщениями.
- Rocket.Chat — платформа для обмена сообщениями.
- SuiteCRM — система управления взаимоотношениями с клиентами (CRM).
- Ansible (до перехода на Apache 2.0 в 2015 году).
Критика
AGPLv3 вызывает неоднозначную реакцию в сообществе разработчиков.
Сторонники
- Защита свобод: AGPLv3 считается наиболее сильной копилефт-лицензией, которая эффективно предотвращает «захват» свободного кода проприетарными компаниями, использующими модель SaaS.
- Стимулирование возврата улучшений: Компании, использующие AGPL-код в своих сервисах, вынуждены публиковать свои модификации, что способствует развитию проекта.
Противники
- Сложность коммерческого использования: Многие компании избегают AGPLv3, так как она требует раскрытия исходного кода всего приложения, если оно используется как веб-сервис. Это может быть неприемлемо для бизнеса, который хочет сохранить свои разработки в тайне.
- Несовместимость с некоторыми популярными лицензиями: AGPLv3 несовместима с лицензиями, которые не являются копилефтными (например, MIT, Apache 2.0) или имеют другие требования. Это ограничивает возможность использования AGPL-кода в проектах с другими лицензиями.
- Юридическая неопределённость: В некоторых юрисдикциях (например, в России) судебная практика по применению AGPLv3 практически отсутствует, что создаёт риски для компаний, использующих такое ПО.
Интересные факты
- Название «Affero» происходит от названия компании Affero, Inc., которая первой разработала и применила эту лицензию.
- AGPLv3 является единственной лицензией из семейства GNU, которая специально предназначена для решения проблем, связанных с моделью SaaS.
- В 2024 году Фонд свободного программного обеспечения начал работу над GPLv4, которая может включить в себя некоторые положения AGPL или изменить подход к сетевым взаимодействиям.
Источники
- GNU Affero General Public License, версия 3 (официальный текст).
- Free Software Foundation. «Why the Affero GPL».
- Stallman, R. (2007). «Free Software, Free Society: Selected Essays of Richard M. Stallman».
- Rosen, L. (2004). «Open Source Licensing: Software Freedom and Intellectual Property Law».
- Документация проектов Nextcloud, GitLab, Mattermost.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →