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

GPLv2

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

История

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

Первая версия GNU GPL (GPLv1) была выпущена в 1989 году. Она была разработана Ричардом Столлманом и его командой для проекта GNU, целью которого было создание полностью свободной операционной системы. Однако GPLv1 содержала ряд недостатков, в частности, нечётко определяла правила распространения бинарных файлов и не решала проблему «тиранизации» лицензий, когда разработчики могли добавлять собственные ограничения к лицензированному коду.

Разработка и публикация

Работа над GPLv2 началась в 1990 году. Основной задачей было устранение «лазеек», которые позволяли распространителям связывать свободный код с проприетарным, не предоставляя исходных текстов. Ключевым моментом стало добавление пункта 2(b), запрещающего добавление любых дополнительных ограничений к лицензии. Также была уточнена формулировка о распространении бинарных файлов: теперь требовалось предоставлять либо полные исходные коды, либо письменное предложение их предоставить.

Вторая версия была официально опубликована в июне 1991 года. Она быстро заменила GPLv1 и стала стандартом для многих известных проектов, включая ядро Linux, систему управления базами данных MySQL, инструменты GCC и GDB, а также множество других программ.

Влияние на сообщество

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

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

Копилефт

GPLv2 является копилефт-лицензией. Это означает, что любое производное произведение (программа, созданная на основе лицензированного кода) должно распространяться на тех же условиях, что и оригинал. Если разработчик модифицирует GPLv2-программу и распространяет её, он обязан предоставить исходный код своих изменений под той же лицензией.

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

При распространении программы под GPLv2 (в том числе в виде бинарных файлов) распространитель обязан:

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

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

GPLv2 содержит явный отказ от каких-либо гарантий. Программа распространяется «как есть» (as is), без каких-либо явных или подразумеваемых гарантий, включая, но не ограничиваясь, гарантиями товарной пригодности или пригодности для конкретной цели. Это защищает разработчиков от судебных исков, связанных с качеством программы.

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

GPLv2 считается лицензией с сильным копилефтом. Она совместима с GPLv3 (при условии, что проект явно разрешает использование более поздней версии), но несовместима с большинством других лицензий, включая Apache License 2.0 и MIT License. Это означает, что код, лицензированный под GPLv2, нельзя напрямую комбинировать с кодом под несовместимой лицензией без нарушения условий одной из них.

Различия между GPLv2 и GPLv3

Основные нововведения GPLv3

GPLv3 была опубликована в 2007 году и стала ответом на новые вызовы, такие как патентные войны, Tivoization (ограничение модификации прошивки в устройствах) и распространение облачных вычислений. GPLv3 содержит более строгие требования к патентным лицензиям, запрещает обход технических средств защиты (DRM) и требует предоставления исходных кодов пользователям, работающим с программой через сеть (SaaS).

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

GPLv2 и GPLv3 несовместимы напрямую. Код под GPLv2 нельзя объединять с кодом под GPLv3 в одном проекте, если только проект не разрешает использование «любой более поздней версии» (any later version). Многие проекты, такие как ядро Linux, остались на GPLv2, чтобы избежать сложностей с совместимостью.

Реакция сообщества

Переход на GPLv3 вызвал значительные споры. Некоторые проекты, включая GNU Emacs и GCC, перешли на GPLv3. Другие, такие как Linux, MySQL и WordPress, остались на GPLv2. Это привело к разделению экосистемы: часть проектов использует GPLv2, часть — GPLv3, а некоторые (например, Samba) выпускаются под обеими версиями.

Применение

Крупные проекты

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

Малые и средние проекты

GPLv2 популярна среди разработчиков, которые хотят гарантировать, что их код останется свободным, но не хотят переходить на более сложную GPLv3. Она часто используется для библиотек и утилит, которые должны быть совместимы с ядром Linux.

Критика

«Вирусный» характер

Основная критика GPLv2 (и GPL в целом) связана с её копилефт-условиями. Критики утверждают, что лицензия «заражает» код, делая его непригодным для использования в проприетарных проектах. Это ограничивает коммерческое использование и может отпугнуть компании от интеграции GPL-кода.

Отсутствие защиты от патентных исков

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

Сложность совместимости

Несовместимость GPLv2 с другими популярными лицензиями (например, Apache 2.0) создаёт проблемы для разработчиков, желающих объединить код из разных источников. Это приводит к «лицензионному адду» — ситуации, когда невозможно законно объединить два свободных компонента.

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

  • GPLv2 является одной из первых лицензий, которая явно запретила добавление дополнительных ограничений (пункт 2(b)). Это было сделано для предотвращения «тиранизации» лицензий, когда распространители могли добавлять свои условия.
  • Ядро Linux, несмотря на свою популярность, остаётся на GPLv2, хотя многие разработчики предлагали перейти на GPLv3. Линус Торвальдс неоднократно заявлял, что GPLv3 не подходит для ядра из-за её требований к DRM и патентам.
  • GPLv2 используется в некоторых коммерческих продуктах. Например, MySQL (до покупки Oracle) предлагал коммерческую лицензию для тех, кто не хотел распространять свои изменения под GPLv2.
  • В 2019 году Фонд свободного программного обеспечения начал работу над GPLv4, но официального релиза на данный момент (2025 год) не произошло.

Источники

  • Free Software Foundation. GNU General Public License, version 2. — 1991.
  • Stallman, Richard. Free Software, Free Society: Selected Essays of Richard M. Stallman. — GNU Press, 2002.
  • Rosen, Lawrence. Open Source Licensing: Software Freedom and Intellectual Property Law. — Prentice Hall, 2004.
  • Torvalds, Linus. Just for Fun: The Story of an Accidental Revolutionary. — HarperBusiness, 2001.
  • Фонд свободного программного обеспечения. Часто задаваемые вопросы о GNU GPL. — 2023.

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

На главную BFOmetr →