Лицензия AGPL v3
AGPL v3 (GNU Affero General Public License version 3) — это копилефтная лицензия на свободное программное обеспечение, разработанная Фондом свободного программного обеспечения (Free Software Foundation, FSF) на основе GNU General Public License version 3 (GPLv3). Основное отличие AGPLv3 от GPLv3 заключается в дополнительном условии, регулирующем распространение программного обеспечения через компьютерные сети, что делает её особенно актуальной для веб-приложений и облачных сервисов.
История
Лицензия AGPLv3 была опубликована 19 ноября 2007 года. Её создание было вызвано необходимостью закрыть «лазейку» в GPLv3, связанную с программным обеспечением, работающим на серверах. В GPLv3 требование распространять исходный код возникает только при фактической передаче (дистрибуции) копий программы. Если программа используется на сервере, к которому пользователи подключаются через сеть, но копии программы им не передаются, то обязательств по раскрытию исходного кода не возникает. Это позволяло компаниям, использующим модифицированные версии GPL-программ на своих серверах, не публиковать изменения.
Для решения этой проблемы была создана AGPLv3, которая включает в себя все положения GPLv3 и дополняет их пунктом 13, известным как «Remote Network Interaction» (удалённое сетевое взаимодействие). Предшественницей AGPLv3 была Affero General Public License version 1 (AGPLv1), разработанная компанией Affero, Inc. в 2002 году для проекта Affero (сервис, позволявший пользователям отслеживать свои ссылки на веб-страницах). Впоследствии FSF адаптировал эту идею, включив её в версию 3 GPL, что привело к появлению AGPLv3.
Основные положения
AGPLv3 является копилефтной лицензией. Это означает, что производные работы (модифицированные версии) должны распространяться на тех же условиях, что и оригинальная программа. Ключевые права и обязанности, предоставляемые лицензией, включают:
- Право на использование: Программу можно использовать для любых целей, в том числе коммерческих.
- Право на распространение: Копии программы можно распространять, при условии сохранения уведомления об авторских правах и текста лицензии.
- Право на модификацию: Программу можно изменять, создавать производные работы.
- Обязанность раскрытия исходного кода: При распространении программы (как в исходном виде, так и в скомпилированном) необходимо предоставить получателям полный соответствующий исходный код.
- Обязанность по раскрытию исходного кода при сетевом взаимодействии (пункт 13): Если программа (или её модифицированная версия) взаимодействует с пользователями удалённо через компьютерную сеть (например, через веб-интерфейс), то пользователям, взаимодействующим с ней, должен быть предоставлен доступ к полному соответствующему исходному коду. Это ключевое отличие от GPLv3.
Отличие от GPLv3
Основное различие между AGPLv3 и GPLv3 заключается в пункте 13. В GPLv3 обязанность предоставить исходный код возникает только при распространении (distribution) копий программы. В AGPLv3 эта обязанность распространяется и на случай, когда программа работает на сервере и предоставляет услуги через сеть (remote network interaction). Таким образом, AGPLv3 закрывает «серверную лазейку» GPLv3.
Отличие от LGPL
GNU Lesser General Public License (LGPL) является менее строгой копилефтной лицензией, предназначенной для библиотек. Она позволяет связывать (линковать) LGPL-библиотеку с проприетарным кодом, не требуя раскрытия исходного кода этого проприетарного кода. AGPLv3, напротив, является строгой копилефтной лицензией, и любое использование, модификация или распространение программы, лицензированной под AGPLv3, влечёт за собой обязанность распространять всю производную работу под AGPLv3. AGPLv3 не предназначена для библиотек, которые должны быть совместимы с проприетарным программным обеспечением.
Совместимость с другими лицензиями
AGPLv3 является совместимой с GPLv3. Это означает, что код, лицензированный под GPLv3, можно комбинировать с кодом под AGPLv3, и результирующая работа может распространяться под AGPLv3. Однако AGPLv3 несовместима с GPLv2. Это означает, что код, лицензированный под GPLv2, нельзя объединять с кодом под AGPLv3 в одну программу, так как условия лицензий противоречат друг другу. AGPLv3 также несовместима с большинством проприетарных лицензий.
Применение
AGPLv3 часто используется для программного обеспечения, которое предназначено для работы в качестве веб-сервиса или облачного приложения. Это позволяет разработчикам гарантировать, что даже если программа не распространяется в традиционном смысле, а предоставляется как услуга (SaaS), пользователи всё равно будут иметь доступ к её исходному коду и смогут его модифицировать.
Примеры проектов, использующих AGPLv3
- MongoDB: Популярная NoSQL база данных. С версии 3.0 (2015 год) MongoDB использует AGPLv3 (с дополнительными исключениями для драйверов). В 2018 году компания MongoDB Inc. перешла на собственную лицензию Server Side Public License (SSPL), которая является ещё более строгой, чем AGPLv3.
- Nextcloud: Платформа для создания облачных сервисов (аналог Dropbox, Google Drive). Использует AGPLv3.
- GitLab Community Edition (CE): Веб-система управления репозиториями Git. Использует AGPLv3.
- Rocket.Chat: Платформа для обмена сообщениями и командной работы с открытым исходным кодом. Использует AGPLv3.
- Mautic: Платформа для автоматизации маркетинга. Использует AGPLv3.
Критика
AGPLv3 подвергается критике по нескольким причинам:
- Сложность и объём: Лицензия является длинной и сложной для понимания, что может отпугивать разработчиков и компании.
- Несовместимость с GPLv2: Это создаёт проблемы для проектов, которые хотят использовать код, лицензированный под GPLv2, вместе с кодом под AGPLv3.
- Сложность соблюдения для коммерческого использования: Компании, которые хотят использовать AGPLv3-программы в своих продуктах или услугах, часто сталкиваются с трудностями при соблюдении требований лицензии, особенно в отношении раскрытия исходного кода при сетевом взаимодействии. Это может привести к тому, что компании предпочитают использовать проприетарные альтернативы или программы с более мягкими лицензиями (например, Apache 2.0 или MIT).
- Неопределённость в отношении «сетевого взаимодействия»: Термин «взаимодействие» (interaction) в пункте 13 может быть интерпретирован по-разному. Например, неясно, распространяется ли требование на случай, когда программа является лишь частью более крупной системы, или когда пользователь взаимодействует с ней через API.
См. также
- GNU General Public License (GPL)
- GNU Lesser General Public License (LGPL)
- Копилефт
- Свободное программное обеспечение
- Открытое программное обеспечение
Источники
- GNU Affero General Public License, version 3. Free Software Foundation.
- Stallman, R. (2007). Free Software, Free Society: Selected Essays of Richard M. Stallman. GNU Press.
- Rosen, L. (2004). Open Source Licensing: Software Freedom and Intellectual Property Law. Prentice Hall.
- Lindberg, V. (2008). Intellectual Property and Open Source: A Practical Guide to Protecting Code. O'Reilly Media.
- Документация по лицензиям проектов MongoDB, Nextcloud, GitLab CE.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →