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


99

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

Корабель Тесея Paradox (як зазначено у Вікіпедії) «піднімає питання про те, чи залишиться об'єкт , який мав всі його компоненти замінені принципово той же предмет.»

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

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

Подальше : я вирішив зв’язатися з власником авторських прав і отримав дозвіл на повторне використання права . Іноді найкращий спосіб - це взаємодіяти соціально, а не програмно!


6
Порівняйте аудит ReactOS : було твердження, що ReactOS (безкоштовна заміна Windows) був пошкоджений за допомогою просоченого та зворотного інженерного коду MS Windows (на який вони ніколи не брали ліцензію). Вони вирішили це систематично замінивши весь код незрозумілого походження юридичним кодом "чистої кімнати зворотного проектування" - принципово новим кодом, написаним з чистої специфікації.
jdm

3
@jdm Китайська стіна / код чистої кімнати також повинні бути написані людьми, які не брали участь у зворотному проектуванні та мають обмежений (юридично переглянутий) зв’язок з ними. WRT до ігнорування ліцензії та просто «порушення авторських прав замість цього» - це означало б те саме, оскільки ви все одно не будете мати права розповсюджувати матеріали, на які ви порушили авторські права.
goldilocks

9
@jdm GPL не є договором, і його ніхто не повинен приймати. GPL - це ліцензія, і ви повинні її дотримуватися, якщо скористаєтесь ліцензією. Це не двостороння вулиця чи переговори чи встановлення багатозаконних зобов’язань, як це договір. Що це робиться, це вказати єдині правила, згідно з якими вам дозволяється використовувати код. IANAL, але мені це було пояснено декількома юристами з ліцензування.
Елін

3
@CrazyCasta: Ви помиляєтесь про сферу застосування GPL. Ви заявляєте, що це єдина причина мати будь-які права. Це явно невірно і відверто самої GPL. GPL охоплює лише права на розповсюдження. Ви маєте необмежене право на використання та вивчення коду, навіть не приймаючи GPL.
MSalters

1
@MSalters: GPL надає права на розповсюдження та модифікацію . Без ліцензії ви маєте право лише використовувати програмне забезпечення таким, яким воно є.
RemcoGerlich

Відповіді:


95

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

Я коротко боровся з цим у 1992 році, коли зробив масштабне переписування старої бази коду MUD. Ми провели успішну гру, але хотіли зробити свою справу, і люди готові були за це заплатити, але ліцензія DikuMUD категорично забороняє нам заробляти гроші. У той час конкурент також базував їх на одній кодовій базі, і вони вирішили нахабно ігнорувати авторські права, вирвати всі його сліди і в основному брехати всім, включаючи себе. Їх логіка полягала в тому, що "жодного оригінального коду не існує" і "ми зробили масові переписування та вдосконалення" і взагалі ігноруючи той факт, що вони почали з 20 000 рядків коду. Вони стягували кошти в грі та заробляли занадто багато грошей, щоб зупинитись.

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

Тож я вирішив покласти свої гроші там, де був мій рот, і писати з нуля, з копією мережевого програмування UNIX W. Річарда Стівена зі мною, я все-таки починав. Як писати з нуля, мій шлях, навчив мене набагато більше, ніж коли я переписав DikuMUD, і це також навчило мене, що я не дуже розумів, що означає стояти на чужих плечах. Протягом шести місяців у мене було 50 000 рядків операційного коду, які я міг би назвати своїм. Я назвав його MUD ++ і випустив його під BSD. Погано написаний на ранньому стилі C ++, він все ще був першим безкоштовним відкритим кодом C ++ MUD, про який я знаю. До сьогодні ніхто не може його забрати у мене. У мене був найкращий на той час сервер TCP; ніхто інший не міг зробити «гарячу перезавантаження», не відкидаючи гравців, і незабаром всі крали функцію (і я зазначив, що багато GUD MUD мають фрагменти мого BSD-коду - завжди цікаво, як GPL може викрасти BSD-посуд, але не навпаки ). Врешті-решт я пішов далі, тож це не схоже на те, що рішення було прийняття чи перерва на моє щастя, але, поки інші хлопці заробляли багато грошей на деякий час, востаннє я дивився, що вони зменшилися, у світі графічних ігор масового попиту на текст вже немає.

Історія не закінчується ... Через кілька років я працював у IBM, і Дісней найняв нас, щоб написати в режимі реального часу багатокористувацьку гру для центру Epcot, і я зміг використовувати ядро ​​TCP з MUD ++ як базу для цього ігровий сервер! Якби я не володів власним кодом, я б не дозволив ним користуватися, і це чесно заощадило мені тиждень кодування. Зрештою, я пишаюся вибором, який я зробив, і маю розповісти дітям історію.

