Правовая сторона СПОКак создать несвободное ПО с использованием свободного

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

И насколько я понимаю это запрещено большинством свободных лицензий, а единственный выход — использовать свободное ПО, предоставляемое ослабленной GNU Lesser General Public License. Если я в чем-то заблуждаюсь (может полностью :-) ) — объясните, пожалуйста.
  • +5
  • krototo
  • 03 июля 2009, 12:12

Комментарии (19)

Есть еще один вариант, ПО под лицензией BSD эта лицензия не запрещает создавать, закрытое ПО
Есть отдельный вариант: продукт поставлять без свободных библиотек (или наоборот закртых, если ПО — открытое), заставляя пользователя выкачивать эти библиотеки
и тогда ответственность ложитсья на них? :-)
Нет, на пользователей ничего не ложится, даже ответственность. Свободные/закрытые библиотеки использовать не запрещается, но: у всего продукта есть определенная лицензия, поэтому включение (не использование) библиотеки с другой лицензией есть нарушение первой лицензии (кроме случаев с BSD, MIT и т.д.). Поэтому нужно заставлять пользователей выкачивать библиотеки с другими лицензиями. См. сообщение dmbaturin
Тогда вот маленький вопрос: в чем формальное отличие «использовать, обращаться к...» и «включать в состав (пусть даже в неизмененном виде)»? Лишь в формальном включении или невключении в дистрибутив?
ну то есть я имею в виду, что, допустим, программа-сложный составной объект интеллектуальной собственности. Работает так как должна лишь с использованием свободной библиотеки, но мы, не желая делать наш объект свободным, не включаем эти необходимые библиотеки, а заставляем выкачивать пользователей. Но ведь все равно наш объект начинает выполнять свои функции лишь при взаимодействии со свободными библиотеками, то есть сатновится задуманным объектом (выпоняет задуманные функции) лишь с помощью свободных библиотек. Можно ли при желании прицепится к тому, что фактически библиотеки включены (хотя и выкачиваются каждый раз пользователями и подкючаются)? Я не программист, поэтому заранее прошу прощения за возможные тупизмы
Да, так оно и есть. Включение свободной библиотеки в дистрибутив программы фактически является созданием производной работы от свободной библиотеки. Если в лицензии тем или иным образом сказано, что производная работа должна лицензироватся по этой же лицензии, то разработчик не имеет права включать эту библиотеку в закрытый софт. А вот использование не запрещено. Поэтому нарушение лицензии происходит только при включении в дистрибутив программы.
Интеллектуальной собственности не существует, это — миф.
Ну да да. Известная тема :-)))
Тут несколько путей. Кроме упомянутой лицензии BSD есть другие либеральные лицензии, например MIT позволяет делать с кодом почти что угодно, Apache Public Licence, CDDL тоже позволяют многое.
Некоторые авторы предусматривают двойное лицензирование, GPL для свободного использования и проприетарная лицензия для желающих использовать код в несвободных продуктах. Пример такого MySQL.
Можно вынести несвободный код в отдельные модули, и предоставлять код только открытых частей, или даже использовать свободные программы в качестве внешних компонентов.
  • avatar
  • LRN
  • 03 июля 2009, 21:29
  • #
  • 4
Итак, насчёт разных лицензий. Фактически, 3 варианта:
GPL — полная защита СПО, ничего комбинировать нельзя
LGPL — неполная защита СПО, можно комбинировать, но свободная часть остаётся свободной
3-clause BSD, MIT и аналоги — отсутствие защиты СПО, можно закрывать код

Надо сказать, что «комбинирование» — не совсем удачный термин. Строго говоря, GPL не запрещает комбинировать СПО и не-СПО. GPL запрещает распространять такую комбинацию без сырцов. То есть можно использовать GPL-библиотеки с проприетарным ПО. Но нельзя такое ПО распространять (вообще, можно попробовать распространять в виде сырцов, но тогда теряется основной смысл проприетарности).

Теперь, о бинарниках. Я в своё время направил подобный вопрос в FSF. Они мне сказали примерно следующее: степень интеграции двух программных объектов (СПО-объекта и не-СПО-объекта) определяется в суде. Если суд скажет, что имеет место комбинация, то разработчик нарушил GPL. Это касается таких экзотических способов как связывание GPL-библиотеки через сокет с проприетарной программой, так как с простой линковкой всё и так ясно — нельзя.

Сайт FSF отдельно говорит о плагинах (когда происходит динамическая линковка, но при этом отсутствует явная заточка головного ПО под плагин, то есть разработчики головного ПО не могут предвидеть, плагины под какими лицензиями будут комбинироваться с их ПО, поскольку интерфейс универсальный). Это — серая зона. В частности, известны проприетарные программы, под которые пишутся свободные плагины — и никто никого пока не судит.
Спасибо! Абзацы 2 и 3 просто в точку.
Пардон, в смысле абзацы 3 и 4. Я этого нигде по-человечески прочитать не мог (ну именно объяснение с технической точки зрения)
Т.е. использование свободных (GPL) библиотек запрещено в любом виде?
Да, т.е. тот факт, что ты производишь комбинацию не на уровне сырцов, а только на уровне бинарников, никаких ограничений не снимает, даже если ты линкуешь в рантайме (dlopen), а не при запуске. Исключение — плагины (скорее всего потому, что комбинирование опционально и производится конечным пользователем, а не основным разработчиком), и то с ними не совсем понятно, что делать. Но если твоя программа тупо линкуется с GPL-библиотекой, то твоя программа либо должна быть GPL, либо не должна быть вообще :)
Хм. Можете указать на соответствующий пункт в лицензионном соглашении?
В случае если отдельные части данного произведения не являются производными от Программы, являются результатом творческой деятельности и могут быть использованы как самостоятельное произведение, Лицензиат вправе распространять отдельно такое произведение на иных лицензионных условиях. В случае если Лицензиат распространяет вышеуказанные части в составе произведения, производного от Программы, то условия настоящей Лицензии применяются к произведению в целом, при этом права, приобретаемые сублицензиатами на основании Лицензии, передаются им в отношении всего произведения, включая все его части, независимо от того, кто является их авторами.
Не совсем понял вопрос.

Относительно приведённого куска поясняю его смысл: если куски комбинированной программы ты написал сам, не основываясь на свободных кусках, и эти (свои) куски способны работать в отрыве от свободных кусков, ты можешь эти (свои) куски распространять как хочешь (потому что они твои) отдельно от свободных кусков. Но если ты распространяешь всё вместе, то оно должно быть свободным всё вместе (хочешь ты того или нет), и эти (свои) куски тоже становятся свободными.

То есть опять же, основной камень преткновения — вопрос о том, способны ли несвободные части произведения работать в отрыве от свободных (т.е. свободные части — опциональны). Если да, то GPL в принципе не нарушен, если обе части остаются отдельными [на уровне сырцов?] (не уверен, можно ли в таком случае распространять бинарники вместе, наверное — да). Но это уже тонкости.
А если программа посылает пользователя куда-подальше за библиотекой и система не падает в BSOD, то она считается способной работать в отрыве от свободных?
Нет. Функциональность программы не раскрывается в отсутствие библиотеки.

Если без библиотеки работает — то другое дело.

Но опять же — это тонкости. И см. замечание насчёт решения суда.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.