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

GNU GPL

GNU General Public License (GNU GPL, GPL) — это лицензия на свободное и открытое программное обеспечение, разработанная Фондом свободного программного обеспечения (Free Software Foundation, FSF). Она предоставляет пользователям права на запуск, изучение, распространение и изменение программ, при условии, что производные работы распространяются на тех же условиях. GPL является одной из самых известных и влиятельных лицензий в сфере свободного ПО, реализующей концепцию копилефта (copyleft).

История

Предпосылки и создание

В начале 1980-х годов Ричард Столлман, работавший в Лаборатории искусственного интеллекта Массачусетского технологического института (MIT), столкнулся с проблемой проприетарного программного обеспечения. В 1983 году он запустил проект GNU (GNU’s Not Unix), целью которого было создание полностью свободной операционной системы, совместимой с Unix. Для легального распространения программ в рамках проекта потребовалась лицензия, которая гарантировала бы сохранение свободы при распространении и модификации.

Первая версия GNU General Public License была опубликована в 1989 году. Она объединила и заменила более ранние лицензии, использовавшиеся для отдельных компонентов GNU (например, Emacs General Public License, 1985 год). Основной принцип GPL — копилефт — был заимствован из юридической практики и означал, что производные работы должны распространяться под той же лицензией, что и оригинал.

Версия 2 (GPLv2)

В 1991 году вышла вторая версия лицензии (GPLv2), которая стала самой распространённой. Ключевым нововведением стало добавление раздела «GNU General Public License Version 2, June 1991» и введение понятия «свобода» как права, а не просто разрешения. GPLv2 также включала положение о том, что если на пользователя налагаются дополнительные ограничения (например, патентные иски), он не может распространять программу. Это положение было направлено против компаний, которые могли бы использовать патенты для блокировки свободного распространения.

Версия 3 (GPLv3)

Работа над третьей версией началась в 2005 году и завершилась публикацией финального текста 29 июня 2007 года. Основные причины создания GPLv3:

  • Проблема тивоизации (tivoization): производители устройств (например, TiVo — компания, производящая цифровые видеорекордеры) использовали GPLv2 для распространения ПО, но блокировали возможность установки модифицированных версий на аппаратное обеспечение. GPLv3 запретила такие ограничения.
  • Патентные соглашения: GPLv3 ввела явные положения о защите от патентных исков, включая автоматическое лицензирование патентов, необходимых для использования программы.
  • Совместимость с другими лицензиями: GPLv3 была сделана совместимой с Apache License 2.0 и GNU Affero General Public License (AGPLv3).

GPLv3 не заменила GPLv2: многие проекты (например, ядро Linux) остались на второй версии. Разработчики могут выбирать, под какой версией распространять своё ПО, или указывать «GPLv2 или любой более поздней версии».

Основные положения

Права и свободы

GPL предоставляет четыре фундаментальные свободы, определённые Фондом свободного программного обеспечения:

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

Копилефт

Главный механизм GPL — копилефт. Он означает, что если вы распространяете модифицированную версию программы (или используете её части в своей программе), вы обязаны распространять всю производную работу под той же лицензией GPL. Это предотвращает превращение свободного ПО в проприетарное. Копилефт не распространяется на программы, которые просто используют GPL-библиотеку в качестве внешнего компонента (например, через системные вызовы), но это различие часто является предметом юридических споров.

Обязательства при распространении

Лицо, распространяющее программу под GPL, обязано:

  • Предоставить полный соответствующий исходный код (или письменное предложение предоставить его по запросу).
  • Сохранить все уведомления об авторских правах и лицензии.
  • Указать, что программа распространяется под GPL, и приложить текст лицензии.
  • Если программа распространяется в объектном коде (скомпилированном виде), необходимо обеспечить доступ к исходному коду.

Исключения и совместимость

GPLv3 содержит механизм «дополнительных разрешений», позволяющих авторам ослаблять требования копилефта для определённых частей кода. Например, можно разрешить использование библиотеки в проприетарных проектах, если это явно указано в лицензионном соглашении.

Совместимость GPL с другими лицензиями означает, что код под одной лицензией можно объединять с кодом под другой. GPLv2 совместима с GPLv3, но не с Apache License 2.0 (из-за патентных оговорок). GPLv3 совместима с Apache 2.0 и AGPLv3.

Виды лицензий семейства GNU

GNU Lesser General Public License (LGPL)

LGPL — это более мягкая версия GPL, предназначенная для библиотек. Она позволяет использовать библиотеку в проприетарных программах без требования открывать исходный код всей программы, при условии, что пользователь может модифицировать саму библиотеку. LGPLv3 была выпущена одновременно с GPLv3.

GNU Affero General Public License (AGPL)

AGPLv3 (2007 год) — это версия GPL, предназначенная для программ, работающих в сети (например, веб-приложений). Она закрывает лазейку, при которой программа используется через сеть, но её исходный код не распространяется. AGPL требует, чтобы если пользователь взаимодействует с программой через сеть, ему был предоставлен исходный код.

GNU Free Documentation License (GFDL)

GFDL — лицензия для документации, а не для программного кода. Она использует принципы копилефта, но с дополнительными требованиями к указанию авторов и неизменяемых разделов.

Применение и значение

Примеры проектов

GPL является одной из самых распространённых лицензий в мире свободного ПО. Под GPLv2 распространяется ядро Linux, компилятор GCC, текстовый редактор GNU Emacs, система управления версиями Git. Под GPLv3 распространяются такие проекты, как GNU Bash, GNU Coreutils, LibreOffice, GIMP.

Влияние на индустрию

GPL сыграла ключевую роль в развитии экосистемы открытого кода. Она обеспечила юридическую защиту для сообществ разработчиков, предотвратив «захват» свободного ПО коммерческими компаниями. Многие компании, включая Google, IBM, Red Hat, используют или распространяют ПО под GPL. В то же время GPL критикуется за «вирусный» характер копилефта, который может отпугивать коммерческих разработчиков, желающих использовать открытые компоненты в проприетарных продуктах.

Судебные прецеденты

Нарушения GPL неоднократно становились предметом судебных разбирательств. Наиболее известные случаи:

  • BusyBox v. Monsoon Multimedia (2008): FSF подала иск против компании Monsoon Multimedia за нарушение GPLv2. Дело было урегулировано во внесудебном порядке.
  • Versata Software v. Ameriprise Financial (2010): суд признал, что GPLv2 является лицензией, а не простым разрешением, и её нарушение может быть основанием для иска.
  • Artifex Software v. Hancom (2017): Artifex (разработчик Ghostscript) подала иск против Hancom за нарушение AGPLv3. Суд постановил, что Hancom нарушила лицензию, и обязал выплатить компенсацию.

Критика и ограничения

«Вирусный» эффект

Критики GPL, особенно из коммерческого сектора, утверждают, что копилефт действует как «вирус»: если программа использует GPL-код, вся производная работа должна быть открыта. Это может препятствовать интеграции GPL-компонентов в проприетарные продукты.

Несовместимость с другими лицензиями

GPLv2 несовместима с Apache License 2.0, что создаёт проблемы при комбинировании кода. GPLv3 частично решила эту проблему, но не полностью.

Сложность соблюдения

Для крупных проектов, использующих множество библиотек, отслеживание соблюдения условий GPL может быть сложным. Компании часто нанимают юристов для аудита лицензий.

Отсутствие гарантий

GPL распространяется «как есть» (as is) без каких-либо гарантий. Авторы не несут ответственности за ущерб, причинённый использованием программы.

Интересные факты

  • Ричард Столлман написал первую версию GPL на основе лицензии Emacs, которая, в свою очередь, была вдохновлена лицензией на программу Bison.
  • GPLv3 стала результатом самого масштабного публичного обсуждения лицензии в истории свободного ПО: в нём участвовали тысячи разработчиков и юристов.
  • Некоторые компании, например, Microsoft, в прошлом критиковали GPL, но впоследствии начали активно использовать и поддерживать проекты под этой лицензией (например, .NET Core).
  • Ядро Linux остаётся на GPLv2, несмотря на попытки Линуса Торвальдса рассмотреть GPLv3. Торвальдс назвал GPLv3 «слишком сложной» и «несовместимой с духом ядра».

Источники

  • 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. — GNU Press, 2002.
  • Rosen, L. Open Source Licensing: Software Freedom and Intellectual Property Law. — Prentice Hall, 2004.
  • Moglen, E. The GNU GPL and the American Legal System. — 2001.
  • Судебные решения: BusyBox v. Monsoon Multimedia (2008), Artifex Software v. Hancom (2017).

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

На главную BFOmetr →