Избегайте нарушения GPL, выводя библиотеку из процесса


21

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

  1. Создайте небольшое приложение-оболочку для этой библиотеки GPL, которая прослушивает сокеты, анализирует сообщения и вызывает библиотеку GPL. Затем возвращает результаты обратно.
  2. Выпускать свои источники (чтобы соответствовать GPL)
  3. Создайте клиент для этой оболочки в моем основном приложении и не выпускайте исходники.

Я знаю, что это добавляет огромные накладные расходы по сравнению со статическим / динамическим соединением, но мне интересен теоретический подход.


6
Оболочка, которую вы пишете, будет лицензирована в соответствии с GPL. Поэтому программа, использующая обертку, все равно будет подчиняться условиям GPL для компоновки и т. Д.
TZHX

4
почему бы сначала не связаться с автором и посмотреть, можете ли вы лицензировать его по лицензии LGPL или аналогичной.
JK.

8
@TZHX Я полагаю, он имеет в виду, что оболочка будет отдельным приложением, которое действует как сервер - его собственный код будет находиться на клиенте
jk.

Также, кто будет распространять приложение с закрытым исходным кодом? и какая версия GPL является лицензией
jk.

2
@jwenting вопрос ясно говорит, что у него заканчивается процесс
jk.

Ответы:


32

С юридической точки зрения я бы сказал, что все будет в порядке (но я не юрист - проконсультируйтесь с юристом).

Морально это довольно предосудительно. Если вам не нравится GPL, то «правильное» решение - не использовать библиотеку GPL.

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

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


12
Я не думаю, что здесь есть моральная проблема - GPL явно разрешает его вариант использования
jk.

3
@vartec - цитата из официального FAQ по GPL: «Статическое или динамическое связывание с другими модулями создает совместную работу на основе. Таким образом, условия Стандартной общественной лицензии GNU охватывают всю комбинацию». Если Столлман имеет иное представление о том, что такое Open Source, это не значит, что он его ненавидит. Он один из главных идеологов этого движения.
Андрей

8
@vartec: У меня сложилось впечатление, что вы не понимаете, что когда вы используете код SOMEONE ELSE в ВАШЕМ приложении, ВЫ должны соблюдать условия, которые ОН устанавливает для использования кода HIS. Не нравится это? Не используйте чужой код под GPL. Так просто.
Джон Р. Штром

3
Вот мое предложение: черт возьми из того кода GPL, от которого вы, похоже, зависите, и посмотрите, как получится судебное дело. GPL3 был создан для того, чтобы закрыть такие легальные дыры в GPL2, так что, возможно, вам это сойдет с рук. Я сомневаюсь, что люди будут устраивать парады в вашу честь, потому что вы справились с легальным маневром, и если вы достаточно эффективны, люди будут лицензировать свой код с более широкими условиями использования, чтобы вас злить. В конце концов, это может улучшить мир, избегая подобных тем.
Годеке

3
Я СИЛЬНО не согласен с утверждением, что это морально предосудительно. Что морально предосудительно, так это сказать людям, что они не имеют права делать то, что им позволяет GPL. Когда я помещаю работу под GPL, я делаю это, потому что я хочу, чтобы правила GPL применялись. Говорить людям, что они не должны пользоваться правами, предоставленными им GPL, достойно порицания. Это то, что позволяет GPL. Те, кто размещает работы в соответствии с GPL, делают это потому, что хотят этого.
Дэвид Шварц

6

IANAL, но я думаю, что вы в порядке, соответствующий раздел GPL3 находится в конце раздела 5:

Компиляция покрытой работы с другими отдельными и независимыми работами, которые по своей природе не являются расширениями покрытой работы и которые не объединены с ней, например, для формирования более крупной программы, в или на томе хранилища или распределения средний, называется «совокупным», если компиляция и вытекающие из нее авторские права не используются для ограничения доступа или юридических прав пользователей компиляции сверх того, что разрешено отдельными работами. Включение покрытой работы в совокупность не заставляет настоящую Лицензию применяться к другим частям совокупности.

Вероятно, это будет зависеть от того, что именно делает ваш «клиент». Ответ mouviciel, вероятно, является хорошим руководством о том, как сделать это безопасно.

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

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


Я читал это, но проблема в том, что текст GPL написан на юридическом языке, а не в разработке . Хитрость с оберткой заключается в том, чтобы сделать коммерческое приложение «агрегатным», а не «производным». Но я думаю, что это подпадает под "расширение природы покрытой работы".
Андрей

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

1
@ Андрей: Если «природа» вашей программы напрямую связана с кодом GPL, приведенный выше раздел не будет применяться. От твоего вопроса это звучит так. Ярким примером может служить программа анализа вторжений в сеть, которая использует GNU readline через предложенный вами механизм. (Readline - интересный тестовый пример, потому что есть альтернатива для лицензирования BSD.)
Фред Нурк

Пункт «агрегат» должен прояснить, что нахождение на одном и том же компакт-диске или дистрибутиве Linux не создает производную.
Шон Макмиллан

6

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

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

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


Насколько я понимаю, вы можете лицензировать оболочку под MIT и все еще быть в порядке.
Тостер

2
Колин, абсолютно нет. Оболочка однозначно объединяется с библиотекой GPL в один двоичный файл. Чтобы использовать код GPL в одном двоичном файле, вы должны GPL свой собственный код для соответствия лицензии.
Бетонная олуша

5

ИМО, юридически все нормально. (IANAL) Чтобы улучшить моральную сторону проблемы, не называйте это «оболочкой FooBar, которая делает FooBar легально доступной для MyClosedApp», называйте ее сервером. Сделайте это миленькой программой с открытым исходным кодом, которая "позволяет делать FooBar по сети". Разместите его на SourceForge или посвятите ему веб-сайт со страницей проекта, инструкциями и прочим. Тогда пусть «MyClosedApp» просто использует «сервер FooBar».


2

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


1
это определенно неправильно. использование его в качестве плагина (он же динамическое связывание) делает полученное приложение «производным» и объектом GPL.
Андрей

Я не уверен, что плагин всегда является синонимом динамически связанных. И, конечно, в этом случае OP не предлагает динамически связывать что-либо, поэтому я думаю, что совет Мувисиэля стоит
jk.

@jk хорошо, если вы создаете только один плагин, и он основан на лицензии GPL, это пахнет как нарушение.
Андрей

4
AGPL не запретил бы это, если бы сокет не был над сетью. Это довольно специфично. Кроме того, это не проверка полезности, а то, насколько близко GPL и проприетарное программное обеспечение. Статическое связывание определенно слишком близко, сокеты (за исключением конкретного случая AGPL) определенно в порядке, динамическое связывание может или не может быть (я слышал юридически обоснованные аргументы с каждой стороны, и пока нет прецедентного права США).
Дэвид Торнли

1
@ Андрей: так что вы сейчас говорите, что пока программное обеспечение с закрытым исходным кодом, такое как Photoshop, может выполнять свою работу без компонента GPL, его можно распространять, не делая его GPL. Это именно то , что говорит этот ответ.
Док Браун

1
  1. попробуйте найти альтернативу с открытым исходным кодом, если ее нет, перейдите на GPL;
  2. проверьте, если это GPLv3 с предложением Affero, если это так, ничего не поделаешь;
  3. если это GPLv2, вы можете делать именно так, как вы предлагаете;

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


В чем разница между GPL v2 и v3, которая делает мой хак невозможным? То, что я делаю, это не динамическое связывание, я их максимально разделяю.
Андрей

Одна из целей GPLv3 состояла в том, чтобы предотвратить этот метод «обхода».
vartec

4
Во-первых, варианты GPL являются официальными, одобренными OSI, лицензиями с открытым исходным кодом (так же, как лицензия BSD без оговорки о рекламе является лицензией свободного программного обеспечения, одобренной Stallman). Во-вторых, ни одна версия GPL (включая Affero) не ограничивает вашу способность общаться по GPL и проприетарному программному обеспечению с помощью стандартных методов межпроцессного взаимодействия, таких как сокеты.
Дэвид Торнли

IMO GPLv3, допускающий, например, предложение DRM, нарушает пункт 6. Определения открытого исходного кода opensource.org/docs/osd
vartec

1
@vartec: DRM - это не «Сфера деятельности». См. «Например, она не может ограничивать использование программы в [коммерческом предприятии] или ее использование для генетических исследований». OSI очевидно полагает, что GPL3 является открытым исходным кодом и соответствует всем пунктам их определения, потому что они одобрили его.
Томас Эдлсон,

0

Было бы законно, чтобы Адам Браун написал программу, которая использовала бы библиотеку GPL и действовала как «сервер», если бы он выпустил весь исходный код для всего, что с ним связано, но единственный выпущенный им клиентский код был довольно слабым, потому что это все он написал на стороне клиента? Я не вижу оснований думать, что это не так.

Если Чарльз Довер найдет «сервер» Адама Брауна и решит написать программу с закрытым исходным кодом для связи с ним, будет ли GPL каким-либо образом ограничивать его действия? Не то, чтобы я мог видеть, так как его единственным использованием программного обеспечения GPL было бы как двоичные файлы, которые он получил от Адама Брауна. Если бы он распространял двоичные файлы Адама, он должен был бы также включить ссылку на источник, но ничто другое в GPL не повлияет на любой код Чарльза.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.