Переписать код GPL для изменения лицензии

23

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

Мой вопрос: насколько обширными должны быть изменения в библиотеке, чтобы можно было изменить лицензию? Другими словами, какой самый дешевый способ сделать это?

I_like_traffic_lights
источник
3
Может быть дешевле заплатить автору библиотеки GPL за то, чтобы он был выпущен вам под другой лицензией.
Quant_dev
3
Вместо того, чтобы спрашивать, как ДЕЙСТВИТЕЛЬНО дешевле, почему бы не рассказать нам полную историю и спросить "Что делать правильно?"
Джон Р. Штром
4
Если другая библиотека не совместима с GPL, возможно, это библиотека, которую вам нужно изменить.
Пол Бучер
1
Какая лицензия у другой библиотеки?
Андрес Ф.

Ответы:

34

Я не юрист, но AFAIK, если вы видели код библиотеки GPL, любая написанная вами библиотека эмуляции будет испорчена и может быть объявлена ​​производной работой судьей, если она слишком схожа с его оценкой.

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

Изменить: Обратите внимание, что с тем, как вы сформулируете свой вопрос: «Насколько обширными должны быть изменения в библиотеке, чтобы иметь возможность изменить лицензию?» Ответ AFAIK ясен: что бы вы ни делали, если вы просто изменяете библиотеку, вы должны уважать срок действия лицензии, что позволяет вам изменять ее в первую очередь.

AProgrammer
источник
3
Проблема заражения, вероятно, не очень серьезная проблема на практике. В тех случаях, когда вы выполняете обратный инжиниринг кода коммерческой организации, брандмауэр между читателем и исполнителем необходим для (по существу неизбежного) иска о нарушении, так что вы можете показать, что не было возможности скопировать код из другой версии. , В случае большинства кодов GPL, если вы явно не нарушаете права, никто не собирается подавать на вас в суд, поскольку это не в их интересах.
Марк Бесси
1
Вам может понравиться русская рулетка, это ваш выбор. Если по какой-либо причине - конкуренция, унаследовавшая код тем или иным образом, или просто конкуренция, решившая финансировать судебный процесс, - вас обвиняют и осуждают, что может утопить вашу компанию. Даже если вам не предъявлен иск, если известно, что плохая репутация может стать проблемой.
AProgrammer
2
Я думаю, что «испорченная» проблема в основном относится к NDA. В вопросах авторского права это вряд ли имеет смысл. Учтите, что авторское право также распространяется на книги, газеты, фильмы и т. Д. Джордж Лукас, вероятно, видел сериал «Звездный путь» по телевизору до создания «Звездных войн», делает ли «Звездные войны» производной работой? Если репортер газеты слышит о чем-то по радио, мешает ли это ему писать об одном и том же событии?
user281377
6
Чистый подход - это просто способ доказать, что вы не нарушили закон об авторском праве. Насколько я понимаю - и опять же я не юрист - вещи, разработанные без знания оригинальной работы, могут не нарушать авторские права (но могут нарушать патенты). Вещи, разработанные на основе этих знаний, могут нарушать или не нарушать авторские права - просто сложнее доказать, что сходство обусловлено случайными событиями или природой проблемы, которая делает подход естественным.
AProgrammer
1
@ammoQ: В США давным-давно был иск о нарушении авторских прав (пакет статистического программного обеспечения?), в котором компания была признана нарушающей, даже если каждая строка кода была переписана. Обратите внимание, что «Звездные войны» не особенно похожи на «Звездный путь», и что репортер газеты не собирается писать историю только из того, что он или она слышали по радио.
Дэвид Торнли
21

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

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

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

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

gbjbaanb
источник
8
Это стоит попробовать, но это не сработает, если владелец библиотеки принял или использовал пожертвования GPL, что имеет место для многих библиотек.
Брайан
^ Если только у них не было соглашения «спонсора», которое передало авторские права обратно оригинальным авторам: softwareengineering.stackexchange.com/a/225577/93511
Джонатан
17

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

Эти правила не являются специфическими для программного обеспечения, они применяются к защищенным авторским правом вещам всех видов.

Я не юрист, и это не юридическая консультация. Я также, вполне возможно, не в вашей юрисдикции, и вы всегда должны сомневаться в юридических консультациях, предлагаемых в Интернете. Если вы хотите получить надежную юридическую консультацию, вам нужно будет заплатить адвокату.

btilly
источник
4

IANAL, но я знаю, что в США никакая степень модификации не создаст непроизводную работу. Если у него есть какой-либо код, скопированный из старой библиотеки, или он имеет достаточное внутреннее сходство, что может привести к проблемам с плагиатом в университетском классе, то вы не рядом с новой работой. Изменение некоторых имен функций или переменных ничего не изменит, равно как и перемещение фрагментов кода в исходном коде. Вы должны были бы самостоятельно воссоздать это, чтобы даже иметь шанс. IOWs, вам нужно было бы взглянуть только на интерфейсы, которые он предоставляет, и решить, как обеспечить эту функциональность и воссоздать ее таким образом, чтобы иметь шанс. Даже тогда вы все равно не можете быть вне леса, если кто-то действительно заботится и злится.

В конце концов, вам лучше всего связаться с автором библиотеки и надеяться, что вы сможете договориться о более разрешительном лицензировании библиотеки.

ddeflyer
источник
1

Если все остальное, что предлагается здесь (запрос на двойную лицензию, переписывание), неприемлемо, пожалуйста, помните, что до сих пор неясно, считается ли динамическое связывание с проприетарной программой / библиотекой производной работой. FSF говорит, что это так, но многие юристы (включая Лоуренса Розена) подвергли сомнению это.

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

Яцек Прусия
источник
или, по крайней мере, спросите, может ли библиотека также быть LGPL.
Йохан
2
Проблема динамической компоновки является сложной, но не рассчитывайте на то, что судья определит ваше решение. Судья вполне может принять решение о том, что вы принимаете определения Gnu, если вы используете лицензию Gnu, и вы, вероятно, не хотите основывать свой программный продукт на результатах судебного разбирательства, которое еще не произошло.
Дэвид Торнли
1

Единственный способ, которым это не будет производной работой, - это если вы переписываете весь код самостоятельно, без использования какого-либо исходного кода. Что, вероятно, невозможно.

Есть много более простых способов обойти GPL:

  • в открытом виде: сделать это в сервис, доступ к нему через сокет. Socket является границей лицензии GPL (если только она не является печально известной GPLv3 с предложением Affero );
  • в серой зоне: динамически связать его. Существует много противоречий, если динамическое связывание является или не является границей производной работы. Несколько точек зрения здесь . Это также может зависеть от юрисдикции, в которой вы находитесь.

Также обратите внимание, что GPL является лицензией на распространение , поэтому вам нужно лицензировать свою работу, только если вы распространяете двоичные файлы третьим лицам. И вы обязаны только публиковать им исходный код, не обязаны публиковать его для широкой публики, если только вы не выпускаете двоичные файлы для широкой публики. Если вы используете свой код, например, только на своих серверах, вы не обязаны выпускать какой-либо код. Вот как, например, Google делает это с их подправленными ядрами Linux.

Vartec
источник
Я далеко не уверен, что розетка является барьером. По словам наших юристов, инженеры слишком сосредоточены на технических мерах, а глобальный эффект - это то, что проверяется законом. Публикация интерфейса сокетов и пример использования в emacs lisp были для них нормой. Но предоставить возможность автоматической установки emacs вместе с нашей программой не было. Вы подходите для распространения. Но учтите, что вы не можете помешать тому, кому вы распространяете, распространять дальше.
AProgrammer
@AProgrammer: даже FSF говорит, что если это отдельный процесс, то это отдельные программы, поэтому они не производят работу. Часто задаваемые вопросы о плагинах, но логика по-прежнему применима: gnu.org/licenses/gpl-faq.html#NFUseGPLPlugins
vartec
Вопрос в том, что плагин и плагин по своей природе не являются обязательными. Я бы не поспорил, что моя компания структурирует программу в два процесса: один под GPL, потому что он использует библиотеки под GPL, а другой не потому, что мы хотим, чтобы исходный код был закрытым, является законным. Особенно, когда оба распространяются вместе. Но это ваш звонок.
AProgrammer
1
@A: распространение с другими программами является «агрегацией» и явно разрешено GPL. И нет, это не мой звонок. Лично я бы не трогал библиотеку GPL даже с 10-футовой палкой.
vartec
1

IANAL и, в любом случае, это может ничего не значить юридически, но, я полагаю, что в книге Стивена Леви «Хакеры» он описывает, как в какой-то момент RMS писал * nix-код для денег в течение дня и ночью писал одно и то же дома, чтобы он мог быть частью ... GNU? ... это было до Linux ... какой-то бесплатной системы типа Unix. Я считаю, что он должен был сделать домашний код отличным от дневного, но в основном он делал именно то, что вы предлагаете.

Это, вероятно, не имеет юридического значения, но ... Я не уверен, что Apple и / или Microsoft получили разрешение / лицензию или что-то в этом роде, но в лабораториях Белла не было изобретено интерфейса desktop / icon / mouse, который использовался для Mac. (или Лиза?), которая тогда использовалась Microsoft.

Брайан Маршалл
источник
Это будет Xerox PARC, а не Bell Labs.
Марнен Лайбоу-Козер
И Джобс заключил сделку с Xerox, которая позволила Apple посетить лабораторию в Пало-Альто. Никто в Xerox не заботился об этой технологии в то время.
Aledalgrande
0

На это нет ответа, кроме как перед судом в вашей конкретной юрисдикции. Но вы хотите рискнуть этим? Или перейдите к переписыванию библиотеки GPL, тестов и т. Д. И т. Д. Вы уверены, что другая библиотека несовместима с GPL? Это на самом деле довольно необычно, если вы не хотите распространять обе библиотеки в соответствии с условиями библиотек не-GPL.

Нил Баттерворт
источник
Вы можете получить список лицензий Gnu по адресу gnu.org/licenses/license-list.html, и вы заметите, что он разделен на бесплатные GPL-совместимые лицензии, бесплатные не GPL-совместимые лицензии и несвободные лицензии. У GPL есть некоторые специфические требования, которым часто не соответствуют другие лицензии, и одной из целей GPLv3 было облегчить совместимость.
Дэвид Торнли
0

Насколько обширными должны быть изменения в библиотеке, чтобы можно было изменить лицензию?

В большинстве частей света нужно начинать с нуля, а не срезать и ничего не делать. Вам нужны новые имена для функций / классов / переменных и т. Д., И структура должна быть другой. Тогда вы в безопасности.

С другой стороны, если diff-инструмент не может найти сходства, то ...

Johan
источник
2
Если инструмент сравнения не может найти каких-либо сходств, это может быть нарушением авторских прав. Посмотрите на это с точки зрения непрограммирования: я пишу книгу, вы переводите ее на шведский, и в соответствии с законодательством США (и, вероятно, шведским) об авторском праве вы создали производное произведение.
Дэвид Торнли
@ Дэвид Торнли Да, вы правы насчет производной работы.
Йохан