Чи можу я тимчасово використовувати бібліотеки GPL для прототипування та зробити майбутній код закритим джерелом?


23

Я працюю над прототипом для програмної системи, яка (принаймні на старті) буде закритим джерелом.

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

Що робити, якщо я цього не роблю, але переконуюсь, що моя система працює, а потім замінюю бібліотеку GPL власним кодом перед розповсюдженням? Чи буде результат "забрудненим" GPL?

У мене є відчуття, що збереження бібліотеки GPL в моїй історії Git може змінити значення.


16
Мені подобається вираз "забруднений GPL".
Арсеній Муренко

7
це добре поєднується з вірусною природою ліцензії :)
Laurent S

5
Виправте мене, якщо я помиляюся, але ви хочете випустити систему із закритим кодом, одночасно розміщуючи код на git? (і я вважаю, що цей git читається іншими, бо в іншому випадку, чому ви б турбуєтесь про те, щоб мати історію GPL в історії?)
user2813274

3
@ user2813274, ви можете мати приватне сховище Git.
Артуро Торрес Санчес

5
Коли ви вважаєте це питання цікавим, вам також може бути цікавою пропозиція про новий Open Source Stackexchange .
Філіп

Відповіді:


20

GPL пише :

Ви можете передати роботу, засновану на Програмі, або модифікації для її отримання у Програмі у вигляді вихідного коду згідно з умовами розділу 4, за умови, що ви також виконуєте всі ці умови:

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

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

Тобто ваша програма "заснована" на бібліотеці, якщо і лише тоді, якщо вона є похідним твором згідно із законодавством про авторські права. Юридичне визначення цього терміна дещо різниться між юрисдикціями, і зазвичай не стосується програмного забезпечення безпосередньо. Наприклад, Закон про авторські права США пише:

"Похідний твір" - це твір, заснований на одному або декількох існуючих творах, таких як переклад, музична композиція, драматизація, фікціоналізація, версія кінофільму, звукозапис, відтворення мистецтва, скорочення, конденсація або будь-яка інша форма, в якій твір можуть бути перероблені, перетворені або адаптовані. Твір, що складається з редакційних редакцій, анотацій, доробки та інших модифікацій, які в цілому представляють оригінальний авторський твір, є «похідним твором».

Що це означає для програмного забезпечення, повинні тлумачити суди, грунтуючись на попередніх аналогічних рішеннях. Я недостатньо знайомий з відповідною прецедентною практикою у вашій юрисдикції, щоб з упевненістю сказати, як суд вирішить вашу справу. Можна стверджувати, що "заміна бібліотеки GPL власним кодом" є актом перекладу, особливо якщо ваш код сильно натхненний реалізацією GPL. Навіть повторне використання API бібліотеки GPL може поставити вас у гарячу воду (див. Oracle vs. Google ).

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


1
ОК, це цікаво, я не розумів, що обмін API може вважатися похідною роботою.
Лоран S

Ця відповідь робить те саме, що я намагався зробити у своїй відповіді нижче, але набагато чіткіше. +1
Майкл Шоу

23

Поки ви не передаєте програмне забезпечення нікому, поки ви посилаєтесь на бібліотеки GPL'd, ви в безпеці. Вірусний аспект GPL виникає лише в тому випадку, якщо ви розповсюджуєте своє програмне забезпечення.

Було б краще, якби ви могли знайти бібліотеку з більш дозвільною ліцензією, звичайно, як LGPL або APL2 або MIT.


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

5
Ця відповідь не враховує ризик створення похідного твору при впровадженні нової версії бібліотеки.
Майкл Шоу

4
@Ptolemy Майте на увазі, що якщо ваша історія git випущена, ви випустили стару версію. Для обліку це не повинно бути у двійковій формі.
piojo

2
@piojo З іншого боку, це в більшості випадків зобов'язує вас ліцензувати цю стару версію під GPL (і поширювати джерело для неї); якщо в якийсь момент ви опинилися з єдиним авторським правом на код, ви можете зробити всі майбутні версії із закритим кодом (хоча старі версії продовжують знаходитись під GPL). Залежно від кількості патентованих матеріалів у старій версії, у вас можуть виникнути проблеми.
cpast

1
Поки Laurent S є автором та власником авторських прав на всі інші коди поруч із GPL, він також в безпеці. Він може і може дозволити випустити всю роботу за умовами GPL3 лише на випадок, якщо згодом це може бути результатом. Це може бути небажаним, але ОП явно є безпечним у будь-якому випадку (якщо авторські права належать).
хакре

8

Я не думаю, що ваше питання насправді стосується GPL. Йдеться про прототип і про те, чи буде він використовуватись у майбутньому як основа для програмної системи, що постачається.

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

Три підходи, які можна взяти

Однак, якщо ви збираєтеся розвивати прототип (щось вимагає багато менеджерів!), Ви можете скористатися трьома підходами:

  1. Перемістіть непрофільні частини в окремі додатки, які спілкуються з вашим ядром через JSON або REST API або іншу мову / бібліотеку міжпроцесорних комунікацій. Таким чином, ваші непрофільні частини також можуть бути GPL, і ви можете використовувати в них будь-які бібліотеки GPL.
  2. Створіть свій код так, щоб ви могли замінювати бібліотеки. Це означає створення фасаду, який приховує деталі реалізації. Коли ви будете готові перейти на власну бібліотеку або бібліотеку MIT / BSD.
  3. Ніколи не використовуйте код GPL.

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

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


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

1
@Deduplicator, якщо це окремі програми, яких недостатньо, вони повинні розглядатися як окрема база коду, ви маєте рацію. Ніби не подобається, що Twitter робить з Bootstrap і що Facebook робить з усіма своїми бібліотеками. Непрофільний відкритий код з основним власницьким кодом.
Рудольф Олах

@omouse, я не можу зробити 1, оскільки це вбудоване програмне забезпечення. 2 була моєю першою думкою, але побачивши, що згадують Птолемей та Мерітон, це здається, що я буду робити похідні твори, тому 3, мабуть, шлях.
Лоран S

1
Re: "Я не думаю, що ваше питання насправді стосується GPL": я не згоден. Ліцензія на програмне забезпечення, безумовно, може заборонити подібне використання. Відповідь, яка ігнорувала "GPL" частину питання, і просто сприйняла це як загальне запитання про ліцензію з відкритим кодом з обмежувальними умовами та вірусною поведінкою, повинна вдатися до "ми не знаємо, у вас буде читати умови ліцензії ".
ruakh

Якщо ви створюєте похідний твір і викидаєте його, ви все-таки створили похідний твір і можете робити це лише з дозволу / ліцензії оригінального власника авторських прав. У GPL у вас є ця ліцензія (якщо ви ніколи не поширюєте похідну роботу перед тим, як викинути її). З іншою ліцензією ви можете не мати дозволу. Позов вам за шкоду може бути важким.
gnasher729

5

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

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

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


4

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


2

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

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


2

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

У мене є відчуття, що збереження бібліотеки GPL в моїй історії Git може змінити значення.

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

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