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

LGPLv3

LGPLv3 (GNU Lesser General Public License version 3, GNU Меньшая Стандартная Общественная Лицензия версии 3) — это лицензия на свободное и открытое программное обеспечение, опубликованная Фондом свободного программного обеспечения (FSF) 29 июня 2007 года. Она является наследницей LGPLv2.1 и представляет собой компромиссный вариант между строгой копилефт-лицензией GPLv3 и разрешительными лицензиями, такими как MIT или BSD. Основное назначение LGPLv3 — предоставление разработчикам возможности использовать свободные библиотеки в проприетарном (закрытом) программном обеспечении, при условии сохранения свободы модификации самой библиотеки.

История

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

Первая версия GNU Lesser General Public License (LGPL) была выпущена в 1991 году как ответ на потребность в лицензии, позволяющей использовать свободные библиотеки в коммерческих приложениях без требования открывать весь исходный код программы. Изначально она называлась Library General Public License (Библиотечная Стандартная Общественная Лицензия). Вторая версия (LGPLv2.1) вышла в 1999 году и стала широко распространённой, особенно в экосистеме Java (например, библиотеки проекта GNU Classpath).

Разработка LGPLv3

Разработка LGPLv3 велась параллельно с GPLv3 в рамках процесса, начатого FSF в 2005 году. Основными целями были:

  • Устранение неоднозначностей, выявленных при использовании LGPLv2.1.
  • Обеспечение совместимости с GPLv3.
  • Усиление защиты от патентных исков и тивоизации (ограничения пользователей в модификации ПО на аппаратных платформах).
  • Введение механизма явного предоставления патентных лицензий.

Окончательная версия LGPLv3 была утверждена и опубликована 29 июня 2007 года, одновременно с GPLv3.

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

Определение «Меньшей» лицензии

Основное отличие LGPLv3 от GPLv3 заключается в том, что LGPLv3 позволяет связывать (линковать) лицензированную библиотеку с проприетарным кодом, не требуя, чтобы весь результирующий продукт распространялся под GPL. В терминах лицензии это называется «использованием работы, основанной на библиотеке» (use of a work based on the Library). Если программа просто использует библиотеку через стандартные интерфейсы (например, динамическое связывание), то на неё не распространяются требования LGPL.

Условия для проприетарного кода

Разработчик, использующий библиотеку под LGPLv3 в своём закрытом приложении, обязан:

  1. Предоставить пользователям возможность получить исходный код самой библиотеки (включая все её модификации).
  2. Разрешить пользователям модифицировать библиотеку и выполнять обратную разработку (reverse engineering) для отладки таких модификаций.
  3. Обеспечить возможность замены библиотеки на модифицированную версию (например, через динамическое связывание или предоставление объектных файлов).

Патентные положения

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

Защита от тивоизации

LGPLv3 включает в себя положения, направленные против «тивоизации» — практики, когда производители устройств (например, маршрутизаторов или смартфонов) блокируют возможность установки модифицированных версий программного обеспечения на аппаратное обеспечение. Если устройство распространяется с программой под LGPLv3, производитель обязан предоставить пользователю информацию, необходимую для установки модифицированной версии (например, ключи подписи или инструкции по перепрошивке).

Отличия от LGPLv2.1

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

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

Явное определение «Модифицированной версии»

LGPLv3 вводит более чёткое определение «модифицированной версии» (modified version) и «работы, использующей библиотеку» (work that uses the Library). Это снижает неопределённость, существовавшую в LGPLv2.1, особенно в отношении статического связывания.

Условия для распространения в составе устройства

LGPLv3 содержит более строгие требования к производителям устройств, включая необходимость предоставления «информации для установки» (Installation Information), что отсутствовало в LGPLv2.1. Это является прямым следствием борьбы с тивоизацией.

Патентная защита

LGPLv2.1 не содержала явных положений о патентах, что делало её уязвимой для патентных исков. LGPLv3 включает в себя полный набор патентных гарантий, аналогичных GPLv3.

Применение

Типичные сценарии использования

LGPLv3 обычно применяется для библиотек и фреймворков, которые разработчики хотят сделать доступными для широкого круга проектов — как свободных, так и проприетарных. Классические примеры:

  • Библиотеки языка C (например, glibc — GNU C Library, хотя она использует LGPLv2.1).
  • Графические библиотеки (GTK, Qt — последняя перешла на LGPLv3).
  • Библиотеки обработки мультимедиа (FFmpeg, GStreamer).
  • Библиотеки для работы с базами данных (SQLiteобщественное достояние, но многие обёртки используют LGPL).

Примеры проектов на LGPLv3

  • GTK+ (версия 3 и выше) — кроссплатформенный набор инструментов для создания графических интерфейсов.
  • Qt (начиная с версии 5.7) — фреймворк для разработки приложений, доступный под LGPLv3 (наряду с коммерческой лицензией).
  • GNU Libmicrohttpd — библиотека для встраивания HTTP-сервера в приложения.
  • GNU Readline — библиотека для редактирования командной строки (использует LGPLv3).

Ограничения

LGPLv3 не подходит для:

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

Критика и обсуждения

Сложность для понимания

LGPLv3, как и GPLv3, является юридически сложным документом (около 7000 слов). Многие разработчики предпочитают более простые разрешительные лицензии (MIT, Apache 2.0) или более строгую GPLv3, чтобы избежать неоднозначностей.

Совместимость с LGPLv2.1

LGPLv3 не является прямой заменой LGPLv2.1. Проекты, распространяемые под LGPLv2.1, могут быть перелицензированы на LGPLv3 только с согласия всех авторов кода. Это создаёт проблемы для крупных проектов с большим количеством контрибьюторов.

Влияние на коммерческое использование

Некоторые компании, особенно в сфере встраиваемых систем, критикуют LGPLv3 за усиление требований к производителям устройств. Они утверждают, что это снижает стимулы для использования свободных библиотек в коммерческих продуктах, так как увеличивает юридические риски и затраты на обеспечение соответствия.

Альтернативы

Для разработчиков, которые хотят разрешить использование своей библиотеки в проприетарном ПО, но не хотят связываться с копилефт-условиями, существуют альтернативы:

  • MIT License — максимально простая и разрешительная лицензия.
  • Apache License 2.0 — разрешительная лицензия с явной патентной оговоркой.
  • BSD 2-Clause License — ещё одна простая разрешительная лицензия.

Источники

  • Free Software Foundation. GNU Lesser General Public License, version 3. — Официальный текст лицензии.
  • Stallman, R. 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.
  • Lindberg, V. Intellectual Property and Open Source: A Practical Guide to Protecting Code. — O'Reilly Media, 2008.
  • Документация проекта GNU: «Why you shouldn't use the Lesser GPL for your next library». — Статья Ричарда Столлмана о выборе между LGPL и GPL.

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

На главную BFOmetr →