Люди занижують і недооцінюють вигоду, починаючи з чужих рамок, на яких потрібно будувати.

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

Перш ніж це зробити, спробуйте зв’язатися з оригінальним автором. Запитайте у них, чи бажають вони передати релігію. Якщо ви плануєте продавати бінарні файли, запропонуйте роялті. Багато авторів, які випустили речі GPL у 90-х та 2000-х, зараз у своїх 30-х, 40-х та 50-х роках та розуміють, що означає заробляти на життя програмним забезпеченням. Я бачив не один релігінг своїх матеріалів від GPL до MIT, Apache, Boost або BSD.

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

Моя віра - це БЕЗКОШТОВНО. Якщо ви повинні приєднати рядки, не називайте це безкоштовно. Хтось мені по пошті через рік сказав, що вони використовували мою гру в комерційному двигуні, головним чином TCP і, можливо, інтерпретатора байт-коду. Вони заробляли гроші. Я не заперечував жодного шматочка. Я був щасливий, як і зараз, як гордий батько.


4
Насправді я збирався запропонувати це, і я загубився в своїй історії. Так, будь-яким чином, проконсультуйтеся з оригінальним автором, віддавайте йому шану, так би мовити, і ви, мабуть, здивуєтеся тому, як часто автор просто радий, що ви взяли клопоти просити. І багато молодих хлопців з коледжів, які в 90-х та 2000-х роках були великими, зараз розуміють, що програмістам потрібно заробляти на життя.
codenheim

13
Мені подобається ця відповідь, і я хотів би підтримати цю заяву, але я не можу, оскільки це стосується анти-GPL в останньому абзаці. Рядок, який GPL приєднує, полягає в тому, що в майбутньому рядки можуть не додаватися.
Майкл Шоу

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

16
@MichaelShaw: Насправді я вважав, що це найяскравіша частина цієї відповіді. Ваша вимога з іншого боку фактично помилкова . Якщо автор GPLd-коду вирішить випустити нові версії свого коду за іншою ліцензією, вони цілком дотримуються своїх прав. Вони прикріплюють рядки не до себе, а лише до тих, з ким вони "діляться" своїм кодом. Найприємніше, як я можу описати це, як принципова відсутність віри в людство.
back2dos

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

31

Цей сценарій висвітлюється у FAQ щодо GPL :

Що GPL каже про переклад якогось коду на іншу мову програмування?

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


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

7
@Landon Ваша робота все ще є похідною від роботи GPL, і тому вона пов'язана з умовами GPL.
Філіпп

1
@Landon: те, що визначає, чи застосовується GPL, насправді не має нічого спільного з GPL, це чи ваш кінцевий результат - це «похідна робота» чи ні. Додавання більшої кількості матеріалів не перетворює похідний твір на недеривативний твір, оскільки в законі йдеться не про частку твору, яка є похідною, а сировину. Звичайна конверсія на іншу мову також є похідною, і саме про це повідомляє / нагадує FAQ. Питання, яке ви повинні задати своєму адвокату, - "враховуючи мої процедури, чи визнає суд це похідною роботою?".
Стів Джессоп

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

8

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

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

Також дивіться це запитання: Перезапис GPL-коду для зміни ліцензії

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

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

Що стосується додавання функціональності до вихідного коду, це (частина) саме визначення похідних творів: додавання до оригінального твору. Не важливо, скільки ви додали, чи наскільки мала початкова робота - це все ще похідне.


3
Я не впевнений, що мені подобається вибір аналогії: оригінальне запитання звучить більше так, як вони думають, що вони спочатку зв'язували свої речі з Гаррі Поттером, але тепер хочу зв’язати це своїм власним фантастичним епічним романом із магією та лиходіями, що відбувається насамперед у школі в замку.

1
@Hurkyl Так 50 відтінків сірого?
Yamikuronue

8
Побачивши код, не означає, що ви його скопіювали. Реалізація чистої кімнати корисна, якщо ви очікуєте, що власник оригінального коду не сподобається тому, що ви робите, і подасть до вас позов, тому ви можете сказати в суді: "ми не копіювали код; навіть якби ми цього хотіли, не міг ", що є сильним захистом. Побачивши код, ви все ще можете сказати "ми не копіювали код", якщо це правда.
gnasher729

2
Погодьтеся з @ gnasher729. GPL спеціально заявляє, що вам дозволяється вивчати код. Передумова полягає в тому, що автор відпустив це, щоб навчити вас (серед іншого). З цієї причини я ніколи не застосовував аргумент чистої кімнати до GPL-коду. Не можна публікувати кулінарну книгу, а потім подавати до суду на людей, які створюють свої власні рецепти, якщо, звичайно, код не запатентований, тоді патентна охорона охоплює методи та винаходи, але не реалізацію (AFAIK). Авторські права та патент - це різні проблеми.
codenheim

1
Я б сказав, що дуже низька ймовірність потрапити в зал суду, якщо ви порушите GPL, оскільки за допомогою одного або двох винятків кожного разу, коли виникає проблема, один адвокат людей, які порушують GPL, розуміє GPL, який він їм каже. або зупинити, або укласти угоду. Це, безумовно, мій досвід, коли б мені довелося писати лист про порушення. І є спеціалісти, які захищають GPL за оригінального розробника. Дійсно, найкраща порада - поговорити з оригінальним кодером. Я попросив людей подвійний / реліцензійний код, і вони майже завжди гаразд гаразд.
Елін

7

Спостереження: GPL є актуальним лише у разі звільнення вашої роботи. Ви випустили його ще?

Спостереження: Це не веб-сайт юрисконсультів, тому викиньте все, що є юридичним FUD, і застосовуйте здоровий глузд.

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

Це дуже важко (неможливо?) Досягти, хоча, коли у вас є існуюча база коду, яку ви змінюєте, замість того, щоб починати з нуля.


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

1
@DavidRicherby: Якщо це юридичне питання, то відповідь є специфічною для юрисдикції, а питання q слід закрити як занадто локалізоване. :-)
Мартин Ба

2
@MartinBa - міжнародне право в значній мірі погоджується щодо авторських прав. Локальні варіанти існують, але я не думаю, що питання / відповіді обов'язково занадто локалізовані, щоб бути корисними.
хмарний фут

5

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

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

Застереження:

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

(Джерело: сесія "авторських прав та відкритих джерел", організована моєю компанією кілька тижнів тому)


Ви можете замінити "документ" на "договір" або "договір". Недостатньо просто написати на папері "DougM володіє кодом cloudfeet". Ми повинні мати юридичний обмін, який би пройшов судовий розгляд.
DougM

Залежить від юрисдикції - принаймні там, де я перебуваю, навіть усні договори є обов'язковими, доводити просто важко. Пост-текст із відповідним почерком теоретично би тримався . : p
cloudfeet

Однак ваш пункт хороший, а договір / угода - кращий опис - спасибі :)
cloudfeet

3

Так.

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

Справа в тому, що ви будете мати нову роботу, як тільки заміните останні частини, яка, правда, була побудована, дивлячись на роботу GPL'ed. Це не є особливою проблемою в законодавстві про авторські права (патенти будуть ще однією проблемою). Все, що ви поширите, буде вашим творінням.

Існує багато матеріалів, що підтверджують теорію того, що авторські права на програмну програму є частиною часткових авторських прав. Наприклад, MPL чітко визнає цю модель. Позов Google / Oracle перейшов до авторських прав на рівні.


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

1
@DougM: Вибачте, але це дуже консервативне припущення, яке я ніколи не бачив, щоб успішно використовувався в суді. Не забувайте, якби ця теорія мала будь-яку юридичну актуальність, вона застосовуватиметься і до книг - комп'ютерний код не має спеціальних законів для визначення того, що є похідною роботою. Ніхто не збирається сперечатися, що ваша книга - це похідне від Шекспіра лише тому, що ви читали одну зі своїх п’єс у школі. Таким чином, цей прецедент встановлює, що планка "похідної роботи" набагато вище, ніж "прочитали подібний твір".
MSalters

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

1
Можна задатися питанням, як далеко міг пройти Linux, якби заміни коду Unix оригінальним кодом було недостатньо.
користувач2338816

3
@ user2338816 Linux не запускався з коду Unix, він починався з MINIX. І технічно можливо, що MINIX міг мати справу проти Linux. Це залежало б від того, як Linux переписав свій код та ліцензію, згідно з якою код MINIX ділився університетами. Однак це також зводиться до політики та грошей, чи дійсно MINIX хоче піти за Linux, і чи мають у Linux гроші (через корпорації, такі як Red Hat), щоб боротися з ними.
CrazyCasta

1

Коротка відповідь полягає в тому, що ви не можете знати.

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

Відповіді немає. Відповіді не буде. Це відповідь.

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