Позволяет ли мне LGPL сделать это?

16

Я планирую разработать коммерческое программное обеспечение с использованием программного обеспечения LGPL.

В программном обеспечении LGPL, которое я использую, некоторые функции в классе реализованы не полностью. Я хочу изменить код LGPL, чтобы класс и не реализованные функции были видны за пределами dll, добавив dllexport перед классом и добавив виртуальное ключевое слово перед функцией.

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

Это нарушает условия LGPL?

Daenyth
источник
6
Проблема с вашим вопросом заключается в том, что вы не пытаетесь использовать лицензию в том духе, в котором она была написана. Вероятно, мы можем ответить на вопросы о предполагаемом значении лицензий, но мы не можем получить достоверные юридические сведения вообще , Для этого мы можем только рекомендовать адвоката. Более того, то, что вы делаете, зависит от юридического вопроса (какова производная работа программного обеспечения LGPL?), Который не был урегулирован в США в прецедентном праве, и я видел разные мнения среди настоящих юристов. (Я не юрист, но я случайно следил за этими проблемами.)
Дэвид Торнли
Тяжело сказать. Прочитайте это: javalobby.org/java/forums/t15903.html - они говорят о Java, но, похоже, применимо к любому языку OO.
Майк Баранчак

Ответы:

26

Это сложный вопрос, но я считаю, что то, что вы предлагаете, не допускается.

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

Проблема заключается в том, что если вы подкласса класса, который подпадает под лицензию LGPL в вашем собственном коде, то ваша работа становится работой, основанной на библиотеке , а не работой, которая использует библиотеку, что означает, что ваш код является производным работа, которая рассматривается в разделе 2 ( LGPL v2.1 ), а не в разделе 6 ( LGPL v2.1 ). Т.е. это становится предметом LGPL !

Я думаю, что Стивен Коулборн дает хорошее резюме по javalobby.

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

Кроме того, вы могли бы спросить FSF напрямую. С их страницы контактов :

По вопросам лицензирования свободных программ и авторского права

Пожалуйста, ознакомьтесь с нашими часто задаваемыми вопросами по лицензированию, списком лицензий , общей информацией об авторских правах и соответствующими страницами . Если вопросы остались, напишите <licensing@gnu.org>.

Между прочим, в связанный с ним вопрос Отражение и LGPL , gbjbaanb ответы с на LGPL 3.0 перспективе .

Марк Бут
источник
4
Мне нравится предложение "Спроси у FSF"
ZJR
Мое чтение состояло в том, что они хотели представить больше функций в библиотеке LGPL. Пока полученная библиотека все еще LGPL, и пользователь программного обеспечения OP может свободно заменять библиотеку своей встроенной - я был бы счастлив
Martin Beckett
3
@MartinBeckett - Не совсем, спрашивающий пытается обойти LGPL, изменяя библиотеку, чтобы ему было легче тайно изменить библиотеку в своем закрытом исходном коде. Если бы он добавил свою новую библиотечную функциональность непосредственно в LGPL и затем использовал ее в своем собственном коде, проблем не было бы. В том-то и дело, что он пытается сохранить свой собственный новый функционал закрытым исходным кодом, оставаясь при этом частью библиотеки, вот в чем проблема.
Марк Бут
6
В LGPL 3.0 говорится: «Определение подкласса класса, определенного библиотекой, считается способом использования интерфейса, предоставляемого библиотекой». Так что это должно быть разрешено, по крайней мере, под LGPL 3.0.
Дэвид
3
@ Дэвид - я считаю, что, изменяя библиотеку LGPL, чтобы позволить вам переопределить функцию, которая обычно не может быть перезаписана, вы молчаливо признаете, что ваш код достаточно тесно связан с тем, что он «основан на», а не «используется» отношениями с библиотекой, поэтому активируется слабый авторский лев.
Марк Бут
13

Стандарт Я не отказ от адвоката.

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

Википедия для более подробного, но не адвокатского описания LGPL, включая раздел о наследовании классов .

unholysampler
источник
+1. Подводя итог: мы думаем, что это не нарушает LGPL (но IANAL)
MarkJ
@MarkJ - Как я объясняю в своем ответе , я не уверен, что в данном случае вопрос является просто вопросом наследования классов.
Марк Бут
9
Я думаю, что людям просто нравится набирать IANAL, потому что он содержит «ANAL».
g33kz0r
5

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

Похоже, что вы пытаетесь сделать, это обойти LGPL, что в этом случае с этими методами вы не можете.

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

Но если вы пытаетесь обойти LGPL, я бы связался с FSF в соответствии с рекомендациями Марка Бута .

Сообщество
источник
1
Проблема в том, что LGPL допускает некоторые формы производных работ, а другие запрещает. Я обновил свой ответ, чтобы провести различие между производными работами, которые подпадают под категорию работ, основанных на библиотеке (которая должна быть LGPL), и работами, которые используют библиотеку (которой нет).
Марк Бут
@MarkBooth Я согласен с вами и другими, что в данном случае это происходит, work based onпоскольку они вносят изменения в LGPL с целью раскрытия ранее закрытого кода.
1

Мое предположение: (но IANAL) вы должны выпустить модифицированную библиотеку с открытым исходным кодом в виде кода LGPL, а затем поместить ее в коммерческую программу. Это будет работать. По сути, у вас будет открытый библиотечный форк с открытым исходным кодом, и вы будете продавать его для внешнего интерфейса.

Но, как справедливо сказали многие, спросите у FSF : у вас там интересный патологический сценарий; они могли бы задаться вопросом так же, как и вы, применимо это или нет. (или, по крайней мере, беспокоиться об этом достаточно, чтобы опубликовать запись FAQ по теме)

Zjr
источник
1

https://www.gnu.org/licenses/lgpl-java.html

Если вы распространяете приложение Java, которое импортирует библиотеки LGPL, вы легко согласуетесь с LGPL. Лицензия вашего приложения должна позволять пользователям изменять библиотеку и перепроектировать ваш код для отладки этих изменений. Это не означает, что вам нужно предоставить исходный код или какие-либо подробности о внутренностях вашего приложения. Конечно, некоторые изменения, которые пользователи могут внести в библиотеку, могут нарушить интерфейс, из-за чего библиотека не сможет работать с вашим приложением. Вам не нужно беспокоиться об этом - люди, которые изменяют библиотеку, несут ответственность за то, чтобы она работала.

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

Nik.B
источник
1
Ваш ответ противоречит нескольким другим ответам, но не обеспечивает много, чтобы поддержать ваши требования. Другие ответы более подробны и лучше объясняют их утверждения. Пожалуйста, измените свой ответ, чтобы предоставить соответствующие цитаты из лицензии или FSF, чтобы поддержать вашу заявку.
Как на самом деле мой ответ не обеспечивает много, чтобы поддержать мои требования? Я поместил ссылку на официальную страницу GNU, которая устраняет путаницу в LGPL и наследовании классов. Он даже обновлен до LGPL v3.
Nik.B