Ограничения лицензирования открытого исходного кода GPL и LGPL

У меня проблемы с пониманием разрешений на использование с открытым исходным кодом. Я где-то читал, что GPL или LGPL требуют, чтобы программное обеспечение, использующее GPL, также должно быть выпущено с открытым исходным кодом. Я хочу создать приложение, которое использует некоторую библиотеку распознавания изображений с открытым исходным кодом. Могу ли я продавать это приложение или оно должно быть с открытым исходным кодом?

Спасибо!


person rsinha    schedule 11.07.2009    source источник


Ответы (6)


LGPL позволяет вам использовать и распространять программное обеспечение с открытым исходным кодом вместе с вашим приложением, не публикуя исходный код вашего приложения.

GPL требует, чтобы вы выпустили исходный код вашего приложения, если вы решите использовать и распространять программное обеспечение с открытым исходным кодом под лицензией GPL вместе с вашим приложением. Другими словами, ваше приложение также должно быть под лицензией GPL.

person Robert Harvey    schedule 11.07.2009
comment
Обратите внимание, что в LGPL указано, что используемая библиотека должна быть заменяемой. Таким образом, статическое связывание невозможно. - person Dykam; 11.07.2009
comment
Итак, DLL (библиотека динамической компоновки) будет законной, верно? - person Robert Harvey; 12.07.2009
comment
Только если вы также предоставите исходный код для этой DLL, а также необходимые файлы заголовков или документацию, чтобы иметь возможность взаимодействовать с остальной частью приложения, если кто-то захочет сильно изменить или переписать с нуля, это DLL. - person thomasrutter; 12.02.2013

  • GPL

    Другие разработчики могут заимствовать и модифицировать код, а также распространять его как часть своего собственного проекта, только если весь их проект также находится под лицензией GPL.

    Это предотвращает использование кода в проприетарном программном обеспечении.

  • ЛГПЛ

    Другие разработчики могут заимствовать и изменять код, а также повторно распространять его как часть своего собственного проекта при условии, что часть, используемая в соответствии с LGPL, включая любые модификации, повторно лицензируется в соответствии с LGPL. Другие части проекта могут иметь другие лицензии.

    Это позволяет использовать код в проприетарном программном обеспечении.

Следует отметить, что LGPL является более длинной и сложной лицензией, чем сама GPL, потому что она содержит полный текст GPL, а затем добавляет к нему дополнительные условия.

Многие дополнительные условия LGPL определяют условия, которые необходимо выполнить, чтобы иметь возможность распространять ваш код в проекте с другой лицензией. Например, пользователю не только должен быть предоставлен исходный код раздела под LGPL, но и у пользователя готового программного обеспечения должна быть возможность изменять, перекомпилировать или заменять часть программного обеспечения, лицензированного в соответствии с LGPL. и используйте этот модифицированный код с тем же программным обеспечением. Если вы публикуете проприетарное программное обеспечение, содержащее некоторый код LGPL, один из способов выполнить это требование — поместить код LGPL в отдельную динамически подключаемую библиотеку и распространять вместе с вашим программным обеспечением необходимые файлы заголовков и документацию, необходимую для повторной компиляции LGPL. часть таким образом, чтобы ее можно было связать и использовать с программным обеспечением, как это предусмотрено. Недопустимо предпринимать шаги для предотвращения изменения кода LGPL, такие как запутывание самого кода или файлов API или заголовков.

Обратите внимание, что LGPL совместима с GPL: вы можете обновить код до GPL и включить его в проект, полностью лицензированный GPL, как указано в моем первом пункте, если хотите. Однако вы не можете пойти другим путем и повторно лицензировать лицензионный код GPL как LGPL.

person thomasrutter    schedule 23.11.2012
comment
Что, если вы удалите весь исходный код, за исключением одного вызова printf, и перепишете все остальное с нуля, все еще находится под лицензией? - person bluejayke; 12.10.2020
comment
Что ж, это общий вопрос об авторских правах и гипотетический мысленный эксперимент — вряд ли кто-то подаст в суд из-за одной строки кода. Технически он по-прежнему будет защищен авторским правом, поэтому по-прежнему подлежит лицензии. Но вряд ли это имеет значение по практическим причинам. - person thomasrutter; 07.01.2021
comment
интересно, дело в том, чтобы попытаться понять категорию авторского права, степень, что значит копировать код? что, если посмотреть на первоисточник и вручную вручную перепечатать похожий, но не совсем такой же код? Что, если кто-то воспользуется программой для копирования исходного кода, но изменит имена переменных, последовательности и т. д., в какой момент авторские права будут удалены? - person bluejayke; 07.01.2021
comment
@bluejayke, я не юрист, но вот мой взгляд на ваш вопрос. Если вы удалите весь исходный код, за исключением одного вызова printf, вы будете делать это в файлах, которые должны иметь лицензию в баннере файла. Этот лицензионный баннер не может быть юридически удален в соответствии с лицензией. Все, чем вы замените этот код, даже если вы удалите все содержимое кода, включая printf, будет находиться под той же лицензией. - person Deon McClung; 25.01.2021
comment
@bluejayke повторный ввод одного и того же кода является формой копирования, одним из многих способов копирования, когда, даже если вы не скопировали его в электронном виде, вы методично намеревались создать копию с помощью других средств. Если вы смотрите на код для вдохновения, а затем реализуете какой-то код, который использует ту же идею или концепцию, но ни одна из его частей не является копией, это не копия. Вы можете получить некоторые строки, которые по сути одинаковы, и юридическая ситуация с ними рискованна, поэтому люди, не желающие быть обвиненными в копировании чего-либо, могут действовать осторожно при повторной реализации того, что они видят. - person thomasrutter; 26.01.2021
comment
Если вы скопируете чужой код и запутаете его (измените все имена переменных и т. д.), это производная работа, которая включала копирование, поэтому авторское право ограничивает ее. На самом деле, я считаю, что запутывание специально запрещено GPL (и, следовательно, LGPL тоже). - person thomasrutter; 26.01.2021

IANAL, но концепции довольно просты.

Во-первых, вы и ваш юрист должны прочитать GPL и LGPL лицензии. Во-вторых, вы должны прочитать Часто задаваемые вопросы о GPL. Насколько я понимаю, вы можете думать об использовании библиотек GPL/LGPL следующим образом:

  • Если вы динамически или статически подключаетесь к библиотеке GPL или LGPL, вы создаете производную работу.
  • Если вы используете библиотеку под лицензией GPL и связываетесь с этой библиотекой, ваше программное обеспечение должен быть выпущен с совместимой лицензией.
  • Если вы используете библиотеку под LGPL и динамически компонуете эту библиотеку, ваше программное обеспечение не обязательно должно выпускаться с совместимой лицензией, но вы все равно должны соответствовать LGPL.
  • Если вы используете библиотеку под лицензией LGPL и статически компонуете эту библиотеку, ваше программное обеспечение должно быть выпущено с совместимой лицензией.
  • Лицензии GPL/LGPL означают «свободный», как в "свобода слова", а не "свободный пиво". Вы можете создавать производные работы и продавать их за большие деньги, но вы должны соблюдать условия GPL/LGPL.
person Jared Oberhaus    schedule 11.07.2009
comment
Во-первых, вы и ваш юрист должны ознакомиться с лицензиями GPL и LGPL. -- убей меня сейчас - person d512; 10.08.2016
comment
простой. На самом деле настолько просто, что вам нужно нанять юриста, чтобы посмотреть, сможете ли вы использовать немного кода. Вот почему разработчики никогда не должны использовать лицензии GPL. - person Womble; 01.06.2017
comment
Что касается статической и динамической компоновки, я думаю, что реальное различие заключается в том, что динамическая компоновка удовлетворяет потребность в том, чтобы пользователи могли перекомпилировать исходный код. Если вы предоставите способ сделать это при статической привязке, вы все равно можете это сделать. Например, предоставив достаточно исходного кода из остальной части проекта. Однако, если лицензия, которую вы используете для части, не относящейся к LGPL, имеет закрытый исходный код, вы вряд ли захотите это делать, поэтому существует убеждение, что она должна быть динамически связана. - person thomasrutter; 07.01.2021

Если вы вырезаете и вставляете или связываете код GPL в своем приложении, ваше приложение должно быть лицензировано по GPL, и тогда вы должны выпустить код.

Тем не менее, вы все еще можете продавать свое приложение и, на самом деле, единственное обязательство состоит в том, что вы предоставляете исходный код своим клиентам.

Если библиотека, с которой вы связываетесь, является публичной лицензией Lesser Gnu, также известной как LGPL, вам не нужно выпускать код вашего собственного приложения, но вы все равно должны выпускать все модификации, если вы изменили код lgpl'd.

person rasjani    schedule 11.07.2009
comment
выпустить исходный код для ваших клиентов - правда? только им? Я думал, что src должен быть общедоступным? - person relascope; 08.05.2015
comment
Я не носитель английского языка и не юрист. gnu.org/licenses/gpl-faq.html#WhatDoesWrittenOfferValid указывает тот, кто больше всего предоставляет исходный код любому, у кого есть доступ к двоичному файлу. Это не говорит о том, что любой может запросить исходный код, но любой, кому был предоставлен двоичный файл, либо непосредственно от вас, либо от ваших непосредственных клиентов. - person rasjani; 09.05.2015
comment
заявляет об этом прямо, только для клиентов ... Но если вы каким-то образом выпускаете модифицированную версию для публики, GPL требует, чтобы вы сделали измененный исходный код доступным для пользователей программы под GPL. - person relascope; 10.05.2015
comment
единственное обязательство состоит в том, что вы предоставляете исходный код своим клиентам. - нет, хотя это основное требование GPL, есть много других. - person thomasrutter; 07.01.2021
comment
Я думал, что src должен быть общедоступным? - Нет, вам нужно только предоставить исходный код по запросу тому, кто получит ваше программное обеспечение (от вас). Но, поскольку исходный код имеет открытую лицензию, этот клиент может на законных основаниях опубликовать исходный код. Таким образом, он всегда является общедоступным в том смысле, что ваши клиенты могут свободно выпускать его или делиться им, размещать его на Github или где-то еще. Нет смысла пытаться помешать источникам стать достоянием общественности. - person thomasrutter; 07.01.2021

GPL не запрещает вам продавать программное обеспечение. Однако вы должны сделать доступными исходные коды программного обеспечения.

Вопрос использования немного сложнее. GNU/Linux распространяется под лицензией GPL. Ничто не запрещает вам писать программное обеспечение, работающее под Linux, независимо от лицензии вашего программного обеспечения. Однако вы не можете распространять Linux вместе со своим программным обеспечением. Это часто проблема с библиотеками, которые должны быть частью программы. Для этого и нужна лицензия LGPL. Вы можете скомпилировать программу c, которую вы пишете, с помощью gcc (следовательно, используя библиотеки подпрограмм времени выполнения под лицензией LGPL от gcc) и по-прежнему выпускать свое программное обеспечение без ограничений GPL.

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

Надеюсь это поможет.

person txwikinger    schedule 11.07.2009

Различие между GPL и LGPL определяет, нужно ли вам предоставлять исходный код вашего приложения всем, у кого есть копия двоичного файла. В любом случае вы все еще можете продать приложение.

person Troubadour    schedule 11.07.2009