GNU LGPLv3
GNU Lesser General Public License версии 3 (сокращённо LGPLv3) — это лицензия на свободное и открытое программное обеспечение, опубликованная Фондом свободного программного обеспечения (Free Software Foundation, FSF). Она является наследницей GNU Lesser General Public License версии 2.1 и представляет собой компромиссный вариант между строгой копилефт-лицензией GNU GPL и пермиссивными лицензиями, такими как MIT или BSD. LGPLv3 позволяет использовать библиотеки и компоненты, распространяемые под этой лицензией, в проприетарных (закрытых) программах при соблюдении ряда условий, обеспечивающих сохранение свободы модификации самого библиотечного кода.
История
Предпосылки создания
Первая версия LGPL (тогда называвшаяся GNU Library General Public License) была выпущена в 1991 году как ответ на потребность в лицензии, которая позволила бы использовать свободные библиотеки в коммерческих приложениях, не требуя открытия всего кода программы. Основная цель заключалась в стимулировании распространения свободных библиотек (например, GNU C Library), не отпугивая разработчиков проприетарного ПО.
В 1999 году вышла версия 2.1, которая уточнила терминологию и ввела понятие «производного произведения» для библиотек. Однако к середине 2000-х годов обе версии (2.0 и 2.1) устарели: они не учитывали проблемы, связанные с патентными исками, цифровым управлением ограничениями (DRM) и совместимостью с другими лицензиями.
Разработка LGPLv3
Работа над LGPLv3 началась одновременно с разработкой GNU GPLv3 в 2005 году. FSF стремился создать единую систему лицензий, где LGPLv3 была бы логическим дополнением к GPLv3. Основные изменения коснулись:
- Усиления защиты от патентных претензий (явный патентный грант от участников).
- Запрета на использование технических мер защиты (DRM) для ограничения прав пользователей.
- Улучшения совместимости с другими свободными лицензиями (например, Apache License 2.0).
- Введения механизма «поздней версии» (any later version), позволяющего переходить на будущие версии лицензии.
Окончательная версия LGPLv3 была опубликована 29 июня 2007 года, одновременно с GPLv3.
Основные положения
Определение и сфера действия
LGPLv3 — это копилефт-лицензия, но с ослабленными требованиями по сравнению с GPLv3. Она предназначена в первую очередь для программных библиотек, хотя может применяться и к отдельным программам. Ключевое отличие — разрешение на динамическое связывание (linking) с проприетарным кодом без необходимости лицензировать всю программу под LGPL.
Разрешения и ограничения
Лицензия предоставляет следующие права:
- Использование: можно запускать, копировать и распространять программу в неизменном виде.
- Модификация: можно изменять исходный код библиотеки.
- Распространение: можно передавать копии как в исходных кодах, так и в скомпилированном виде.
Ограничения касаются:
- Копилефт: если вы распространяете модифицированную версию библиотеки, вы обязаны предоставить её исходный код под той же лицензией (LGPLv3).
- Связывание: при динамическом связывании с проприетарным кодом не требуется открывать весь проект. Однако если вы статически связываете библиотеку или встраиваете её код в свою программу, то должны предоставить пользователю возможность перелинковать (re-link) вашу программу с модифицированной версией библиотеки. Для этого требуется либо распространение объектных файлов, либо использование подходящего механизма (например, разделяемых библиотек).
- Патентный грант: каждый участник, распространяющий код под LGPLv3, автоматически предоставляет всем пользователям неотзывную лицензию на свои патенты, которые необходимы для использования этого кода.
- Защита от DRM: лицензия запрещает использование технических мер, ограничивающих права пользователя, и трактует обход таких мер как разрешённое действие (статья 3).
Условия для проприетарного использования
Разработчик проприетарного ПО может использовать библиотеку под LGPLv3 при соблюдении следующих правил:
- Библиотека должна быть доступна в виде исходного кода (или объектных файлов) для модификации.
- Пользователь должен иметь возможность заменить библиотеку на модифицированную версию (например, через динамическую линковку).
- В документации или интерфейсе программы должно быть указано, что она использует библиотеку под LGPLv3, и предоставлена ссылка на текст лицензии.
Отличия от GPLv3 и LGPLv2.1
Сравнение с GPLv3
- Строгость копилефта: GPLv3 требует, чтобы любое производное произведение (включая программы, использующие библиотеку) распространялось под GPLv3. LGPLv3 допускает проприетарное использование при условии сохранения свободы самой библиотеки.
- Применение: GPLv3 чаще используется для приложений, LGPLv3 — для библиотек и фреймворков.
Сравнение с LGPLv2.1
- Патентная защита: LGPLv2.1 не содержала явного патентного гранта, что создавало риски для пользователей. LGPLv3 включает его.
- Совместимость: LGPLv3 совместима с Apache License 2.0, GPLv3 и рядом других лицензий. LGPLv2.1 совместима только с GPLv2 и GPLv3.
- DRM: LGPLv3 явно запрещает ограничения, налагаемые DRM, в то время как LGPLv2.1 этот вопрос не регулировала.
- Механизм «поздней версии»: LGPLv3 позволяет указать «any later version», что упрощает обновление лицензии. LGPLv2.1 также поддерживала эту опцию, но менее гибко.
Применение
Типичные сценарии
LGPLv3 используется для:
- Библиотек общего назначения: например, GNU C Library (glibc) — одна из самых известных библиотек под LGPL (хотя glibc использует LGPLv2.1, а не v3).
- Фреймворков и SDK: многие проекты, такие как Qt (до версии 5.4 использовал LGPLv2.1, затем перешёл на LGPLv3), используют LGPLv3 для привлечения коммерческих разработчиков.
- Инструментов разработки: например, компилятор GCC (GNU Compiler Collection) распространяется под GPLv3, но его библиотеки (libstdc++) — под GPLv3 с исключением, близким к LGPLv3.
Примеры проектов
- Qt — кроссплатформенный фреймворк для разработки GUI, использует LGPLv3 (наряду с коммерческой лицензией).
- GNU C Library — базовая библиотека языка C в системах GNU/Linux, распространяется под LGPLv2.1, но с возможностью перехода на LGPLv3.
- OpenSSL — библиотека криптографии, перешла на Apache License 2.0, но ранее использовала LGPLv2.1.
- FFmpeg — библиотека для обработки мультимедиа, использует LGPLv2.1 или LGPLv3 (на выбор).
Критика и ограничения
Недостатки для разработчиков
- Сложность соблюдения: условия LGPLv3 требуют тщательного проектирования архитектуры (разделение на динамические библиотеки) и юридической проверки, что может быть обременительно для небольших проектов.
- Несовместимость с некоторыми лицензиями: LGPLv3 несовместима с GPLv2 (из-за различий в патентных положениях), что создаёт проблемы при смешивании кода.
- Ограничение на статическую линковку: статическое связывание с библиотекой под LGPLv3 требует предоставления объектных файлов, что не всегда удобно.
Критика со стороны сообщества
- Некоторые разработчики считают LGPLv3 излишне сложной и предпочитают пермиссивные лицензии (MIT, BSD) или LGPLv2.1.
- Механизм «поздней версии» критикуется за то, что он может привести к автоматическому переходу на будущие версии лицензии, которые могут быть менее выгодными для пользователя.
Интересные факты
- LGPLv3 является первой версией LGPL, которая официально называется «GNU Lesser General Public License», а не «GNU Library General Public License» (хотя версия 2.1 уже использовала слово «Lesser»).
- FSF рекомендует использовать LGPLv3 только для библиотек, а для приложений — GPLv3.
- Существует специальное исключение (exception) для LGPLv3, позволяющее использовать библиотеку в проектах под GPLv2, но это требует отдельного согласования.
Источники
- Free Software Foundation. GNU Lesser General Public License, version 3. — 2007.
- Stallman R. Free Software, Free Society: Selected Essays of Richard M. Stallman. — 3rd ed. — Boston: GNU Press, 2015.
- Lindberg V. Intellectual Property and Open Source: A Practical Guide to Protecting Code. — O'Reilly Media, 2008.
- Rosen L. Open Source Licensing: Software Freedom and Intellectual Property Law. — Prentice Hall, 2004.
- Документация проекта Qt. Licensing Overview. — Qt Group, 2023.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →