Открыть сервис

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 гарантирует четыре основные свободы:

  1. Свобода запускать программу для любых целей.
  2. Свобода изучать, как программа работает, и изменять её (для этого требуется доступ к исходному коду).
  3. Свобода распространять копии программы.
  4. Свобода улучшать программу и публиковать свои улучшения (для этого требуется доступ к исходному коду).

При распространении программы (например, при передаче копии другому лицу) лицензиат обязан предоставить исходный код и сохранить условия лицензии.

Сетевое взаимодействие (Section 13)

Главное нововведение AGPLv3 содержится в разделе 13 (Section 13). Оно гласит: если вы модифицируете программу и предоставляете удалённый доступ к ней через компьютерную сеть (например, через веб-сервер), то вы обязаны предоставить всем пользователям, взаимодействующим с программой через сеть, исходный код вашей модифицированной версии. Это условие действует независимо от того, распространяете ли вы копии программы традиционным способом. Таким образом, AGPLv3 закрывает «лазейку SaaS», которая существовала в GPL.

Совместимость с GPLv3

AGPLv3 и GPLv3 совместимы. Это означает, что код, распространяемый под GPLv3, можно включать в проект, который распространяется под AGPLv3, и наоборот, при условии, что результирующий продукт распространяется под AGPLv3. Однако код под AGPLv3 нельзя включать в проект, распространяемый только под GPLv3, так как GPLv3 не содержит требования о раскрытии кода при сетевом использовании.

Отличия от GPL

Основное различие между AGPLv3 и GPLv3 заключается в условии о сетевом взаимодействии.

ХарактеристикаGPLv3AGPLv3
Раскрытие исходного кодаТребуется только при распространении копий программы (например, при продаже, передаче, скачивании).Требуется как при распространении копий, так и при предоставлении удалённого доступа к программе через сеть.
Использование в 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 или изменить подход к сетевым взаимодействиям.

Источники

  1. GNU Affero General Public License, версия 3 (официальный текст).
  2. Free Software Foundation. «Why the Affero GPL».
  3. Stallman, R. (2007). «Free Software, Free Society: Selected Essays of Richard M. Stallman».
  4. Rosen, L. (2004). «Open Source Licensing: Software Freedom and Intellectual Property Law».
  5. Документация проектов Nextcloud, GitLab, Mattermost.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →