Что означает лицензия с открытым исходным кодом (например, GNU-GPL)? [закрытый]

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

Я немного смущен этим. Я понимаю, что Linux также доступен под лицензией GNU-GPL. Означает ли это все linux приложение и должно быть с открытым исходным кодом? Означает ли это, что я могу запросить исходный код complete Oracle DB от Oracle Corp (по крайней мере, часть что работает на Linux)?

EDIT:

принято от часто задаваемые вопросы:

Если библиотека выпущена под GPL (не LGPL), означает ли это что любая программа, которая использует его быть под GPL или GPL-совместимым лицензия?

Да, потому что программа, как это фактически run включает библиотеку.

4 ответов


важно понимать, что "GPL" может относиться к двум лицензиям.

  • общая общественная Лицензия GNU
  • GNU Lesser General Public License (aka) библиотека общая общественная лицензия

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

теперь различия между двумя лицензиями становятся очень важными.

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

к счастью (или нет? в зависимости от ваших взглядов), библиотека GNU C не под GPL. Он покрыт LGPL. LGPL говорит, что простая загрузка и использование библиотеки system C представляет собой комбинированную работу, но сделано исключение, которое позволяет проприетарным приложениям делать это без необходимости соблюдать требования к распределению GPL. Таким образом, в этом случае Oracle может свободно использовать библиотеку system C (необходимую для запуска их кода) без каких-либо обязательств чтобы освободить их исходный код.

если Oracle выпустила программное обеспечение, которое необходимо загрузить или связать с библиотекой, покрытой GPL, скажем .. readline(), тогда да, они будут обязаны поделиться кодом. Oracle (как и многие другие, которые пишут программное обеспечение для UNIX-подобных операционных систем) тщательно выбирает библиотеки, которые выпущены под более разрешительной лицензией (aka 2 или 3-clause BSD), или реализуют свои собственные.

насколько ядро идет, просто используя его интерфейс syscall делает не составляют комбинированную работу. В то время как большинство из нас просто позволяют библиотеке system C абстрагироваться от этих сложностей, вы можете реализовать свои собственные syscalls на любых условиях. Это иллюстрирует, почему LGPL для библиотеки system C был очень стратегическим выбором. Если бы все было наоборот, GNU / Linux отпугнула бы больше разработчиков, чем привлекла. Обратите внимание также, что многие из заголовков Linux, которые определяют магические числа, необходимые для разговора с syscall ядра интерфейс не имеет лицензии, упомянутой вообще. См.linux/sysctl.h например, или эта записка от самого Линуса в COPYING файл, распространяемый с ядром:

внимание! Это авторское право делает не обложка пользовательских программ, использующих ядро услуги по обычным системным вызовам-это просто считается нормальным использование ядро, и делает не подпадают под заголовок "производная работа". Также обратите внимание, что GPL ниже защищен авторским правом по Free Software Foundation, но экземпляр кода, на который он ссылается (ядро Linux) защищено авторским правом я и другие, кто ее написал.

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

                    Linus Torvalds

Примечание, Линус специально говорит, используя заголовки ядра и интерфейс syscall не представляет собой производные (как в модифицированных) или в сочетании (как в просто использовал) работы. Это, среди прочего, является частью разрыва между Linux и GNU. Я упоминаю об этом только потому, что вы косвенно упоминаете о последствиях GPL. Линус (иногда) хочет код, который изменяет ядро, но выбрал GPL, чтобы (иногда) был его выбор.

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

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

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

FSF принимает вопросы, связанные с GPL на licensing@fsf.org - если вы когда-либо сомневаетесь в конкретном случае и хотите убедиться, что у вас нет проблем, они довольно дружелюбны и рады ответить на вопросы .. хотя вы создаете несвободные программы. Им нравится, когда люди прилагают некоторые усилия, чтобы обеспечить надлежащее соблюдение лицензии, что, к сожалению, не происходит время от времени.

эта тема по-прежнему так же чувствительна, как и в начале 90-х годов.


Linux-это ядро, ни одно приложение не будет использовать ядро напрямую, но через библиотеку, как правило, GLIBC, который выпущен под LGPL. Это немного нарушает цепочку GPL, потому что GLIBC syscalls ядро, но это, похоже, согласовано. Поэтому я боюсь, что вы не получите код от Oracle : -).

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


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

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

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

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


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

короче: Нет, все приложения Linux не должны быть с открытым исходным кодом. Нет, вы не можете запросить исходный код для Oracle DB.

действительно очень упрощенный GPL говорит, что если вы распространяете двоичные файлы, вы также должны предложить распространять источник. Поэтому, если вы распространяете двоичные файлы ядра Linux, вы также должны предложить распространять источник для этих двоичных файлов.