Чи дозволяє LGPL мені це зробити?


16

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

У програмному забезпеченні LGPL, що я використовую деякі функції в класі, не реалізовано повністю. Я хочу змінити код LGPL так, щоб функції класу та не реалізовані функції були видимими поза dll, додавши dllexport infront класу та додавши віртуальне ключове слово infront функції.

Тоді я планую реалізувати ці функції у своєму власному програмному забезпеченні. Я готовий розповсюджувати модифікований код LGPL, але не власницьке програмне забезпечення, яке реалізує функції так, як я хочу.

Чи це порушує умови та умови LGPL?



6
Проблема в тому, що ваше запитання тут полягає в тому, що ви не намагаєтесь використовувати ліцензію у тому вигляді, про який вона написана. Ми, мабуть, можемо відповісти на запитання про цільове значення ліцензій, але ми не можемо вникнути в юридичні деталі взагалі надійно. . Для цього ми можемо лише порекомендувати юриста. Більше того, те, що ви робите, залежить від юридичного питання (що є похідною роботою програмного забезпечення LGPLed?), Яке не було врегульовано в США в рамках судової практики, і я бачив різні думки серед реальних юристів. (Я не юрист, але я випадково стежу за цими проблемами.)
Девід Торнлі

Важко сказати. Прочитайте це: javalobby.org/java/forums/t15903.html - вони говорять про Java, але це здається застосовно до будь-якої мови ОО.
Майк Баранчак

Відповіді:


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 і користувач програмного забезпечення ОП може безкоштовно замінити ліб на їх створення - я був би радий
Мартін Бекетт

3
@MartinBeckett - Не зовсім, запитуючий намагається обійти LGPL, модифікуючи бібліотеку, щоб полегшити йому приховану модифікацію бібліотеки у закритому вихідному коді. Якби він додав свою нову функціональність бібліотеки до LGPL безпосередньо, а потім використовував її у власному коді, проблем не було б. Справа в тому, що він намагається зберегти власну нову функціональність закритим джерелом, але все ще є частиною бібліотеки, ось у чому проблема.
Марк Бут

6
LGPL 3.0 зазначає: "Визначення підкласу класу, визначеного Бібліотекою, вважається режимом використання інтерфейсу, що надається Бібліотекою." Тож це слід дозволити, принаймні під LGPL 3.0.
Девід

3
@David - Я вважаю, що, змінюючи бібліотеку LGPL, щоб дозволити вам змінити функцію, яку зазвичай не можна переоцінити, ви мовчазно визнаєте, що ваш код достатньо щільно пов'язаний з тим, що він має "заснований на", а не як Зв'язок "використовується" з бібліотекою, тому слабке копілефт активується.
Марк Бут

13

Стандарт Я не відмовляюся від адвоката.

LGPL вимагає модифікації вихідного коду бібліотеки, щоб поширюватися будь-кому, хто використовував ваш код. Це не вимагає, щоб ваш код, який використовує бібліотеку, був відкритим і розповсюджувався за тією ж ліцензією.

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


+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 : це ваш інтригуючий патологічний сценарій; вони можуть дивуватися стільки ж, скільки ви, чи це застосовно чи ні. (або принаймні набридає цим достатньо, щоб опублікувати запитання із поширеними запитаннями з цієї теми)


1

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

Якщо ви поширюєте програму Java, яка імпортує бібліотеки LGPL, дотримуватися LGPL легко. У ліцензії вашої програми потрібно дозволити користувачам змінювати бібліотеку та інженерувати ваш код для відладки цих модифікацій. Це не означає, що вам потрібно надати вихідний код або будь-які деталі щодо внутрішніх даних вашої програми. Звичайно, деякі зміни, які можуть вносити користувачі до бібліотеки, можуть порушити інтерфейс, завдяки чому бібліотека не може працювати з вашою програмою. Вам не потрібно турбуватися про це - люди, які модифікують бібліотеку, несуть відповідальність за те, щоб вона працювала.

Коротше кажучи, немає проблеми з успадкуванням до тих пір, поки ви не зміните сам код бібліотеки, але навіть якщо ви її зміните, ви повинні випустити лише модифікований код бібліотеки, а не код програми.


1
Ваша відповідь суперечить декільком іншим відповідям, але не дає великої кількості підтверджень ваших претензій. Інші відповіді більш деталізовані та краще пояснюють їх твердження. Будь ласка, відредагуйте свою відповідь, щоб надати відповідні цитати з ліцензії чи ФФС, щоб підтримати свою претензію.

Як насправді моя відповідь не дає великої кількості моїх претензій? Я поклав посилання на офіційну сторінку GNU, яка очищає плутанину щодо LGPL та спадкування класів. Він навіть оновлюється, щоб охопити LGPL v3.
Нік.Б.

1
Дивіться також: meta.stackexchange.com/questions/225370/…
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.