GNU LGPL
LGPL (GNU Lesser General Public License, GNU Меньшая универсальная общественная лицензия) — это лицензия на свободное и открытое программное обеспечение, разработанная Фондом свободного программного обеспечения (FSF). Она является производной от GNU General Public License (GPL) и предназначена для библиотек и программных компонентов, которые должны быть доступны для использования в проприетарных (несвободных) программах. Основное отличие LGPL от GPL заключается в том, что она позволяет связывать (линковать) лицензированный код с проприетарным программным обеспечением без требования открывать исходный код всей программы, при условии сохранения некоторых гарантий для пользователя.
История
Предпосылки создания
В начале 1990-х годов, с ростом популярности операционной системы GNU и ядра Linux, возникла проблема лицензирования библиотек. Многие разработчики хотели использовать библиотеки GNU (например, GNU C Library) в своих коммерческих, несвободных приложениях. Однако стандартная GPL, требующая распространения всей программы под GPL при использовании её кода, делала это невозможным. Это создавало барьер для принятия свободных библиотек в индустрии.
Первая версия (LGPLv2)
Первая версия лицензии была опубликована в 1991 году под названием GNU Library General Public License (Библиотечная универсальная общественная лицензия GNU). Её основная цель заключалась в том, чтобы поощрить использование свободных библиотек в коммерческом ПО, не отказываясь от принципов копилефта. В 1999 году, после обсуждений в сообществе, лицензия была переименована в GNU Lesser General Public License (Меньшая), чтобы подчеркнуть, что она предоставляет меньше защиты свободы пользователя, чем GPL, но при этом остаётся лицензией свободного ПО.
Версия 2.1 (LGPLv2.1)
В 1999 году была выпущена версия 2.1, которая уточнила многие формулировки, особенно касающиеся определения «производной работы» и механизмов линковки. Эта версия стала наиболее широко используемой. Она разъяснила, что использование библиотеки через динамическое связывание (динамическая линковка) не создаёт производной работы, если пользователь может заменить библиотеку на модифицированную версию.
Версия 3 (LGPLv3)
В 2007 году, одновременно с GPLv3, была выпущена LGPLv3. Она была адаптирована к современным реалиям, включая проблемы патентов, цифровых ограничений (DRM) и совместимости с другими лицензиями. LGPLv3 включает в себя положения GPLv3, касающиеся защиты от тивоизации (запрет на аппаратные ограничения, мешающие установке модифицированных версий). LGPLv3 также содержит механизм «дополнительных разрешений», который позволяет разработчику библиотеки явно разрешить её использование в проприетарных проектах.
Основные положения и отличия от GPL
Копилефт, но с исключением
Как и GPL, LGPL является лицензией копилефта: она требует, чтобы модифицированные версии самой библиотеки распространялись под той же лицензией. Однако ключевое отличие заключается в том, что LGPL позволяет использовать библиотеку в программе, которая распространяется под другой, даже проприетарной, лицензией, при соблюдении определённых условий.
Условия для проприетарных программ
Программа, использующая LGPL-библиотеку, может быть проприетарной, если:
- Динамическая линковка: Программа связывается с библиотекой динамически, а не статически. Это позволяет пользователю заменить библиотеку на модифицированную версию.
- Предоставление объектного кода: Если программа распространяется в виде объектного кода (например, .o или .class файлов), разработчик обязан предоставить пользователю возможность перелинковать программу с модифицированной версией библиотеки. На практике это часто означает, что нужно предоставить либо объектные файлы, либо эквивалентный исходный код программы в формате, удобном для модификации.
- Минимальная лицензия: Программа может распространяться под любой лицензией, которая не запрещает пользователю выполнять действия, разрешённые LGPL (например, модифицировать библиотеку).
Статическая линковка
Статическая линковка с LGPL-библиотекой создаёт более сложную ситуацию. Если программа статически слинкована с LGPL-кодом, то она считается производной работой от библиотеки. В этом случае разработчик обязан:
- Распространять программу на условиях LGPL, или
- Предоставить пользователю возможность перелинковать программу с модифицированной версией библиотеки. Для этого разработчик должен предоставить объектные файлы своей программы или исходный код в формате, который позволяет это сделать.
Классификация и варианты
LGPLv2.1 vs LGPLv3
Выбор между версиями зависит от целей проекта:
- LGPLv2.1 более проста и широко распространена. Она не содержит положений о защите от тивоизации и патентных оговорок, характерных для GPLv3. Многие старые проекты (например, GTK+, glibc) используют именно LGPLv2.1.
- LGPLv3 обеспечивает лучшую защиту от современных угроз свободе ПО, но может быть менее совместима с некоторыми проприетарными лицензиями. Она также включает механизм «дополнительных разрешений», который позволяет разработчику библиотеки явно разрешить статическую линковку без дополнительных требований.
LGPL с дополнительными разрешениями
Разработчик может добавить к LGPL «дополнительные разрешения» (additional permissions), которые ослабляют некоторые требования. Например, можно разрешить статическую линковку без предоставления объектных файлов. Это часто используется для библиотек, которые должны быть максимально просты в использовании.
Применение
Типичные случаи использования
LGPL чаще всего применяется для:
- Библиотек общего назначения: Например, GNU C Library (glibc), GTK+ (инструментарий для создания графического интерфейса), Qt (до версии 5.4 использовалась LGPLv2.1, затем — GPLv3 с исключением).
- Фреймворков: Некоторые веб-фреймворки и библиотеки для работы с базами данных.
- Кодеков и медиабиблиотек: FFmpeg (частично), libvorbis, libtheora.
Примеры известных проектов
- GNU C Library (glibc): Основная библиотека языка C для GNU/Linux. Использует LGPLv2.1.
- GTK+: Кроссплатформенный инструментарий для создания графического интерфейса. Использует LGPLv2.1.
- Qt: До версии 5.4 использовал LGPLv2.1 для коммерческого использования, затем перешёл на GPLv3 с исключением.
- libpng: Библиотека для работы с PNG-изображениями. Использует собственную лицензию, похожую на LGPL.
Критика и ограничения
Сложность соблюдения
Одной из основных критик LGPL является сложность её соблюдения на практике. Требование предоставлять объектные файлы или исходный код программы в формате, удобном для перелинковки, часто неудобно для разработчиков проприетарного ПО. Многие компании предпочитают использовать библиотеки с более мягкими лицензиями, такими как MIT или BSD, чтобы избежать юридических рисков.
Недостаточная защита свободы
С точки зрения сторонников строгого копилефта (например, Ричарда Столлмана), LGPL является компромиссом, который позволяет использовать свободный код в несвободных программах. Это может привести к ситуации, когда пользователь получает программу, которая использует свободную библиотеку, но не может свободно модифицировать саму программу.
Совместимость с другими лицензиями
LGPL не полностью совместима с GPL. Если программа распространяется под GPL, она может использовать LGPL-библиотеку, но только в том случае, если библиотека распространяется под LGPLv2.1 или более поздней версией. LGPLv3 несовместима с GPLv2, что создаёт проблемы для проектов, использующих обе лицензии.
Интересные факты
- Название «Меньшая»: Первоначально лицензия называлась «Библиотечной», но была переименована в «Меньшую», чтобы подчеркнуть, что она предоставляет меньше свободы для пользователя, чем GPL, но при этом остаётся лицензией свободного ПО.
- Использование в ядре Linux: Ядро Linux использует GPLv2, но многие его библиотеки и модули (например, драйверы) могут распространяться под LGPL. Однако сам Столлман критиковал ядро Linux за отсутствие строгого копилефта.
- LGPL и коммерция: LGPL является одной из немногих лицензий свободного ПО, которая специально разработана для поддержки коммерческого использования. Это сделало её популярной в индустрии, особенно для библиотек, которые должны быть доступны как для свободных, так и для проприетарных проектов.
Источники
- GNU Lesser General Public License, версия 2.1 (1999) — официальный текст лицензии.
- GNU Lesser General Public License, версия 3 (2007) — официальный текст лицензии.
- Free Software Foundation. «Why you shouldn't use the Lesser GPL for your next library» (1999) — статья, объясняющая причины создания LGPL.
- Stallman, R. «Free Software, Free Society: Selected Essays of Richard M. Stallman» (2002) — сборник эссе, включая обсуждение LGPL.
- Rosen, L. «Open Source Licensing: Software Freedom and Intellectual Property Law» (2004) — книга, анализирующая различные лицензии, включая LGPL.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →