GPL на робочому місці?


12

Одного разу я взяв інтерв'ю в консалтинговій компанії, де в розмові було зрозуміло, що вони використовують продукти з відкритим кодом (що чудово, я широко використовував Hibernate, JBoss тощо). Одне, що мене здивувало, - це те, що я запитав, чи вони використовували ОС GPL з ліцензією під час написання заявок для клієнтів, і говорили: "Безумовно, весь час! Поки клієнт отримує те, що хоче, і щасливий". Тепер я не юрист або великий ліцензійний баф, але в мене склалося враження, що, використовуючи GPL-код (скажімо, якусь бібліотеку, яку ви включаєте), вам потрібно буде випустити всю програму під тією ж ліцензією. Коли я вказав на це, мені дали швидку відповідь: "Ну, ми даємо клієнтам весь вихідний код, коли ми закінчимо, так що це насправді не проблема".

Не бажаючи більше натискати на цю проблему (інтерв'ю - це не місце для таких аргументів), я дозволяю їй ковзати. Однак це все ще мене стосується конкретної практики бізнесу. Яке офіційне слово у ліцензованому коді GPL та наскільки "відкритим" воно має бути? Вам потрібно опублікувати його і сказати: "Моя компанія використовувала цю бібліотеку, щоб ось веб-сайт, на якому ви можете завантажити наше додаток для системи покупок і замовлень, на що ми витрачаємо мільйони доларів". Чи в цій ситуації компанія правильно використовувати GPL-код без відома клієнта? Чи достатньо лише "дати їм джерело"?

Відповіді:


15

Застосовуються стандартні відмови від відповідальності: я не юрист і не ви.

GPL, по суті, полягає у захисті прав тих, хто використовує програму для отримання та використання джерела. Ви не зобов'язані публікувати джерело будь-якої програми, яку ви пишете, яка використовує код GPL'd, лише те, що якщо ви публікуєте таку програму, ви також повинні надати джерело.

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

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


1
Ви маєте рацію, але AGPL суворіше щодо цього

@Pierre: правильно, в тому сенсі, що ви не можете вивести джерело для своїх користувачів, дотримуючись серверних програм.
Shog9

1
Цікаво. Отже, у стандартній GPL, якщо ви пишете додаток SaaS, вам не потрібно давати джерело, оскільки ви технічно не "розповсюджуєте" саму програму?
Райан Хейс

2
@Ryan: правильно. Ну, від вас не потрібно давати його своїм користувачам . Кожен, хто отримує скомпільований код, все одно отримує джерело.
Shog9

7

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

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

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


2

Відкритий код не обов'язково означає безкоштовний.

IANAL або, але загалом вимога до GPL полягає у наданні вихідного коду для вашого проекту. Ви, звичайно, можете продати товар комусь іншому. Однак я вважаю, що ви не можете перешкодити їм віддати їх. Це, мабуть, те, що робить більшість програмного забезпечення GPL'd безкоштовним, як у пиві. Я впевнений, що вам не доведеться публікувати свій код у world + dog тільки тому, що це GPL'd.

З преамбули до v3 GPL (акцент власний):

Ліцензії на більшість програмних та інших практичних робіт покликані позбавити вашу свободу спільного використання та зміни творів. Навпаки, Загальна публічна ліцензія GNU покликана гарантувати вашу свободу спільного використання та зміни всіх версій програми - щоб переконатися, що вона залишається безкоштовним програмним забезпеченням для всіх своїх користувачів. Ми, Фонд вільного програмного забезпечення, використовуємо загальну публічну ліцензію GNU для більшості нашого програмного забезпечення; це стосується також будь-яких інших творів, опублікованих таким чином його авторами. Ви також можете застосувати його до своїх програм.

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

( джерело )

Чи в цій ситуації компанія правильно використовувати GPL-код без відома клієнта? Чи достатньо лише "дати їм джерело"?

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


2
GPL не вимагає, щоб ви активно публікували джерело, але він вимагає, щоб ви публікували користувачеві факт, що програма є GPL, і ви доставите джерело на запит (можливо, за умови справедливої ​​та розумної плати за обробку). На практиці з останньою вимогою часто обробляється тарбол або блискавка за URL-адресою, яку можна видавати за запитом. Як консультант, ви зобов’язані повідомити клієнту про те, яким буде їхня тягар, якщо він розповсюдить вашу роботу іншим особам, оскільки вони стають видавцем у рамках GPL.
RBerteig

@RBerteig Дякую за пояснення Минув час, коли я переглянув умови ліцензії.
Джордж Маріан

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

-5

Ні, ти прав. Ось чому:

Подумайте, чи є у нас додаток під GPL. Тепер він не може використовуватися власницьким кодом.

Якби досить просто відкрити вихідний код, який використовує GPL, я міг би відкрити вихідний код проекту, заснованого на ньому як BSD.

Тоді власне програмне забезпечення може використовувати продукт GPL.


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

1
Власний код не може використовувати код GPL. Його частина є причиною існування ліцензії.
альтернатива

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

@Містер. C під власним кодом я маю на увазі код, несумісний з GPL. А код буде розподілений клієнту так ... Але так, я не юрист , так що я міг би бути неправим.
альтернатива

2
-1, хибна відповідь. Це справедливо лише для деяких визначень "використання" та "власності". Наприклад, я міг створити вбудований продукт Linux і випустити лише ядро ​​та код Linux, які посилаються безпосередньо на код ядра, але не мій інтерфейс користувача чи інші додатки, які просто працюють на ядрі GPLed. Багато таких стосунків існує. Неоднозначність у використанні "патентованого" вже висвітлена. Крім того, у більшості юрисдикцій "робота за наймом", яка надається лише тій стороні, яка найняла розробника для кодування, не є тотожною, як розповсюдження. IANAL тощо
HedgeMage
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.