Корабль Тесея применяется к GPL - Могу ли я повторно лицензировать свою программу, если я заменю все производные части?

99

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

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

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

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

Продолжение : я решил связаться с правообладателем и получил разрешение на повторную лицензию . Иногда лучший способ - это взаимодействовать, а не программно!

Приземляться
источник
6
Сравните аудит ReactOS : было утверждение, что ReactOS (замена бесплатной Windows) была испорчена с помощью утечки и обратного проектирования кода MS Windows (на который они никогда не брали лицензию). Они решили эту проблему путем систематической замены всего кода с неясным происхождением на законный код, разработанный методом «чистой комнаты» - в основном новый код, написанный из чистой спецификации.
JDM
3
@jdm Код китайской стены / чистой комнаты также должен быть написан людьми, которые не занимались реверс-инжинирингом и имели ограниченную (юридически проверенную) связь с ними. ПРАВДА игнорировать лицензию и просто «нарушать авторские права» - это будет то же самое, поскольку вы все равно не будете иметь права распространять материал, на который вы нарушили авторские права.
Златовласка
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 , которое я всегда брал с собой. Писать с нуля, по-моему, научило меня намного больше, чем когда я переписал DikuMUD, и это также научило меня, что я действительно не понимаю, что значит стоять на чужих плечах. В течение шести месяцев у меня было 50 000 строк операционного кода, который я мог назвать своим. Я назвал это MUD ++ и выпустил его под BSD. Плохо написанный в раннем стиле C ++, он все еще был первым свободным открытым исходным кодом C ++ MUD, о котором я знаю. По сей день никто не может отобрать это у меня. У меня был лучший TCP-сервер в то время, никто не мог выполнить «горячую перезагрузку», не выбрасывая игроков, и вскоре все стали воровать эту функциюи я заметил, что во многих GPL MUD есть фрагменты моего BSD-кода - всегда интересно, как GPL может перехватить BSD-программу, но не наоборот ). В конце концов, я пошел дальше, так что это не было похоже на то, что решение было удачей или неудачей для моего состояния, но в то время как другие ребята какое-то время зарабатывали много денег, в последний раз я смотрел, как они истощились в мире графических игр. массового спроса на текст больше нет.

История не заканчивается ... несколько лет спустя я работал в IBM, и Дисней нанял нас для написания многопользовательской 3D-игры в реальном времени для центра Epcot, и я смог использовать ядро ​​TCP из MUD ++ в качестве основы для этого. игровой сервер! Если бы я не владел своим собственным кодом, мне бы не разрешили его использовать, и это честно сэкономило мне недели кодирования. В конце я горжусь тем выбором, который я сделал, и у меня есть история, которую я могу рассказать своим детям.

Люди недооценивают и недооценивают выгоду, начиная с чьей-то основы, на которой можно строить

Если вы думаете, что «владеете» им, проверьте себя. Начните сначала, с книгой Python рядом с вами. Посмотрите, каково это. Не обманывайте и не смотрите на старую кодовую базу. Посмотри на вывод. Заставьте себя самостоятельно продумать каждый аспект, проводя честное исследование. Вы будете лучше за это, и, вероятно, есть лучший продукт.

Прежде чем сделать это, попробуйте связаться с автором оригинала. Спросите их, не захотят ли они получить лицензию. Если вы планируете продавать двоичные файлы, предлагайте лицензионные платежи. Многие авторы, которые выпустили GPL в 90-х и 2000-х годах, сейчас им по 30, 40 и 50 лет, и они понимают, что значит зарабатывать на жизнь программным обеспечением. Я видел больше, чем одну лицензию их версий от GPL до MIT, Apache, Boost или BSD.

Наконец, лицензия не отменяет предыдущие права на код, который вы можете иметь. Или если вы написали чистую надстройку самостоятельно, например, если вы написали движок TCP как дополнение к однопользовательской игре Тетрис, и она может быть полностью автономной (особенно если вы ранее выпускали ее по другой лицензии), тогда вы можете повторно использовать ваш код в других проектах. У вас тоже есть авторские права.

Я верю, что БЕСПЛАТНО. Если вам нужно прикрепить строки, не называйте это бесплатно. Несколько лет спустя кто-то отправил мне письмо и сказал, что они использовали мою игру в коммерческом движке, в основном, в TCP и, возможно, в интерпретаторе байт-кода. Они делали деньги. Я не возражал ни капли. Я был счастлив, как и сейчас, как гордый отец.

codenheim
источник
4
На самом деле я собирался предложить это, и я заблудился в своей истории. Да, во что бы то ни стало, проконсультируйтесь с оригинальным автором, выразите ему, так сказать, дань уважения, и вы, вероятно, удивитесь тому, как часто автор просто рад, что вы потрудились спросить. И многие молодые парни из колледжа, которые были хороши в GPL в 90-х и 2000-х годах, теперь понимают, что программисты должны зарабатывать на жизнь.
Коденхайм
13
Мне нравится этот ответ, и я хотел бы поднять голос, но я не могу, потому что все анти-GPL вращение в последнем абзаце. Строка, которую прикрепляет GPL, состоит в том, что строки могут быть не присоединены в будущем.
Майкл Шоу
9
Хороший ответ, и особенно. за то, что рекомендовал разработать сделку с оригинальным автором. Самодостаточность часто является дорогой к бедности, и хотя переписывание целой библиотеки / платформы / приложения может быть стоящим делом, это не всегда так.
Dan1701
16
@MichaelShaw: На самом деле я думал, что это была самая блестящая часть этого ответа. Ваше требование на другой стороне фактически неверно . Если автор кода GPLd решает выпустить новые версии своего кода под другой лицензией, они имеют хорошие права. Они прикрепляют строки не к себе, а только к тем, с кем они «делятся» своим кодом. Самый хороший способ, которым я могу описать это как фундаментальное неверие в человечество.
back2dos
9
Я вижу это в том, что лицензии в стиле BSD делают этот код бесплатным, что просто. Лицензии в стиле GPL направлены на создание сообщества / экосистемы свободного программного обеспечения / чего бы то ни было, конкурирующих с закрытым и другим несвободным программным обеспечением. Для этого они предпринимают ряд стратегических шагов, а продолжительность и разнообразие лицензий GPL и GPL-подобных (и их разработка с течением времени) показывают, что это сложный бизнес, включающий множество оценочных суждений. Если те, кто предпочитает одно, воспринимают другого как несвободного, или те, кто защищает другого, выступают против них, оба проигрывают.
Стив Джессоп
31

Этот сценарий описан в FAQ по GPL :

Что GPL говорит о переводе некоторого кода на другой язык программирования?

В соответствии с законом об авторском праве перевод произведения считается своего рода модификацией. Следовательно, то, что GPL говорит об измененных версиях, относится и к переведенным версиям.

Philipp
источник
Эта конкретная часть ясна, но она становится неясной, когда я расширяюсь до остальной части программы (по крайней мере, на мой взгляд). Первоначальная программа была маленькой игрой проклятий, но моя работа над ней помимо перевода включает добавление сетей, чтобы игроки могли конкурировать лицом к лицу, а также реструктурировать его, чтобы стать более модульным / расширяемым. По сути, игровой движок имеет мало общего с оригиналом, но игра сама по себе сильно отличается. Это возвращает нас к моему связанному вопросу: является ли сейчас движок GPL или я смогу вытащить его и использовать повторно для проекта лицензирования MIT или BSD.
Лэндон
7
@Landon Ваша работа все еще является производной от работы по GPL, и поэтому она связана с условиями GPL.
Филипп
1
@Landon: то, что определяет, применяется ли GPL, на самом деле не имеет ничего общего с GPL, а от того, является ли ваш конечный результат «производной работой» или нет. Добавление большего количества материала не превращает производную работу в непроизводную работу, потому что по закону речь идет не о пропорции производной работы, а о необработанной сумме. Обычное преобразование на другой язык также является производным, и это то, что часто задаваемые вопросы напоминают вам. Вопрос, который вы должны задать своему адвокату, звучит так: «С учетом моих процедур суд сочтет это производной работой?».
Стив Джессоп
... однако этот ответ сфокусирован на «дословно переведенных функциях», которые предположительно являются производными, но которые, как вы говорите, вы планируете удалить. Таким образом, я не думаю, что это действительно охватывает ваш предполагаемый сценарий. Он охватывает ваш текущий сценарий и сценарий, в котором вы оказались бы, если бы вы допустили ошибку и не смогли вырезать все, что вам нужно.
Стив Джессоп
8

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

Стандартный подход к этой проблеме называется «реализация чистых помещений». Вы пишете документ с требованиями, и кто-то еще его реализует (кто не видел код GPL).

Также смотрите этот вопрос: переписывание кода GPL для изменения лицензии

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

Конечно, вероятность того, что вам предъявят иск за переписывание лицензированной библиотеки GPL (и мораль полагаться на эту низкую вероятность), - это совершенно разные дискуссии.

Что касается добавления функциональности к исходному коду, то это (часть) самого определения производных произведений: добавление к исходному произведению. Неважно, сколько вы добавили или насколько мала была начальная работа - она ​​все еще производная.

Сэр афон
источник
3
Я не уверен, что мне нравится выбор аналогии: первоначальный вопрос звучит так, как будто они думают, что изначально связывали свои вещи с Гарри Поттером, но теперь хотят связать его со своим собственным фантастическим эпическим романом с магией и злодеями, который имеет место прежде всего в школе в замке.
1
@ Hurkyl Так 50 оттенков серого?
Yamikuronue
8
Увидев код, не значит, что вы его скопировали. Реализация в чистых помещениях полезна, если вы ожидаете, что владельцу исходного кода не понравится то, что вы делаете, и он будет судиться с вами, поэтому вы можете сказать в суде: «мы не копировали код; даже если бы мы этого хотели, мы не мог ", что является сильной защитой. Увидев код, вы все равно можете сказать «мы не копировали код», если это правда.
gnasher729
2
Согласитесь с @ gnasher729. В GPL конкретно указано, что вам разрешено изучать код. Предпосылка заключается в том, что автор выпустил его, чтобы научить вас (среди прочего). По этой причине я никогда не применял аргумент чистой комнаты к коду GPL. Нельзя опубликовать кулинарную книгу, а затем подать в суд на людей, которые создают свои собственные рецепты, если, конечно, код не запатентован, тогда патентная защита охватывает методы и изобретения, но не реализацию (AFAIK). Авторское право и патент - разные вопросы.
Коденхайм
1
Я бы сказал, что вероятность того, что вы окажетесь в зале суда, очень мала, если вы нарушаете GPL, потому что только с одним или двумя исключениями каждый раз, когда возникает проблема, один из адвокатов людей, нарушающих GPL, понимает GPL, которому они им говорят. либо остановиться, либо заключить сделку. Это был мой опыт, когда мне приходилось писать письмо о нарушении. И есть бесплатные адвокаты, которые будут защищать GPL для первоначального разработчика. Действительно, лучший совет - поговорить с оригинальным кодером. Я попросил людей ввести двойной / повторный лицензионный код, и они почти всегда говорили «хорошо».
Элин
7

Замечание: GPL имеет значение только в том случае, если вы выпустите свою работу. Вы уже выпустили это?

Замечание: это не сайт юрисконсульта, поэтому выкиньте все эти юридические FUD и руководствуйтесь здравым смыслом.

Мнение: GPL или любая лицензия не содержит авторских идей , она требует исходного кода, независимо от того, насколько мала его часть. Таким образом, если и только если ваша «производная» работа не может быть идентифицирована как производная от оригинала, потому что вы изменили структуру кода и повторно реализовали всю функциональность, она для всех практических целей больше не является производной, потому что, хорошо быть неотличимым от реализации чистой комнаты.

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

Мартин Ба
источник
8
«Наблюдение: это не сайт юрисконсульта, поэтому выкиньте всю эту легальную FUD и руководствуйтесь здравым смыслом». Э-э, поскольку это явно юридический вопрос, решение состоит не в том, чтобы притворяться, что юридических вопросов не существует, а в том, чтобы спросить адвоката. Я понимаю, что производная работа не может перестать быть производной работой только потому, что вы делаете больше производной.
Дэвид Ричерби
1
@DavidRicherby: Если это юридический вопрос, то ответ зависит от конкретной юрисдикции, и вопрос должен быть закрыт как слишком локализованный. :-)
Мартин Ба
2
@MartinBa - международное право в значительной степени согласуется с авторским правом. Существуют локальные варианты, но я не думаю, что вопрос / ответы обязательно слишком локализованы, чтобы быть полезными.
Cloudfeet
5

Вы являетесь владельцем авторских прав на любой код, который вы пишете. Что подразумевается под GPL: любой код, который вы вносите или выпускаете вместе с кодом GPL, вы также должны выпускать под аналогичной лицензией. Тем не менее, авторское право остается за вами.

Таким образом, если вы выпустите свое программное обеспечение на полпути через переписывание (то есть смесь вашего кода и старого кода), то вам придется выпустить эту часть кода как GPL, и это не может быть отозвано. Тем не менее, правообладатель - это тот, кто принимает решение об условиях лицензирования, поэтому у вас все еще есть право по существу «раздвоить лицензию» на эту часть кода, в том числе объединить ее с другим написанным вами кодом, продать / повторно лицензировать и т. Д.

Предостережения:

  • хотя авторские права на код, который вы пишете, являются вашими по умолчанию, они могут быть изменены другим контрактом / соглашением, например CLA, в котором указана передача авторских прав, или контрактом с работодателем, которому принадлежит вся работа, которую вы выполняете в «свое время».
  • является ли ваше переписывание достаточным «производным произведением», чтобы вы в конечном итоге поделились авторским правом с первоначальным автором, вопрос степени. Если вы переводите код построчно на другой язык ( как уже упоминалось в вашем вопросе ), то эти части вполне могут считаться производными. Если вы реализуете замену, совместимую с API, не глядя на детали, то, вероятно, этого не произойдет.

(источник: сеанс "авторское право и открытый исходный код", организованный моей компанией несколько недель назад)

cloudfeet
источник
Вы можете заменить «документ» на «договор» или «договор». Недостаточно просто написать на бумаге «DougM владеет кодом cloudfeet». Мы должны были бы провести юридический обмен, который должен был пройти судебное рассмотрение.
DougM
Зависит от юрисдикции - по крайней мере там, где я нахожусь, даже устные контракты являются обязательными, просто трудно доказать. Пост-это с соответствующим почерком в теории вполне выдержал бы . : p
cloudfeet
Тем не менее, ваша точка зрения хороша, и контракт / соглашение - лучшее описание - спасибо :)
cloudfeet
3

Да.

В других ответах слишком много текста, объясняющего мнения о том, следует ли вам это делать, но эти мнения не имеют отношения к вопросу.

Дело в том, что у вас будет новая работа после того, как вы замените последние части, которые, по общему признанию, были сконструированы путем просмотра работы под GPL. Это не главная проблема в законе об авторском праве (патенты были бы другой проблемой). Все, что вы распространяете, будет вашим творением.

Существует множество материалов, подтверждающих теорию о том, что авторские права на программное обеспечение представляют собой сумму частичных авторских прав. Например, MPL явно подтверждает эту модель. Иск Google / Oracle перешел к авторским правам на уровне строк.

MSalters
источник
3
Произведение, созданное «на основании» другого произведения, является производным произведением, и на него будет распространяться то же авторское право, что и на произведение, на которое вы «смотрели».
DougM
1
@DougM: Извините, но это очень консервативное предположение, которое я никогда не использовал успешно в суде. Не забывайте, что если бы эта теория имела какое-либо юридическое значение, она также применима к книгам - у компьютерного кода нет специальных законов, определяющих, что является производным произведением. Никто не собирается утверждать, что ваша книга является производной от Шекспира только потому, что вы читали одну из его пьес в школе. Таким образом, этот прецедент устанавливает, что планка «производной работы» намного выше, чем «прочитала подобную работу».
MSalters
1
В GPL конкретно указано, что вам разрешено изучать код. Это не проприетарный IP, это бесплатный, открытый исходный код. Я не видел никакой юридической поддержки во время существования GPL, чтобы утверждать, что просмотр опубликованного рецепта для создания моего собственного рецепта подразумевает производную.
Коденхайм
1
Кто-то может задаться вопросом, насколько далеко мог зайти Linux, если замены кода Unix исходным кодом было недостаточно.
user2338816
3
@ user2338816 Linux не начинался с кода Unix, он начинался с MINIX. И технически возможно, что MINIX мог иметь дело против Linux. Это будет зависеть от того, как Linux переписал свой код, и от лицензии, под которой код MINIX был передан университетам. Тем не менее, это также сводится к политике и деньгам, действительно ли MINIX хочет идти за Linux, и есть ли у Linux деньги (через корпорации, такие как Red Hat), чтобы бороться с ними.
CrazyCasta
1

Короткий ответ: вы не можете знать.

Когда вы разговариваете с Ричардом, вы обнаруживаете, что он «сумасшедший, как лиса» во многих своих реализациях. GPL написан специально для того, чтобы иметь двусмысленности и неясные выражения. Как правило, они выражаются против выгоды автора лицензии, но также вызывают озабоченность у вашего юриста в области ИС. Умно, это дает вашему юристу в области ИС все большую озабоченность по мере того, как компания становится больше. Небольшое коммерческое предприятие, выполняющее «разумную интерпретацию» GPL, может быть приемлемым риском, но крупная компания-разработчик программного обеспечения может посчитать более разумным сжечь целую команду, которой удалось запятнать GPL.

Там нет ответа. Там не будет ответа. Это ответ.

Чарльз Мерриам
источник