GNU General Public License
GNU General Public License (GNU GPL, GPL) — это лицензия на свободное программное обеспечение, разработанная Фондом свободного программного обеспечения (Free Software Foundation, FSF). Она предоставляет пользователю права на запуск, изучение, распространение и изменение программ, но при условии, что все производные работы (модифицированные версии) также будут распространяться на условиях GPL. GPL является одной из самых известных и влиятельных лицензий в мире открытого исходного кода, а её ключевой принцип — «копилефт» (copyleft) — направлен на предотвращение превращения свободного ПО в проприетарное.
История
Предпосылки создания
В начале 1980-х годов Ричард Столмен, работавший в лаборатории искусственного интеллекта Массачусетского технологического института (MIT), столкнулся с ситуацией, когда производители программного обеспечения (в частности, Symbolics и Lisp Machines Inc.) отказывались делиться исходными кодами своих программ, что противоречило духу академического сотрудничества. В 1983 году Столмен объявил о начале проекта GNU (GNU’s Not Unix), целью которого было создание полностью свободной Unix-подобной операционной системы. Для легального закрепления принципов свободы потребовалась специальная лицензия.
Первая версия (GPLv1)
Первая версия GNU General Public License была опубликована в феврале 1989 года. Она вводила понятие «копилефта» — механизма, который, используя авторское право, гарантировал, что все копии программы и её производные остаются свободными. GPLv1 запрещала распространителям накладывать дополнительные ограничения на права, полученные пользователем по лицензии. Однако в ней ещё не было чёткого механизма решения проблемы «тирании пользователей» — ситуации, когда проприетарное ПО использует библиотеки, защищённые GPL, без публикации своего кода.
Вторая версия (GPLv2)
В 1991 году вышла вторая версия — GPLv2. Она стала наиболее широко используемой. Ключевым дополнением стало введение раздела 7, который позволял лицензиару добавлять ограничения, если они требовались законодательством или судебным решением (например, патентные иски). GPLv2 также ввела понятие «библиотек» и уточнила условия распространения программ в бинарном виде. GPLv2 стала лицензией для ядра Linux (выпущенного в 1991 году под GPLv2) и многих других ключевых проектов, таких как GCC, Bash, Emacs. Споры вокруг GPLv2 часто касались её совместимости с другими лицензиями (например, Apache License 2.0).
Третья версия (GPLv3)
Работа над GPLv3 началась в 2005 году и завершилась публикацией 29 июня 2007 года. Основными причинами обновления стали:
- Проблема «тивоизации» (tivoization): производители устройств (например, TiVo) использовали GPL-код, но блокировали возможность установки модифицированных версий прошивки на устройство (через аппаратные блокировки). GPLv3 явно запрещает такие ограничения.
- Патентные соглашения: GPLv3 содержит более строгие положения о патентах, защищающие пользователей от патентных исков со стороны распространителей.
- Совместимость с другими лицензиями: GPLv3 была разработана для лучшей совместимости с лицензией Apache 2.0 и другими свободными лицензиями.
GPLv3 вызвала раскол в сообществе. Часть проектов (например, ядро Linux) остались на GPLv2, не желая переходить на новую версию. Другие, такие как Samba, WordPress (с 2009 года) и многие проекты FSF, перешли на GPLv3. В настоящее время обе версии (v2 и v3) активно используются.
Ключевые принципы и термины
Свободы
GPL предоставляет пользователю четыре фундаментальные свободы (по определению FSF):
- Свобода 0: запускать программу для любых целей.
- Свобода 1: изучать, как работает программа, и изменять её (для этого необходим доступ к исходному коду).
- Свобода 2: распространять копии программы (помогать другим).
- Свобода 3: распространять модифицированные версии программы (делать улучшения доступными сообществу).
Копилефт
Копилефт (copyleft) — это правовой механизм, который использует авторское право для достижения противоположной цели: вместо ограничения распространения (как в традиционном копирайте) он гарантирует, что все производные работы остаются свободными. Если программист использует код под GPL в своей программе, то вся программа целиком должна распространяться на условиях GPL. Это предотвращает «закрытие» кода.
Исходный код
Лицензия требует, чтобы при распространении программы в бинарном (скомпилированном) виде распространитель также предоставлял полный, машинно-читаемый исходный код. Это может быть сделано путём включения кода в дистрибутив или предоставления письменного предложения (действительного в течение трёх лет) выслать код по запросу.
Классификация и варианты
GPLv2 и GPLv3
Основные различия между версиями:
- Тивоизация: GPLv2 не запрещает аппаратные блокировки, GPLv3 — запрещает.
- Патентная защита: GPLv3 содержит явный патентный грант от распространителя пользователям.
- Совместимость: GPLv2 несовместима с Apache 2.0; GPLv3 — совместима.
- Условия распространения: GPLv3 более строга в отношении DRM (Digital Rights Management).
GNU Lesser General Public License (LGPL)
LGPL — это «ослабленная» версия GPL, предназначенная для библиотек. Она позволяет использовать LGPL-библиотеки в проприетарных программах без требования открывать код всей программы. При этом модификации самой библиотеки должны распространяться под LGPL. LGPL существует в версиях v2.1 (1999) и v3 (2007).
GNU Affero General Public License (AGPL)
AGPL — это версия GPL, предназначенная для программного обеспечения, работающего через сеть (веб-приложения, SaaS). AGPLv3 (2007) содержит дополнительное требование: если программа взаимодействует с пользователями через компьютерную сеть, она должна предоставлять им исходный код. Это закрывает «дыру ASP» (Application Service Provider), когда GPL-код используется на сервере, но не распространяется.
Применение и значение
Операционная система GNU/Linux
Ядро Linux распространяется под GPLv2, а большинство утилит проекта GNU — под GPLv3. Благодаря GPL, сообщество разработчиков по всему миру смогло создать полностью свободную операционную систему, которая стала основой для интернета, облачных вычислений и мобильных устройств (Android использует модифицированное ядро Linux под GPLv2, хотя пользовательское пространство — под Apache 2.0).
Популярные проекты под GPL
- GCC (GNU Compiler Collection) — компилятор, основа многих инструментов разработки.
- Bash — командная оболочка, стандартная в большинстве Unix-подобных систем.
- WordPress — система управления контентом (CMS), распространяется под GPLv2+.
- GIMP — графический редактор.
- MySQL (до приобретения Oracle) — СУБД, использовала GPLv2.
Влияние на индустрию
GPL стала моделью для многих других лицензий с копилефтом (например, MPL, EPL). Она способствовала развитию модели разработки с открытым исходным кодом, где компании (например, Red Hat, Canonical) зарабатывают на поддержке и услугах, а не на продаже лицензий. В то же время GPL критикуется некоторыми представителями бизнеса за «вирусный» характер (требование открывать код всех производных работ), что может затруднять коммерческое использование.
Критика и ограничения
Несовместимость с некоторыми лицензиями
GPLv2 несовместима с лицензиями, содержащими дополнительные ограничения (например, Apache 2.0 из-за патентного пункта). Это создаёт проблемы при комбинировании кода из разных проектов. Разработчики часто вынуждены выбирать между использованием GPL-кода и кода под другими свободными лицензиями.
«Вирусный» эффект
Требование копилефта может отпугивать коммерческие компании, которые хотят использовать свободный код в своих проприетарных продуктах. Это привело к появлению более либеральных лицензий (MIT, BSD, Apache 2.0), которые не требуют открывать производные работы.
Проблемы с патентами
GPLv2 не содержит явного патентного гранта, что создаёт правовую неопределённость. GPLv3 решает эту проблему, но её принятие не является всеобщим.
Судебные споры
GPL неоднократно была предметом судебных разбирательств. Наиболее известные случаи:
- BusyBox vs. Monsoon (2007): FSF подала в суд на компанию Monsoon за нарушение GPLv2 (использование BusyBox без публикации исходного кода). Дело закончилось мировым соглашением.
- Versata vs. Ameriprise (2013): спор о том, является ли GPLv2 договором или просто лицензией. Суд постановил, что GPLv2 является лицензией и может быть принудительно исполнена.
- Artifex vs. Hancom (2017): спор о нарушении GPLv3 (использование Ghostscript в проприетарном ПО). Суд признал GPLv3 договором и обязал ответчика выплатить компенсацию.
Интересные факты
- Ричард Столмен называет GPL «конституцией движения свободного программного обеспечения».
- Название «GNU General Public License» происходит от проекта GNU, где она была впервые применена.
- GPLv3 стала первой лицензией, которая явно запретила использование DRM для ограничения прав пользователей.
- Некоторые проекты (например, ядро Linux) используют формулировку «GPLv2 only», что означает, что код нельзя перелицензировать на GPLv3.
- В России GPL не имеет специального законодательного статуса, но признаётся как лицензионный договор присоединения (статья 1286.1 ГК РФ), если её условия не противоречат российскому законодательству.
Источники
- Free Software Foundation. «GNU General Public License, version 3». 2007.
- Free Software Foundation. «GNU General Public License, version 2». 1991.
- Stallman, R. M. «Free Software, Free Society: Selected Essays of Richard M. Stallman». 2002.
- Rosen, L. «Open Source Licensing: Software Freedom and Intellectual Property Law». 2004.
- Moglen, E. «Free Software Matters: Selected Writings of Eben Moglen». 2005.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →