Могу ли я временно использовать библиотеки GPL для создания прототипов и сделать будущий код закрытым исходным кодом?

23

Я работаю над прототипом для программной системы, которая (по крайней мере, на старте) будет с закрытым исходным кодом.

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

Что если я этого не сделаю, но убедился, что моя система работает, а затем заменил библиотеку GPL собственным кодом перед распространением? Будет ли результат "загрязнен" GPL?

У меня есть ощущение, что сохранение библиотеки GPL в моей истории Git или нет может иметь значение.

Лоран С
источник
16
Мне нравится выражение "загрязнено GPL".
Арсений Мурзенко
7
это хорошо сочетается с вирусной природой лицензии :)
Laurent S
5
Поправьте меня, если я ошибаюсь, но вы хотите выпустить систему с закрытым исходным кодом, одновременно размещая код на git? (и я полагаю, что этот git читается другими, иначе зачем вам беспокоиться о том, что в истории есть
библиотека
3
@ user2813274, вы можете иметь частный репозиторий Git.
Артуро Торрес Санчес
5
Когда вам будет интересен этот вопрос, вас также может заинтересовать предложение нового Stackexchange с открытым исходным кодом .
Филипп

Ответы:

20

GPL пишет :

Вы можете передать работу, основанную на Программе, или модификации для ее создания из Программы, в форме исходного кода в соответствии с условиями раздела 4, при условии, что вы также выполняете все эти условия:

Таким образом, это условие применяется только в том случае, если ваша работа «основана на» библиотеке, которую лицензия определяет следующим образом:

«Модифицировать» произведение - значит копировать или адаптировать все или часть произведения таким образом, который требует разрешения на авторское право, за исключением создания точной копии. Получившаяся работа называется «модифицированной версией» более ранней работы или работой, «основанной» на более ранней работе.

То есть ваша программа «основана» на библиотеке тогда и только тогда, когда она является производным произведением в соответствии с законом об авторском праве. Юридическое определение этого термина несколько различается в разных юрисдикциях и обычно не касается непосредственно программного обеспечения. Например, Закон об авторском праве США пишет:

«Производное произведение» - это произведение, основанное на одной или нескольких ранее существующих работах, таких как перевод, музыкальная аранжировка, инсценировка, вымысел, версия фильма, звукозапись, воспроизведение произведений искусства, сокращение, сгущение или любая другая форма, в которой произведение может быть переделан, преобразован или адаптирован. Произведение, состоящее из редакционных правок, аннотаций, разработок или других модификаций, которые в целом представляют собой авторское произведение, является «производным произведением».

Что это означает для программного обеспечения, должно быть истолковано судами на основании ранее принятых решений. Я недостаточно знаком с соответствующим прецедентным правом в вашей юрисдикции, чтобы с уверенностью сказать, как суд примет решение по вашему делу. Можно утверждать, что «замена библиотеки GPL собственным кодом» является актом перевода, особенно если ваш код сильно вдохновлен реализацией GPL. Даже повторное использование API библиотеки GPL может привести вас к горячей воде (см. Oracle против Google ).

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

меритон - забастовка
источник
1
хорошо, это интересно, я не осознавал, что совместное использование API можно считать производной работой.
Лоран С
Этот ответ делает то же самое, что я пытался изложить в своем ответе ниже, но гораздо яснее. +1
Майкл Шоу,
23

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

Конечно, было бы лучше, если бы вы могли найти библиотеку с более разрешительной лицензией, например, LGPL, APL2 или MIT.

Джеймс Маклеод
источник
Очевидно, я попытаюсь найти другую библиотеку с разрешительной лицензией. Но если это не удастся, звучит так, будто я могу иметь старый GPL-код в истории git и не нарушать его условия, распространяя будущее состояние кода.
Лоран С
5
Этот ответ не учитывает риск создания производной работы при реализации новой версии библиотеки.
Майкл Шоу
4
@Ptolemy Имейте в виду, что если ваша история мерзавцев выпущена, вы выпустили старую версию. Он не должен быть в двоичном виде для подсчета.
piojo
2
@piojo С другой стороны, это как минимум обязывает вас лицензировать эту старую версию под лицензией GPL (и распространять исходный код для нее); если в какой-то момент вы окажетесь с единственным авторским правом на код, вы можете сделать все будущие версии закрытыми (хотя старые версии по-прежнему находятся под лицензией GPL). В зависимости от того, сколько проприетарных вещей в старой версии, у вас могут возникнуть или не возникнуть проблемы.
cpast
1
Пока Laurent S является автором и владельцем авторских прав на весь другой код рядом с GPL, он также в безопасности. Он может и имеет право выпустить всю работу в соответствии с условиями GPL3 на случай, если это может быть результатом позже. Это может быть нежелательно, но OP явно безопасен в любом случае (если авторское право принадлежит).
Хакре
8

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

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

Три подхода, которые вы можете использовать

Однако, если вы собираетесь развивать прототип (чего требуют многие менеджеры!), У вас есть три подхода:

  1. Переместите неосновные части в отдельные приложения, которые взаимодействуют с вашим ядром через JSON или REST API или другой язык / библиотеку межпроцессного взаимодействия. Таким образом, ваши неосновные части также могут быть GPL, и вы можете использовать в них любые библиотеки GPL.
  2. Создайте свой код, чтобы вы могли поменять библиотеки. Это означает создание фасада, который скрывает детали реализации. Когда вы будете готовы перейти на проприетарную библиотеку или библиотеку MIT / BSD.
  3. Не используйте код GPL вообще.

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

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

Рудольф Олах
источник
2
Включение кода GPL в другой процесс само по себе не означает, что он больше не является частью программы и, следовательно, больше не имеет отношения к лицензированию всего остального. Это может помочь разделить их достаточно хорошо, хотя.
дедупликатор
1
@Deduplicator: если это отдельные приложения, этого недостаточно, их нужно рассматривать как отдельную базу кода, вы правы. Вроде как то, что Twitter делает с Bootstrap и что Facebook делает со всеми его библиотеками. Неосновный открытый исходный код с закрытым кодом.
Рудольф Олах
@omouse, я не могу сделать 1, так как это встроенное программное обеспечение. «2» была моей первой мыслью, но, учитывая то, что упоминают Птолемей и Меритон, звучит так, будто я буду делать производные работы, поэтому 3 - это, вероятно, путь.
Лоран С
1
Re: «Я не думаю, что ваш вопрос на самом деле о GPL»: я не согласен. Лицензия на программное обеспечение, безусловно, может запретить такое использование. Ответ, который игнорировал часть вопроса «GPL» и просто воспринимал его как общий вопрос о лицензии с открытым исходным кодом с ограничительными условиями и вирусным поведением, должен был бы прибегнуть к «мы не знаем, у вас будет прочитать условия лицензии ".
Руах
Если вы создаете производное произведение и выбрасываете его, вы все равно создали производное произведение, и вы можете делать это только с разрешения / лицензии первоначального правообладателя. С GPL у вас есть эта лицензия (если вы никогда не распространяете производную работу, прежде чем выбросить ее). С другой лицензией у вас может не быть разрешения. Судиться с вами за ущерб может быть сложно, хотя.
gnasher729
5

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

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

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

Майкл Шоу
источник
4

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

Элин
источник
2

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

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

Deduplicator
источник
2

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

У меня есть ощущение, что сохранение библиотеки GPL в моей истории Git или нет может иметь значение.

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

Кори Голдберг
источник