Логотип | |
Последняя версия | 3 (2007; 13 лет назад (2007)) |
---|---|
Опубликовано | 1991; 29 лет назад (1991) |
SPDX идентификатор | LGPL-2.0, LGPL-2.1, LGPL-3.0 |
Совместимость с Debian FSG | Да |
FSF одобрено | Да |
OSI одобрено | Да |
Совместимость с GPL | Да |
Copyleft | Да |
Связывание из кода с другой лицензией | Да |
Веб-сайт | www.gnu.org / copyleft / lesser.html |
Стандартная общественная лицензия ограниченного применения GNU (LGPL ) - это лицензия на свободное программное обеспечение, опубликованная Free Software Foundation (FSF). Лицензия позволяет разработчикам и компаниям использовать и интегрировать программный компонент, выпущенный под LGPL, в свое собственное (даже проприетарное ) программное обеспечение без требований строгой лицензии с авторским левом для выпуска исходный код собственных компонентов. Однако любой разработчик, модифицирующий компонент под LGPL, должен сделать свою измененную версию доступной по той же лицензии LGPL. Для проприетарного программного обеспечения код под LGPL обычно используется в форме разделяемой библиотеки, так что существует четкое разделение между проприетарными и LGPL компонентами. LGPL в основном используется для программных библиотек, хотя он также используется некоторыми автономными приложениями.
LGPL была разработана как компромисс между строгим авторским левом Стандартной общественной лицензии GNU (GPL) и другими разрешительными лицензиями, такими как лицензии BSD и лицензия MIT. Слово «Меньший» в названии показывает, что LGPL не гарантирует конечному пользователю полную свободу использования программного обеспечения; он гарантирует свободу модификации только для компонентов, лицензированных по LGPL, но не для каких-либо проприетарных компонентов.
Лицензия первоначально называлась Стандартная общественная лицензия для библиотеки GNU и была впервые опубликована в 1991 году, а для равенство с GPL версии 2. LGPL была незначительно пересмотрена в версии 2.1, опубликованной в 1999 году, когда она была переименована в GNU Lesser General Public License, чтобы отразить позицию FSF, что не все библиотеки должны ее использовать. Версия 3 LGPL была опубликована в 2007 году как список дополнительных разрешений, применяемых к GPL версии 3.
В дополнение к термину «работа на основе Программы» GPL в LGPL версии 2 были введены два дополнительных поясняющих термина. «произведение, основанное на библиотеке» и «произведение, использующее библиотеку». В LGPL версии 3 эти условия частично исключены.
Основное различие между GPL и LGPL заключается в том, что последняя позволяет связать произведение с (в случае библиотеки, «используется») программа без (L) GPL, независимо от того, является ли это свободным программным обеспечением или несвободным программным обеспечением. В LGPL 2.1 программа без (L) GPL может распространяться на любых условиях, если она не является производным продуктом. Если это производная работа, то условия программы должны разрешать «модификацию работы для собственного использования заказчиком и обратный инжиниринг для отладки таких модификаций». Вопрос о том, является ли произведение, использующее программу LGPL, производным произведением, является юридическим вопросом. Автономный исполняемый файл, который динамически связывает с библиотекой через .so, .dll или аналогичный носитель, обычно считается не производным, как определено LGPL. Это подпадало бы под определение «произведение, использующее Библиотеку». Пункт 5 LGPL версии 2.1 гласит:
По сути, если это «произведение, использующее библиотеку», то это должно быть возможно для программное обеспечение, которое необходимо связать с более новой версией программы под LGPL. Наиболее часто применяемый метод для этого - использование «подходящего механизма разделяемой библиотеки для связывания». В качестве альтернативы статически связанная библиотека разрешена, если предоставлен исходный код или связываемые объектные файлы.
Одной из функций LGPL является разрешение на relicense под GPL любой части программного обеспечения, полученного по LGPL (см. раздел 3 LGPL версии 2.1 и раздел 2 вариант b LGPL версии 3). Эта функция позволяет напрямую повторно использовать код под LGPL в библиотеках и приложениях под лицензией GPL.
Версия 3 LGPL по своей сути несовместима с версией 2 GPL. Однако работы, использующие последний, которые дали разрешение на использование более поздней версии GPL, совместимы: произведение, выпущенное под GPLv2 «или любой более поздней версией», может быть объединено с кодом из библиотеки LGPL версии 3, при этом объединенная работа будет все подпадает под условия GPLv3.
Прежнее название «Стандартная общественная лицензия GNU для библиотек» создало впечатление, что программные библиотеки, рекомендованные FSF, используют LGPL и что программы используют GPL. В феврале 1999 года руководитель проекта GNU Ричард Столлман написал эссе «Почему не следует использовать Lesser GPL для своей следующей библиотеки», объяснив, что LGPL не была устаревшей, но не обязательно использовать LGPL для все библиотеки:
Столлман и FSF иногда выступает за лицензии, даже менее ограничительные, чем LGPL, как вопрос стратегии. Ярким примером является одобрение Столлманом использования лицензии в стиле BSD проектом Vorbis для использования в своих библиотеках в 2001 году.
В лицензии используется терминология, которая в основном предназначена для приложений, написанных на языке программирования C или его семействе. Franz Inc. опубликовала свою собственную преамбулу к лицензии, чтобы прояснить терминологию в контексте Lisp. LGPL с этой преамбулой иногда называют LLGPL.
Кроме того, Ada имеет специальную функцию, generics, которая может побуждать к использованию GNAT Modified Стандартная общественная лицензия : она позволяет коду связываться или создавать экземпляры модулей, покрытых GMGPL, без того, чтобы сам код подпадал под действие GPL.
Шаблоны C ++ и библиотеки только для заголовков имеют ту же проблему, что и универсальные шаблоны Ada. Версия 3 LGPL рассматривает такие случаи в разделе 3.
Возникла некоторая озабоченность по поводу пригодности объектно-ориентированных классов в LGPL, которые наследуются по не- (L) GPL кодам. Разъяснение дано на официальном сайте GNU: