Уникайте порушення GPL, переміщуючи бібліотеку поза процесом


21

Припустимо, існує бібліотека, яка має ліцензію відповідно до GPL. Я хочу використовувати це проект із закритим джерелом. Я роблю наступне:

  1. Створіть невелику програму для обгортки навколо тієї бібліотеки GPL, яка прослуховує розетку, розбір повідомлень та виклик бібліотеки GPL. Потім повертає результати назад.
  2. Випустіть його джерела (щоб відповідати GPL)
  3. Створіть клієнт для цієї обгортки в моєму головному додатку та не випускайте джерела.

Я знаю, що це додає величезних накладних витрат у порівнянні зі статичним / динамічним зв'язком, але мене цікавить теоретичний шлях.


6
Обгортка, яку ви пишете, буде ліцензована відповідно до GPL. Тому програма, яка використовує обгортку, все ще поширюватиметься на умовах GPL для зв’язування тощо
TZHX,

4
чому б не зв’язатися спочатку з автором і дізнатись, чи можете ви натомість отримати ліцензію під LGPL або подібною.
jk.

8
@TZHX Я вважаю, що він означає, що обгортка буде окремим додатком, який виконує функції сервера - його власний код буде у клієнта
jk.

також хто також буде розповсюджувати додаток із закритим кодом? і яка версія GPL є ліцензією
jk.

2
@jwenting питання чітко говорить про те, що у нього закінчується процес
jk.

Відповіді:


32

Юридично я б сказав, що це було б нормально (але я не юрист - зверніться до юриста за юридичною порадою).

Морально це досить грізно. Якщо вам не подобається GPL, то "правильним" рішенням є не використання бібліотеки GPL.

Редагувати : Щоб уточнити, незалежно від правового становища GPL стосовно дозволеного чи ні динамічного зв’язку, LGPL було спеціально створено з метою забезпечення динамічного зв’язку у випадку з бібліотеками. Тож мені здається зрозумілим, що, обираючи GPL через LGPL, автор бібліотеки робив це явно, щоб заборонити динамічне посилання. На мою думку, використання технічного засобу для подолання юридичного обмеження, яке виражає явний намір автора його коду, - це те, що є переслідувальним.

Для запису я особисто не є фанатом GPL (я віддаю перевагу більш дозвільній ліцензії, такі як MIT або BSD). Однак я величезний шанувальник поваги до роботи інших розробників, і якщо вони не хочуть, щоб ви пов’язували їхню бібліотеку з програмним забезпеченням із закритим кодом, то це є прерогативою.


12
Я не думаю, що тут є моральна проблема - GPL, здається, прямо дозволяє його використання
jk.

3
@vartec тут є цитатою з офіційного FAQ GPL: "Поєднання статично або динамічно з іншими модулями - це комбінована робота на основі. Таким чином, умови Загальної публічної ліцензії GNU охоплюють всю комбінацію." Якщо Сталлман має інше бачення того, що таке Open Source, це не означає, що він його ненавидить. Він є одним з головних ідеологів цього руху.
Андрій

8
@vartec: У мене складається враження, що ви не розумієте, що, використовуючи код ДЕЯКОГО ELSE у вашій заявці, ви зобов’язані відповідати умовам, які ВІН застосовує для використання його коду. Вам це не подобається? Не використовуйте чужий код GPL'ed. Це просто.
Джон Р. Стром

3
Ось моя пропозиція: дістаньте чорт із того GPL-коду, від якого ви здаєтеся таким залежним, і подивіться, як виходить судова справа. GPL3 був створений, щоб підключити саме такі законні дірки в GPL2, тож, можливо, ви уникнете цього. Я сумніваюся, що люди будуть кидати паради на вашу честь, тому що ви пішли з легальним маневром, і якщо ви будете достатньо ефективними, люди отримають ліцензію на свій код із більшою кількістю умов користування лише для того, щоб вас зла. Зрештою, це може покращити світ, уникаючи таких тем.
Годеке

3
Я НЕ погоджуюсь із твердженням, що це морально осуд. Морально осудним є те, щоб сказати людям, що вони не мають права робити те, що дозволяє їм GPL. Коли я поміщаю роботу під GPL, я роблю це, тому що хочу застосувати правила GPL. Сказати людям, що вони не повинні користуватися правами, які надає їм GPL, є грішним. Це те, що дозволяє GPL. Ті, хто розміщує роботи під GPL, роблять це, тому що хочуть цього дозволити.
Девід Шварц

6

IANAL, але я вважаю, що ви все в порядку, відповідний розділ GPL3 знаходиться в кінці розділу 5:

Збірка висвітленої роботи з іншими окремими та незалежними творами, які за своєю природою не є розширенням висвітленої роботи, і які не поєднуються з нею, наприклад, для формування більшої програми, в обсязі зберігання чи розповсюдження середовище, називається "сукупністю", якщо компіляція та отримане в результаті авторське право не використовуються для обмеження доступу чи законних прав користувачів компіляції, крім того, що дозволяють окремі твори. Включення охопленої роботи в сукупність не призводить до застосування цієї Ліцензії до інших частин сукупності.

Це, мабуть, буде залежати від того, що саме робить ваш "клієнт", відповідь мувічевіля - це, мабуть, хороші вказівки щодо того, як це зробити безпечно

Якщо ви вважаєте, що ваш додаток - це розширення бібліотеки, а не щось зведене з нею, то ви, мабуть, праві (вам слід це добре знати), і в цьому випадку найкраще звернутися до автора і спробувати отримати інша ліцензія

це , мабуть, підкріплює мою позицію про те, що GPL явно дозволено, якщо вважати, що це зроблено належним чином.


Я читав це, але проблема полягає в тому, що текст GPL написаний юридичною мовою, а не розробкою . Трюк із обгорткою полягає в тому, щоб зробити комерційну програму "сукупною", а не "похідною". Але я думаю, що це підпадає під "природи розширення висвітленого твору".
Андрій

а для допомоги з юридичної мови вам знадобиться юрист. Якщо ви вважаєте, що ваш додаток - це розширення бібліотеки, а не щось зведене з нею, то ви, мабуть, праві (вам слід це добре знати), і в цьому випадку найкраще звернутися до автора і спробувати отримати інша ліцензія
jk.

1
@Andrey: Якщо "природа" вашої програми безпосередньо пов'язана з кодом GPL, розділ, цитований вище, не застосовується. З вашого запитання це звучить так. Приклад зустрічного може бути мережевою програмою аналізу вторгнень, яка, як правило, використовує лінію читання GNU через запропонований вами механізм. (Readline - цікавий тестовий випадок, оскільки існує альтернатива, що має ліцензію на BSD.)
Fred Nurk

Застереження "агрегат" полягає в тому, щоб зрозуміти, що перебування на одному і тому ж дистрибутиві CD-Rom або Linux не створює похідну.
Шон Макміллан

6

Дивіться, що я хотів би включити програмне забезпечення, охоплене GPL, у мою власну систему. Чи можу я це зробити?

Питання в тому, чи використовує ваша програма для обгортки самостійно? Якщо ви створили версію своєї програми в командному рядку GPL, ви можете випустити графічний інтерфейс за іншою ліцензією. Наприклад, ви можете зробити IDE для gcc, який був закритим джерелом, або візуального інструменту diff на основі diff.

Однак якщо у вас завершена бібліотека не має іншого використання, ніж ваша програма, і ви б програмою не користувалися без цієї бібліотеки, ніж це похідна робота, і її потрібно буде випустити під GPL.


Я розумію, що ви можете ліцензувати обгортку під MIT і все одно бути в порядку.
Тостер

2
Колін, абсолютно ні. Обгортка однозначно поєднується з бібліотекою GPL в єдиний двійковий файл. Щоб використовувати код GPL у межах одного двійкового файлу, ви повинні GPL власний код, щоб відповідати ліцензії.
Бетон Ганне

5

ІМО, юридично це нормально. (IANAL) Щоб покращити моральну сторону проблеми, не називайте це "обгорткою FooBar, яка робить FooBar законним доступним для MyClosedApp", а називайте його сервером. Зробіть це приємною маленькою програмою з відкритим кодом, яка "дозволяє робити FooBar через мережу". Розмістіть його на SourceForge або присвятіть йому веб-сайт із сторінкою проекту та інструкціями та іншим текстом. Тоді нехай "MyClosedApp" просто використовує "сервер FooBar".


2

Наскільки я розумію, ви можете залишати програмне забезпечення із закритим кодом, якщо воно може виконувати свою роботу без бібліотеки GPL. Розгляньте бібліотеку GPL як плагін, відсутність якого не робить ваше програмне забезпечення марним.


1
це, безумовно, неправильно. використовуючи його як плагін (він же динамічний зв'язок) робить результуючу програму "похідною" та предметом GPL.
Андрій

Я не впевнений, що плагін завжди є синонімом динамічно пов'язаних. І, безумовно, в цьому випадку ОП не пропонує динамічно нічого пов'язувати, тому я думаю, що порада мувічіеля стоїть
jk.

@jk добре, якщо ви створили лише один плагін і він заснований на ліцензії GPL, це сприймає як порушення.
Андрій

4
AGPL не забороняє цього, якщо сокет не надходить через мережу. Це досить специфічно. Крім того, це не тест на корисність, а на те, наскільки наближено GPLed та власне програмне забезпечення. Статичні зв'язки, безумовно, занадто близькі, розетки (за винятком конкретного випадку AGPL), безумовно, добре, динамічне посилання може бути, а може і не бути (я чула правомірні аргументи з кожної сторони, і досі немає судової практики США).
Девід Торнлі

1
@Andrey: тому ви зараз говорите, що поки програмне забезпечення із закритим кодом, як Photoshop, може виконувати свою роботу без компонента GPL, можна розповсюджувати його, не роблячи його GPL. Тобто саме те , що ця відповідь каже.
Док Браун

1
  1. спробуйте знайти альтернативу з відкритим кодом, якщо такої немає, перейдіть до GPL;
  2. перевірте, чи це GPLv3 з пропозицією Affero, якщо він є, нічого робити не можна;
  3. якщо це GPLv2, ви можете робити саме так, як ви пропонуєте;

Існує також дещо суперечливий варіант. Відповідно до більшості законодавчих органів, динамічне пов'язування повинно бути обмежене "похідною роботою". Логіка цього полягає в тому, що під час динамічного посилання ви просто включаєте в свою програму файли заголовків. У багатьох законодавствах файли заголовків розглядаються як визначення API та явно виключаються з авторського права. З іншого боку, при динамічному підключенні фактичне з'єднання з бібліотекою GPL здійснюється в системі кінцевого користувача. Але, як я вже говорив, з цим багато суперечок, Стеллман рішуче проти цього.


яка різниця між GPL v2 та v3, що робить мій злом неможливим? Що я роблю це не динамічне пов'язування, я їх максимально розв’язую.
Андрій

Однією з цілей GPLv3 було запобігти такому методу "обходу".
vartec

4
По-перше, варіанти GPL є офіційними, схваленими OSI, ліцензіями з відкритим кодом (так само, як ліцензія BSD без рекламного пункту є ліцензією вільного програмного забезпечення, затвердженою Stallman). По-друге, жодна версія GPL (включаючи Affero) не обмежує вашу здатність GPLed та власницьке програмне забезпечення спілкуватися зі стандартними міжпроцесорними методами зв'язку, наприклад сокетами.
Девід Торнлі

IMO GPLv3, що дозволяє, наприклад, застереження DRM порушує пункт 6. Означення з відкритим кодом
Source.org/docs/osd

1
@vartec: DRM - це не "Поле зусиль". Див. "Наприклад, програма може не обмежувати використання програми в [комерційному підприємстві] або використання генетичних досліджень". OSI, очевидно, вважає, що GPL3 є відкритим кодом та відповідає всім пунктам їх визначення, оскільки вони його затвердили.
Томас Едлсон

0

Чи було б законним, щоб Адам Браун писав програму, яка використовувала бібліотеку GPL і діяла як "сервер", якби він випустив увесь вихідний код на все, що з ним пов'язано, але єдиний клієнтський код, який він випустив, був досить слабким, тому що це все він написав на стороні клієнта? Я не бачу жодної підстави думати, що це не буде.

Якби Чарльз Довер знайшов "сервера" Адама Брауна і вирішив написати програму із закритим кодом для спілкування з нею, чи GPL будь-яким чином стримуватиме його дії? Я не бачу цього, оскільки його єдиним використанням програмного забезпечення GPL'ed було б як бінарні файли, які він отримав від Адама Брауна. Якби він розповсюджував бінарні файли Адама, він також повинен був би включити посилання на джерело, але нічого іншого в GPL не вплине на будь-який код Чарльза.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.