Это перевод страницы, написанной на английском языке.

Ответы на вопросы о лицензиях GNU

Содержание


Простые вопросы о проекте GNU, Фонде свободного программного обеспечения и его лицензиях

Общее понимание лицензий GNU

Применение лицензий GNU в ваших программах

Распространение программ, выпущенных под лицензиями GNU

Использование программ, выпущенных на условиях лицензий GNU, при написании других программ

Комбинирование работы с текстами, выпущенными на условиях лицензий GNU

Вопросы о нарушениях лицензий GNU


Как расшифровывается “GPL”? (#WhatDoesGPLStandFor)

“GPL” расшифровывается как “General Public License” (“Стандартная общественная лицензия”). Наиболее широко из таких лицензий распространена Стандартная общественная лицензия GNU, коротко обозначаемая как “GNU GPL”. Это выражение можно дальше сократить до “GPL”, когда ясно, что имеется в виду именно GNU GPL.

Подразумевает ли выражение “свободная программа” применение GPL? (#DoesFreeSoftwareMeanUsingTheGPL)

Вовсе нет — есть много других лицензий свободных программ. У нас есть неполный список. Любая лицензия, которая предоставляет пользователю определенные особые свободы, является лицензией свободных программ.

Почему мне следует применять GNU GPL, а не другие лицензии свободных программ? (#WhyUseGPL)

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

Все ли программы GNU используют в качестве лицензии GNU GPL? (#DoesAllGNUSoftwareUseTheGNUGPLAsItsLicense)

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

Если для программы применяется GPL, то делает ли это ее программой GNU? (#DoesUsingTheGPLForAProgramMakeItGNUSoftware)

Кто угодно может выпустить программу под GNU GPL, но это не делает ее пакетом GNU.

Сделать программу пакетом GNU значит сделать вклад в проект GNU явным образом. Это происходит, когда разработчики программы и проект GNU дают на это согласие. Если вы заинтересованы в добавлении программы в проект GNU, напишите, пожалуйста, по адресу: <[email protected]>.

Что мне следует делать, если я обнаруживаю возможное нарушение GPL? (#ReportingViolation)

Вам следует прислать отчет об этом. Сперва как можно тщательнее проверьте факты. Затем расскажите правообладателю или тому, кто опубликовал конкретную программу по GPL. Если это Фонд свободного программного обеспечения, напишите по адресу: <[email protected]>. В противном случае тот, кто поддерживает программу, может быть правообладателем или знать, как с ним связаться, так что пришлите отчет тому, кто поддерживает программу.

Почему GPL разрешает пользователям публиковать свои измененные версии? (#WhyDoesTheGPLPermitUsersToPublishTheirModifiedVersions)

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

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

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

Требует ли GPL, чтобы исходный текст измененных версий выставлялся на всеобщее обозрение? (#GPLRequireSourcePostedPublic)

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

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

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

Может у меня быть программа под GPL и не связанная с ней несвободная программа на одном и том же компьютере? (#GPLAndNonfreeOnSameMachine)

Да.

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

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

Что означает в GPL версии 2 “письменное предложение, действительное для любой третьей стороны”? Значит ли это, что все на свете могут получить исходный текст любой программы под GPL, все равно, какой именно? (#WhatDoesWrittenOfferValid)

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

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

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

В версии 2 GPL сказано, что если выпускаются измененные версии, то они должны быть “лицензированы… для всех третьих сторон”. Кто эти третьи стороны? (#TheGPLSaysModifiedVersions)

В разделе 2 сказано, что измененные версии, которые вы распространяете, должны быть лицензированы для всех третьих сторон по GPL. Слова “все третьи стороны” означают абсолютно всех — но это не требует от вас делать для них что-то физически. Это только значит, что вы дали им разрешение применять вашу версию по GPL.

Требуется ли от меня заявление авторских прав на мои изменения в программе под GPL (#RequiredToClaimCopyright)?

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

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

Что GPL говорит о переводе программы на другой язык программирования? (#TranslateCode)

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

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

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

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

Позволяет ли мне GPL продавать копии программы за деньги? (#DoesTheGPLAllowMoney)

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

Позволяет ли мне GPL брать плату за получение программы с моего распространяющего сайта? (#DoesTheGPLAllowDownloadFee)

Да. Вы можете брать любую плату, какую только пожелаете, за распространение копии программы. По условиям GPL версии 2, если вы распространяете двоичные файлы по сети, вы должны предоставить “эквивалентный доступ” для получения исходного текста — следовательно, плата за получение по сети исходного текста не должна быть больше, чем плата за получение двоичных файлов. Если двоичные файлы распространяются по лицензии GPL версии 3, вы должны предложить эквивалентный доступ к исходному тексту тем же способом из того же места без дополнительной оплаты.

Позволяет ли мне GPL требовать, чтобы всякий, кто получает программу, платил мне или извещал меня? (#DoesTheGPLAllowRequireFee)

Нет. Фактически подобное требование сделало бы программу несвободной. Если люди должны платить, когда они получают копию программы, или если они должны оповещать кого-то конкретно, то программа не свободна. См. определение свободной программы.

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

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

Если я распространяю программу под GPL за деньги, требуется ли от меня также предоставить ее обществу бесплатно? (#DoesTheGPLRequireAvailabilityToPublic)

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

Позволяет ли мне GPL распространять копии по договору о неразглашении? (#DoesTheGPLAllowNDA)

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

Если кто-то просит вас подписать договор о неразглашении для получения программы под GPL, авторские права на которую принадлежат ФСПО, пожалуйста, информируйте нас немедленно, написав по адресу: [email protected].

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

Позволяет ли мне GPL распространять измененную или тестовую версию по договору о неразглашении? (#DoesTheGPLAllowModNDA)

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

Позволяет ли мне GPL разрабатывать измененную версию по договору о неразглашении? (#DevelopChangesUnderNDA)

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

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

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

Я хочу признания за свою работу. Я хочу, чтобы люди знали, что я написал. Могу я требовать признания, если я применяю GPL? (#IWantCredit)

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

Позволяет ли мне GPL добавить требование ссылаться или размещать благодарности в научных статьях, где используются программы под GPL или результаты их работы? (#RequireCitation)

Нет, условия GPL этого не допускают. Хотя мы признаем, что правильно оформленные ссылки составляют важную часть научных публикаций, это не может быть добавлено в качестве дополнительного требования GPL. Требование ссылок в научных статьях, в которых использованы программы под GPL, выходит за пределы того, что было бы допустимым дополнительным требованием согласно разделу 7(b) GPLv3, следовательно, это рассматривалось бы как дополнительное ограничение в рамках раздела 7 GPL. Кроме того, авторское право не позволяет устанавливать такие требования на результаты работы программы независимо от того, лицензирована ли она по GPL или по какой-либо другой лицензии.

Почему GPL требует передачи копии GPL в каждой копии программы? (#WhyMustIInclude)

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

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

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

Достаточно ли просто добавить копию GNU GPL в мой репозиторий? (#LicenseCopyOnly)

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

Файл, в котором содержится только лицензия, без заявления о том, что она распространяется на определенные файлы, сопоставима с файлом, в котором записана только подпрограмма, которая ниоткуда больше не вызывается. Аналогия не точна: юристы и суды могли бы применить здравый смысл и заключить, что вы, должно быть, поместили туда копию GNU GPL, потому что хотели лицензировать программы таким образом. А могли бы и не применять. Зачем оставлять какую-то неопределенность?

Это заявление должно быть в каждом файле исходного текста. Ясного заявления в файле README было бы юридически достаточно до тех пор, пока файл сопровождает программы, но их легко разделить. Зачем идти на риск неопределенности в лицензии ваших программ?

Это не имеет никакого отношения к особенностям GNU GPL. Это верно для любой лицензии свободных программ.

Почему мне нужно помещать уведомление о лицензии в каждый файл исходного текста? (#NoticeInSourceFile)

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

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

Это не имеет никакого отношения к особенностям GNU GPL. Это верно для любой лицензии свободных программ.

Что, если работа не очень велика? (#WhatIfWorkIsShort)

Если весь пакет программ содержит очень немного текста — по нашему критерию, меньше трехсот строк — то для него вполне можно применять безвольную неограничительную лицензию вместо лицензии с авторским левом, такой, как GNU GPL (то есть кроме случаев,когда программа особо важна). Для таких случаев мы рекомендуем версию 2.0 Лицензии Apache.

Могу я опустить преамбулу GPL или инструкции по применению ее для собственных программ, чтобы сэкономить место? (#GPLOmitPreamble)

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

Преамбула и инструкции добавляют примерно до 1000 слов, меньше, чем 1/5 общего размера GPL. Это не составит существенного относительного увеличения в размере пакета программ, если только сам пакет не очень мал; в этом случае вы можете использовать и простую всеразрешающую лицензию, а не GNU GPL.

Что имеют в виду, когда говорят, что две лицензии “совместимы”?(#WhatIsCompatible)

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

Для некоторых лицензий способ комбинирования может влиять на то, совместимы ли они — например, они могут позволять связывать друг с другом два модуля, но не позволять сливать их тексты в одном модуле.

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

Что означают слова “лицензия совместима с GPL”? (#WhatDoesCompatMean)

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

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

С GPLv3 совместимо больше лицензий, чем с GPLv2: она позволяет вам делать комбинации с текстами, у которых есть особого рода дополнительные требования, которых в самой GPLv3 нет. Более подробные сведения об этом, включая список допустимых дополнительных требований, находятся в разделе 7.

Могу ли я написать свободную программу, которая пользуется несвободными библиотеками? (#FSWithNFLibs)

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

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

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

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

Могу ли я компоновать программу под GPL с несвободной системной библиотекой? (#SystemLibraryException)

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

Критерии того, что считается “системной библиотекой”, для разных версий GPL различны. GPLv3 явно определяет “системные библиотеки” в разделе 1, чтобы исключить их из определения “соответствующего исходного текста”. В GPLv2 этот вопрос решается по-другому, в конце раздела 3.

Каким образом я могу компоновать или комбинировать программы под AGPLv3 и под GPLv3? (#AGPLGPL)

Каждая из этих лицензий явным образом разрешает компоновку с программами под другой лицензией. Вы всегда можете компоновать модули под GPLv3 c модулями под AGPLv3 и наоборот. Это верно независимо от того, являются ли некоторые из модулей библиотеками или нет.

Какие юридические проблемы возникают, если я применяю несовместимые с GPL библиотеки с программами под GPL? (#GPLIncompatibleLibs)

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

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

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

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

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

Copyright (C) [годы] [имя правообладателя]

Эта программа свободна; вы можете перераспространять и/или изменять ее на условиях Стандартной общественной лицензии GNU, опубликованной Фондом свободного программного обеспечения; либо версии 3 этой лицензии, либо (по вашему выбору) любой более поздней версии.

Эта программа распространяется в надежде на то, что будет полезной, но БЕЗО ВСЯКОЙ ГАРАНТИИ; даже без неявной гарантии ТОВАРНОГО ВИДА или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ НУЖД. Подробности см. в Стандартной общественной лицензии GNU.

Вы должны были получить копию Стандартной общественной лицензии GNU вместе с этой программой; если это не так, см. <https://www.gnu.org/licenses>.

Дополнительное разрешение в соответствии с разделом 7 GNU GPL версии 3

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

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

Copyright (C) [годы] [имя правообладателя]

Эта программа свободна; вы можете перераспространять и/или изменять ее на условиях Стандартной общественной лицензии GNU, опубликованной Фондом свободного программного обеспечения; либо версии 2 этой лицензии, либо (по вашему выбору) любой более поздней версии.

Эта программа распространяется в надежде на то, что будет полезной, но БЕЗО ВСЯКОЙ ГАРАНТИИ; даже без неявной гарантии ТОВАРНОГО ВИДА или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ НУЖД. Подробности см. в Стандартной общественной лицензии GNU.

Вы должны были получить копию Стандартной общественной лицензии GNU вместе с этой программой; если это не так, см. <https://www.gnu.org/licenses>.

В результате статической или динамической компоновки [название вашей программы] с другими модулями получается комбинированная работа, производная от [название вашей программы]. Таким образом, условия и требования Стандартной общественной лицензии GNU распространяются на комбинацию в целом.

В дополнение, как особое исключение, правообладатели [название вашей программы] дают вам разрешение комбинировать [название вашей программы] со свободными программами или библиотеками, выпущенными под GNU LGPL и с программами, включаемыми в стандартный выпуск [название библиотеки], распространяемой по [название лицензии библиотеки] (или измененными версиями таких программ под той же лицензией). Вы можете копировать и распространять такую систему, следуя требованиям GNU GPL в отношении [название вашей программы] и лицензиям других привлекаемых программ{ при условии, что вы включаете исходный текст этих других программ, когда и в том виде, в каком GNU GPL требует передачи исходного текста}.

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

Как мне получить авторские права на свою программу, чтобы выпустить ее под GPL? (#HowIGetCopyright)

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

Однако зарегистрировать авторские права в США — очень неплохая идея. Это придаст вам больше веса в разбирательствах с нарушителями в США.

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

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

Что, если мое учебное заведение захочет обратить мою программу в свой несвободный программный продукт? (#WhatIfSchool)

В наши дни многие университеты пытаются собирать фонды, ограничивая пользование знаниями, которые они вырабатывают; фактически их поведение мало отличается от поведения коммерческих предприятий (см. общее обсуждение этой проблемы и ее последствий в статье “Прибранный университет” в “Атлантическом ежемесячнике” за март 2000 года).

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

Итак, мы рекомендуем вам подойти к ним, когда программа готова еще только наполовину, и сказать: “Если вы согласитесь выпустить это как свободную программу, я доделаю ее”. Не относитесь к этому как к блефу. Чтобы выйти победителем, нужно иметь смелость сказать: “Моя программа будет свободна; иначе она не увидит свет”.

Не могли бы вы дать мне подробные указания насчет того, как применить GPL к моей программе? (#CouldYouHelpApplyGPL)

См. страницу с указаниями по GPL.

Мне говорили, что кто-то получил копию программы под GPL по другой лицензии. Возможно ли это? (#HeardOtherLicense)

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

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

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

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

Связан ли разработчик программы под GPL текстом лицензии? Могут ли быть действия разработчика нарушением GPL? (#DeveloperViolate)

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

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

Может ли разработчик программы, распространявший ее по GPL, впоследствии передать исключительные права на нее другой стороне? (#CanDeveloperThirdParty)

Нет, потому что общество уже получило право пользоваться программой на условиях GPL и это право не может быть отозвано.

Можно мне пользоваться редакторами под GPL, такими, как GNU Emacs, для разработки несвободных программ? Можно мне пользоваться средствами разработки под GPL, такими, как GCC, чтобы компилировать их? (#CanIUseGPLToolsForNF)

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

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

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

Есть ли у меня право на “добросовестное использование” исходного текста программы под GPL? (#GPLFairUse)

Да, есть. “Добросовестное использование” — это использование, которое допускается без какого бы то ни было особого разрешения. Поскольку вам не нужно разрешение разработчиков на такое использование, вы можете делать это независимо от того, что об этом говорят разработчики — в лицензии или где-то еще, независимо от того, является ли лицензией GNU GPL или любая другая лицензия свободных программ.

Однако обратите внимание, что не существует общемировых принципов добросовестного использования; то, какого рода использование считается “добросовестным”, меняется от одной стране к другой.

Может ли правительство США выпустить программу под GNU GPL? (#GPLUSGov)

Если программа написана сотрудниками федеральных органов США в процессе их работы, то она находится в общественном достоянии, то есть исключительное авторское право на нее не распространяется. Поскольку GNU GPL основана на авторском праве, такую программу нельзя выпустить под GNU GPL (что, однако, не мешает ей быть свободной: программа в общественном достоянии свободна).

Однако когда федеральное государственное агентство США применяет для разработки программ контракты, это другое дело. По контракту от подрядчика может требоваться выпуск программы под GNU GPL (таким образом разрабатывался компилятор GNU Ada). Или по контракту авторские права могут передаваться государственному агентству, которое может затем выпустить программу под GNU GPL.

Может ли правительство США выпускать улучшения программы под GPL? (#GPLUSGovAdd)

Да. Если улучшения написаны сотрудниками государственных учреждений США в процессе их работы, то улучшения находятся в общественном достоянии. Однако на улучшенную версию в целом все равно распространяется GNU GPL. Никаких затруднений это не представляет.

Если правительство США применяет для этой работы контракты, то на сами улучшения могут распространяться условия GPL.

Отличаются ли требования GPL к статической компоновке модулей с произведением, на которое распространяется GPL, от требований к динамической компоновке? (#GPLStaticVsDynamic)

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

Отличаются ли требования LGPL к статической компоновке модулей с произведением, на которое распространяется LGPL, от требований к динамической компоновке? (#LGPLStaticVsDynamic)

С точки зрения удовлетворения условиям LGPL (любой существующей на данный момент версии: 2, 2.1 или 3),

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

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

Есть ли способ распространить GPL на выходные данные, которые люди получают при пользовании моей программой? Например, если моя программа применяется для разработки аппаратуры, могу я потребовать, чтобы эти разработки были свободны? (#GPLOutput)

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

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

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

В каких случаях GPL распространяется и на результат работы программы под GPL? (#WhatCaseIsOutputGPL)

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

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

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

Не забывайте, что в некоторых программах, в частности, в видеоиграх, могут быть графика или звук, лицензируемые отдельно от этой игры, распространяемой по GPL. В таких случаях лицензия на графику и звук диктует условия, на которых может вестись перезапись видео и звука. См. также: Могу я применять GPL для чего-нибудь кроме программ?

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

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

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

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

Да, потому что программа в действительности объединяется с библиотекой. Таким образом, условия GPL распространяются на всю комбинацию. Программные модули, которые связываются с библиотекой, могут быть под различными совместимыми с GPL лицензиями, но произведение в целом должно лицензироваться по GPL. См. также Что означают слова “лицензия совместима с GPL”?

Если интерпретатор языка программирования выпускается под GPL, значит ли это, что программы для него должны выпускаться на условиях совместимых с GPL лицензий? (#IfInterpreterIsGPL)

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

Однако когда интерпретатор расширяется для того, чтобы обеспечить “привязки” к другим средствам (часто, но не всегда — к библиотекам), интерпретируемая программа фактически компонуется со средствами, которыми она пользуется с помощью этих привязок. Так что если эти средства выпускаются под GPL, то интерпретируемая программа должна выпускаться совместимым с GPL образом. JNI (Java Native Interface) — пример механизма такой привязки; библиотеки, к которым предоставляется доступ таким образом, компонуются динамически с программами на Java, которые вызывают их. Эти библиотеки компонуются также с интерпретатором. Если интерпретатор статически связывается с этими библиотеками или если он разработан так, чтобы динамически компоноваться с этими конкретными библиотеками, то он тоже должен выпускаться совместимым с GPL образом.

Другой сходный и очень распространенный случай — поставка с интерпретатором библиотек, которые сами интерпретируются. Например, Perl поставляется с большим набором модулей на языке Perl, а реализация Java поставляется с большим набором классов языка Java. Эти библиотеки и программы, которые их вызывают, всегда динамически компонуются друг с другом.

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

Я пишу приложение для Windows на Microsoft Visual C++ (или Visual Basic) и буду выпускать его под GPL. Допускает ли GPL динамическое связывание моей программы с библиотекой времени исполнения Visual C++ (или Visual Basic)? (#WindowsRuntimeAndGPL)

Вы можете компоновать свою программу с этими библиотеками и передавать скомпилированную программу другим. Когда вы это делаете, библиотека времени исполнения является в терминах GPLv3 “системной библиотекой”. Это значит, что вам не нужно заботиться о том, чтобы их исходный текст был включен в “соответствующий исходный текст” программы. GPLv2 содержит сходное исключение в разделе 3.

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

Можно писать свободные программы, которые работают только под Windows, но это неразумно. Эти программы были бы “в западне” Windows; таким образом, их вклад в мир свободы равен нулю.

Почему первоначальная лицензия BSD несовместима с GPL? (#OrigBSD)

Потому что она налагает некое требование, которого нет в GPL; а именно, требование на рекламные материалы для программы. В разделе 6 GPLv2 сказано:

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

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

В пересмотренной лицензии BSD пункта о рекламе нет, что устраняет проблему.

Когда программа и ее внешние модули считаются единой комбинированной программой? (#GPLPlugins)

Это зависит от того, как главная программа вызывает свои внешние модули. Если главная программа использует для этого fork и exec и они завязывают тесное общение через сложные структуры данных, общие или передаваемые туда и обратно, то они становятся единой комбинированной программой. Когда главная программа использует для вызова внешних модулей просто fork и exec, не завязывая тесного общения с ними, внешние модули остаются отдельными программами.

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

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

Если я пишу внешний модуль для применения с программой, выпущенной под GPL, какие требования это налагает на лицензии, под которыми я могу распространять свой модуль? (#GPLAndPlugins)

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

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

Могу я применять GPL, когда пишу внешний модуль к несвободной программе? (#GPLPluginsInNF)

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

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

См. также ответ на вопрос о написании свободных программ с использованием несвободных библиотек.

Могу я выпустить несвободную программу, составленную так, чтобы подгружать внешний модуль под GPL? (#NFUseGPLPlugins)

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

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

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

См. также ответ на вопрос о написании свободных программ с использованием несвободных библиотек.

У вас есть программа под GPL, которую мне хотелось бы скомпоновать с моими программами, чтобы получить несвободную программу. Означает ли факт компоновки с вашей программой, что от меня требуется выпускать свою программу под GPL? (#LinkingWithGPL)

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

В таком случае, есть ли у меня хоть какая-то надежда на получение от вас программы на условиях Меньшей GPL? (#SwitchToLGPL)

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

У вас всегда есть законная альтернатива: не пользоваться нашим исходным текстом.

Является ли нарушением GPL распространение несвободного драйвера, предназначенного для компоновки с ядром Linux? (#NonfreeDriverKernelLinux)

Linux (ядро операционной системы GNU/Linux) распространяется по GNU GPL версии 2. Является ли нарушением GPL распространение несвободного драйвера, предназначенного для компоновки с Linux?

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

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

Как мне позволить компоновать несвободные модули со своей библиотекой под GPL только по определенному протоколу? (#LinkingOverControlledInterface)

Добавьте следующий текст к замечанию о лицензии в каждый файл пакета в конце текста, в котором говорится о том, что файл распространяется на условиях GNU GPL:

В результате динамической или статической компоновки АБВ с другими модулями получается произведение, производное от АБВ. Таким образом, условия и требования Стандартной общественной лицензии GNU распространяются на комбинацию в целом.

Как особое исключение, правообладатели АБВ дают вам разрешение комбинировать АБВ со свободными программами или библиотеками, выпускаемыми под GNU LGPL, и с независимыми модулями, которые сообщаются с АБВ исключительно по протоколу АБВГДЕ. Вы можете копировать и распространять такую систему, следуя требованиям GNU GPL в отношении АБВ и требованиям лицензий других программ, которые используются, при условии, что вы предоставляете исходный текст этих других программ, когда и как GNU GPL требует распространять исходный текст, и при условии, что вы не изменяете протокол АБВГДЕ.

Обратите внимание, что те, кто делает измененную версию АБВ, не обязаны предоставлять это особое исключение для своих измененных версий; это решают они. Стандартная общественная лицензия GNU дает разрешение выпускать измененную версию без этого исключения; это исключение также создает возможность выпуска измененной версии, в которой это исключение продлевается.Если вы изменяете протокол АБВГДЕ, это исключение не распространяется на вашу измененную версию АБВ, и вы должны удалить это исключение, когда распространяете свою измененную версию.

Это исключение является дополнительным разрешением, предусмотренным разделом 7 версии 3 Стандартной общественной лицензии GNU (“GPLv3”)

Это исключение допускает компоновку с лицензированными по-другому модулями по указанному протоколу (“АБВГДЕ”), гарантируя в то же время, что пользователи по-прежнему будут получать исходный текст, как они получали бы его в обычных условиях GPL.

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

Мной написано приложение, которое компонуется с большим числом разных составляющих с разными лицензиями. Я никак не могу понять, какие требования предъявляются к лицензированию моей программы. Не были бы вы так любезны рассказать мне, какими лицензиями я могу пользоваться? (#ManyDifferentLicenses)

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

  • Чтобы моя программа работала, ее нужно скомпоновать с библиотекой АБВ, распространяемой на условиях Меньшей GPL.
  • Моя программа делает системный вызов (с командной строкой, которую я составляю), чтобы запустить программу БВГ, которая лицензируется по “GPL с особым исключением, позволяющим компоновать с QUUX”.
Какова разница между “сборником” и другими видами “измененных версий”? (#MereAggregation)

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

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

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

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

При определении того, составляют ли две части программы единое произвеление, имеет ли какое-то значение факт, что программы заключаются в один или более контейнеров? (#AggregateContainers)

Нет, на анализ того, являются ли они единым произведением или совместным размещением применение контейнеров не влияет.

Почему ФСПО требует, чтобы те, кто вносит вклад в программы, авторские права на которые принадлежат ФСПО, передавали фонду авторские права? Следует ли и мне делать это, если мне принадлежат авторские права на программу под GPL? Если да, то как? (#AssignCopyright)

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

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

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

Если вы хотите работать над обеспечением соблюдения GPL в отношении вашей программы, то для вас, вероятно, было бы неплохой идеей следовать подобному правилу. Напишите, пожалуйста, по адресу <[email protected]>, если хотите получить более подробные сведения.

Можно мне изменить GPL и сделать другую лицензию? (#ModifyGPL)

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

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

Если вы хотите воспользоваться нашей преамбулой в измененной лицензии, запросите, пожалуйста, разрешение по адресу <[email protected]>. Для этого мы хотели бы проанализировать требования лицензии, чтобы понять, одобряем ли мы их.

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

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

Если я пользуюсь программой, которая получена на условиях GNU GPL, могу ли я видоизменить первоначальный исходный текст в новую программу, а затем распространять и продавать эту новую программу за деньги? (#GPLCommercially)

Вам позволено продавать копии измененной программы за деньги, но только на условиях GNU GPL. Таким образом, вы должны, например, сделать исходный текст доступным для пользователей программы, как описано в GPL, и им должно быть разрешено изменять и перераспространять ее, как описано в GPL.

Эти требования — условия включения частей программ под GPL, которые вы получили, в свою собственную программу.

Могу я применять GPL для чего-нибудь кроме программ? (#GPLOtherThanSoftware)

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

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

Как LGPL работает с Java? (#LGPLJava)

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

Рассмотрим ситуацию: 1) X выпускает версию V1 проекта под GPL. 2) Y вносит доработки в версию V2, которые включают изменения и новые тексты программ, основанные на V1. 3) X хочет выпускать V2 под лицензией, отличной от GPL. Нужно ли X разрешение Y? (#Consider)

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

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

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

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

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

Разница между этим и “включением” программ под GPL частично состоит в сущности, а частично — в форме взаимодействия. Часть, которая касается сущности, такова: если две программы сочетаются так, что фактически становятся двумя частями одной программы, то вы не можете рассматривать их как раздельные программы. Таким образом, GPL должна распространяться на все это.

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

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

Применение определенной программы GNU под GPL не укладывается в наш проект по созданию несвободных программ. Не сделаете ли вы для нас исключения? Это означало вы большее число пользователей этой программы. (#WillYouMakeAnException)

Простите, мы не делаем таких исключений. Это было бы неправильно.

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

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

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

Мне хотелось бы включить программу под GPL в свою несвободную систему. Могу я это сделать, поставив “обертывающий” модуль под совместимой с GPL безвольной неограничительной лицензией (как, например, лицензия X11) между частью, распространяемой по GPL, и несвободной частью? (#GPLWrapper)

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

Тот факт, что несвободный модуль А соединяется с модулем В, распространяемым по GPL, только через модуль Б, распространяемый по лицензии X11, с точки зрения закона значения не имеет; значение имеет тот факт, что модуль В включается в целое.

Где можно узнать подробнее об исключении для библиотек времени исполнения GCC? (#LibGCCException)

Исключение для библиотек времени исполнения GCC распространяется на libgcc, libstdc++, libfortran, libgomp, libdecnumber и другие библиотеки, поставляемые с GCC. Исключение предназначено для того, чтобы позволить людям распространять программы, скомпилированные с помощью GCC, на выбранных ими условиях, несмотря на то, что части этих библиотек включаются в исполняемый файл в процессе компиляции. Подробнее можно прочесть в отдельной статье об исключении для библиотек времени исполнения GCC.

Мне хотелось бы изменить программы под GPL и связать их с библиотеками переносимости ОАО “Дармоед”. Я не могу распространять исходный текст этих библиотек, так что каждому пользователю, который хотел бы изменить эти версии, пришлось бы получить эти библиотеки отдельно. Почему GPL не допускает этого? (#MoneyGuzzlerInc)

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

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

Более конкретно, версии программ, связанные с библиотеками ОАО “Дармоед”, в действительности не были бы свободными в нашем понимании — они не поставлялись бы с полным исходным текстом, который позволяет пользователям править и перекомпилировать программу.

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

Если программа П выпускается под GPL, это значит, что любая и каждая часть ее может использоваться по GPL. Если вы включаете модуль М и выпускаете комбинированную программу П+М под GPL, это значит, что любая часть П+М может использоваться по GPL. М — одна из частей П+М. Таким образом, выпуск П+М под GPL означает, что М может использоваться по GPL. Иначе говоря, пользователь, получивший П+М по GPL, может удалить П, так что М останется под GPL.

Если лицензия модуля М разрешает вам давать такое разрешение, то она совместима с GPL. В противном случае она не совместима с GPL.

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

Могу я выпустить измененную версию программы под GPL только в двоичном виде? (#ModifiedJustBinary)

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

Я взял по сети только двоичный файл. Если я распространяю копии, нужно ли мне получить исходный текст и распространять его тоже? (#UnchangedJustBinary)

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

Я хочу распространять двоичные файлы на физическом носителе без сопровождающих исходных текстов. Могу я поставлять исходный текст по FTP вместо заказа по почте? (#DistributeWithSourceOnInternet)

Версия 3 GPL это допускает; детали см. в пункте 6b. В условиях версии 2 вы, безусловно, вправе предложить исходный текст по FTP, и большинство пользователей будет получать его оттуда. Однако если кто-нибудь из них предпочитает получить исходный текст на физическом носителе по почте, то от вас требуется предоставить это.

Если вы распространяете двоичные файлы по FTP, вы должны распространять исходный текст по FTP.

Мой знакомый получил двоичный файл под GPL с предложением поставки исходного текста и сделал для меня копию. Могу я воспользоваться предложением, чтобы получить исходный текст? (#RedistributedBinariesGetSource)

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

Могу я разместить двоичные файлы на своем сервере в Интернете, а исходные тексты — на другом сайте? (#SourceAndBinaryOnDifferentSites)

Да. Это разрешено пунктом 6d. Однако вы должны предоставить ясные указания, по которым люди могли бы получить исходный текст, и вы должны позаботиться о том, чтобы гарантировать, что исходный текст будет оставаться доступным столько же времени, сколько вы будете распространять объектный код.

Я хочу распространять расширенную версию программы под GPL в двоичной форме. Достаточно ли распространять исходный текст исходной версии? (#DistributeExtendedBinary)

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

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

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

Я хочу распространять двоичные файлы, но распространение полного исходного текста неудобно. Будет ли достаточно, если я с двоичными файлами буду передавать пользователям точные описания отличий от “стандартной” версии? (#DistributingSourceIsInconvenient)

В таком желании нет ничего плохого, но этот метод предоставления исходных текстов в действительности не выполняет своих задач.

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

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

Могу я предоставлять доступ к двоичным файлам на сервере в сети, но высылать исходные тексты только тем, кто их закажет? (#AnonFTPAndSendSources)

Если вы предоставляете доступ к объектному коду на сервере в сети, то вы должны предоставить на сервере в сети также “соответствующий исходный текст”. Проще всего это сделать, публикуя их на одном и том же сервере, но если хотите, можете вместо этого предоставить указания для получения исходного текста с другого сервера или даже из системы управления версиями. Но независимо от того, что вы сделаете, исходный текст должен быть точно так же легко доступен, как объектный код. Все это описано в пункте 6d версии 3 GPL.

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

Как мне гарантировать, что каждый пользователь, получающий по сети двоичные файлы, получает также исходный текст? (#HowCanIMakeSureEachDownloadGetsSource)

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

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

Требует ли GPL, чтобы я предоставлял исходный текст, который можно скомпилировать так, чтобы контрольная сумма совпадала с контрольной суммой двоичного файла, который я распространяю? (#MustSourceBuildToMatchExactHashOfBinary)

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

Фирма исполняет на сайте модифицированную версию программы под GPL. Сказано ли в GPL, что они должны выпустить свои модифицированные исходные тексты? (#UnreleasedMods)

GPL разрешает всем делать модифицированные версии и применять их безо всякой передачи другим. То, что делает эта фирма — особый случай таких действий. Следовательно, фирма не обязана выпускать модифицированные исходные тексты. Другое дело, когда модифицированная программа лицензируется на условиях GNU GPL Афферо.

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

Фирма исполняет на сайте модифицированную версию программы под GNU GPL Афферо (AGPL). Сказано ли в AGPL, что они должны выпустить свои модифицированные исходные тексты? (#UnreleasedModsAGPL)

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

Является ли размножение и применение многих копий внутри одной организации или предприятия “распространением”? (#InternalDistribution)

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

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

Если кто-нибудь украдет компакт-диск с версией программы под GPL, дает ли GPL похитителю право распространять эту версию дальше? (#StolenCopy)

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

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

Что, если предприятие передает мне копию работы каких-то других разработчиков, распространяемой под GPL, как коммерческую тайну? (#TradeSecretRelease)

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

Что, если предприятие передает копию своей собственной работы, распространяемой под GPL, как коммерческую тайну? (#TradeSecretRelease)

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

Почему некоторые библиотеки GNU выпускаются по обычной GPL, а не по Меньшей GPL? (#WhySomeGPLAndNotLGPL)

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

Иногда местное отступление стратегически выгодно. Иногда применение LGPL для библиотеки могло бы привести к более широкому применению этой библиотеки и, таким образом, большему числу улучшений в ней, более широкой поддержке свободных программ и так далее. Это могло бы быть полезно для свободных программ, если это происходит в широких масштабах. Но насколько они будут широки? Можно только гадать.

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

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

Почему в программах должно быть сказано “версия 3 GPL или любая более поздняя версия”? (#VersionThreeOrLater)

Время от времени, с интервалом в несколько лет, мы вносим изменения в GPL — иногда для пояснения ее, иногда для разрешения определенного рода применений, ранее не разрешенных, а иногда для усиления требований. (Два последних изменения были в 2007 и 1991 годах.) Применение этого “косвенного указателя” в каждой программе делает возможным для нас изменять условия распространения всего собрания программ GNU, когда мы обновляем GPL.

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

Предположим, в программе сказано “версия 3 GPL или любая более поздняя версия”, и выпускается новая версия GPL. Если новая версия GPL дает дополнительное разрешение, это разрешение будет немедленно доступно всем пользователям программы. Но если в новой версии GPL есть более жесткое требование, оно не ограничит применение текущей версии программы, потому что ее по-прежнему можно будет использовать на условиях версии 3 GPL. Когда в программе сказано “версия 3 GPL или любая более поздняя версия”, пользователям всегда будет разрешено применять программу и даже изменять ее в соответствии с требованиями версии 3 GPL — даже после того, как станут доступны более поздние версии.

Если применительно к существующим программам более жесткое требование в новой версии GPL соблюдать не обязательно, то какая от этого польза? Как только станет доступной версия 4 GPL, разработчики большинства программ под GPL выпустят очередные версии своих программ с указанием “версия 4 GPL или любая более поздняя версия”. Тогда пользователям придется следовать более жестким требованиям версии 4 GPL в отношении к последующим версиям программы.

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

Что вы думаете о применении формулировки, в которой говорится, что определенная программа может быть использована только по самой поздней версии GNU GPL? (#OnlyLatestVersion)

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

Предположим, в 2000 году программа была выпущена по “самой поздней версии GPL”. В то время люди, возможно, использовали ее по GPLv2. В тот день 2007 года, когда мы опубликовали GPLv3, всех вынудили бы вдруг использовать ее вместо этого по GPLv3.

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

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

Почему вы не применяете GPL для руководств? (#WhyNotGPLForManuals)

Для руководства GPL применять можно, но Лицензия свободной документации GNU (GFDL) для них гораздо лучше.

GPL была составлена для программ; она содержит множество сложных пунктов, которые жизненно важны для программ, но были бы обременительны и не нужны для книги или руководства. Например, каждый публикующий книгу или статью должен был бы либо поставлять “исходный текст” книги на машинном носителе с каждой типографской копией, либо предоставлять письменное предложение выслать “исходный текст” позднее.

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

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

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

Как GPL сочетается со шрифтами? (#FontException)

Лицензирование шрифтов — сложный вопрос, который требует серьезного рассмотрения. Мы приводим экспериментальное, но одобренное для общего применения лицензионное исключение. Мы будем рады предложениям на эту тему — пожалуйста, прочтите этот разъяснительный очерк и напишите по адресу: [email protected].

Чтобы использовать это исключение, добавьте этот текст к замечанию о лицензии в каждый файл пакета (по возможности) в конце текста, где говорится о том, что файл распространяется по GNU GPL:

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

Я пишу систему поддержки сайта (называемую некоторыми “системой управления контентом”) или какое-то другое приложение, создающее страницы для сайта из шаблонов. Какую лицензию мне использовать для этих шаблонов? (#WMS)

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

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

Схема описанного выше

Вот исключение для программ на JavaScript, которое это делает:

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

Могу я выпустить программу, которую я разработал с помощью несвободных средств, под GPL? (#NonFreeTools)

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

Однако если вы подключаете к исходным текстам несвободные библиотеки, это было бы проблемой, которую необходимо решить. Это не исключает выпуска исходного текста под GPL, но если библиотеки не попадают под исключение “системных библиотек”, вам нужно добавить явное примечание с разрешением подключать их к вашей программе. Подробнее о том, как это сделать — в нашем ответе на вопрос о применении несовместимых с GPL библиотек.

Существуют ли переводы GPL на другие языки? (#GPLTranslations)

Было бы полезно иметь тексты GPL не только на английском языке. Переводы даже делали и присылали нам. Но мы не осмелились одобрить их как официально действительные. Это сопряжено с риском, настолько большим, что мы не берем на себя смелость принять его.

Юридический документ в некотором смысле подобен программе. Перевод его сходен с переводом программы с одного языка и операционной системы на другой. Это может делать только юрист, компетентный в обоих языках — и даже тогда есть опасность внесения ошибки.

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

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

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

Таким образом, в настоящее время мы не объявляем переводов GPL глобально действительными и обязывающими. Вместо этого мы делаем две вещи:

  • Отсылаем людей к неофициальным переводам. Это значит, что мы разрешаем делать переводы GPL, но мы не объявляем их юридически действительными и обязывающими.

    Такой перевод не имеет юридической силы, и это должно быть в нем явно сказано. Он должен быть помечен таким образом:

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

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

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

  • Публикация переводов, действительных только в одной стране.

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

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

Если лицензия интерпретатора языка программирования несовместима с GPL, могу ли я выполнять на нем программы под GPL? (#InterpreterIncompat)

Когда интерпретатор только интерпретирует язык, ответ положителен. Для интерпретатора интерпретируемая программа — это просто данные; GPL не ограничивает того, какими средствами вы обрабатываете программу.

Однако когда интерпретатор расширяется, чтобы предоставить “привязки” к другим средствам (часто, но не обязательно, это библиотеки), то интерпретируемая программа фактически связывается со средствами, которыми она пользуется с помощью этих привязок. JNI (Java Native Interface) — пример такого средства; библиотеки, доступ к которым осуществляется таким образом, динамически связываются с программами на Java, которые вызывают их процедуры.

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

  1. Если вы пишете программу и выпускаете ее под GPL, вы можете сформулировать явное исключение, дающее разрешение соединять ее с этими несовместимыми с GPL средствами.
  2. Если вы написали и выпустили программу по GPL, и вы составили ее специально для работы с этими средствами, люди могут принять это как неявное исключение, разрешающее им связывать программу с этими средствами. Но если ваше намерение таково, лучше выразить это явно.
  3. Вы не можете ни взять программы кого-то другого, выпущенные под GPL, ни добавлять к ним такие исключения. Исключение могут добавить только правообладатели этих программ.
Кто вправе требовать соблюдения GPL? (#WhoHasThePower)

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

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

Если в таком объектно-ориентированном языке, как Java, я использую класс под GPL без изменений и образую из него подкласс, каким образом GPL влияет на более крупную программу? (#OOPLang)

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

Если я переношу свою программу на GNU/Linux, значит ли это, что мне необходимо выпустить ее как свободную программу под GPL или другой лицензией свободных программ? (#PortProgramToGPL)

Вообще говоря, нет — это не является юридическим требованием. В конкретном случае это зависит от того, какими библиотеками вы хотите пользоваться и каковы их лицензии. Большинство системных библиотек используют либо Меньшую GPL, либо GNU GPL с исключением, разрешающим соединение библиотеки с чем угодно. Эти библиотеки можно применять в несвободных программах; но в случае с Меньшей GPL некоторые требования в лицензии есть, и вы должны им следовать.

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

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

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

Мне только что стало известно, что у одной компании есть копия программы под GPL, и чтобы получить ее, нужно платить деньги. Не нарушают ли они GPL, не делая ее доступной по Интернету? (#CompanyGPLCostsMoney)

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

Что GPL требует — это чтобы у него была свобода передать копию вам если он этого пожелает. Как только правообладатель копию программы кому-то передал, этот кто-то может передавать программу вам или кому бы то ни было еще, как только он сочтет нужным.

Могу я выпускать программу под лицензией, в которой сказано, что ее измененные версии распространять под GPL можно, а саму первоначальную версию — нельзя? (#ReleaseNotOriginal)

Нет. Такая лицензия противоречила бы самой себе. Давайте посмотрим, какие последствия это имело бы для меня как пользователя.

Предположим, что я начинаю с первоначальной версии (назовем ее версией А), добавляю некоторый текст (представим себе, что это 1000 строк) и выпускаю измененную версию (назовем ее Б) под GPL. В GPL сказано, что всякий может изменить версию Б и выпустить результат под GPL. Итак, я (или кто-то другой) может удалить эти 1000 строк, получив версию В, текст которой в точности совпадает с текстом версии А, но которая распространяется по GPL.

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

Является ли распространением передача копии в контролируемое дочернее предприятие? (#DistributeSubsidiary)

Является ли “распространением” передача копии в такое дочернее предприятие или из него — вопрос, который в каждом случае следует решать в рамках авторского права соответствующей юрисдикции. GPL не отменяет и не может отменять местных законов. Позиция авторского права США на этот счет не вполне ясна, но фактически это не считается распространением.

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

Можно ли в программе установки просить людей нажать кнопку в знак согласия с GPL? Если я получаю какую-то программу по GPL, требуется ли от меня соглашаться с чем бы то ни было? (#ClickThrough)

В некоторых системах пакетирования программ есть место, где от вас требуют нажать на кнопку или каким-то другим образом изъявить согласие с условиями GPL. Это не требуется, но и не запрещено. И с нажатием, и без него правила GPL остаются одними и теми же.

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

Мне хотелось бы объединить программу под GPL с некоторого рода программой установки. Должна ли у этой программы установки быть лицензия, совместимая с GPL? (#GPLCompatInstaller)

Нет. Программа установки и файлы, которые она устанавливает — это раздельные работы. Поэтому условия GPL не распространяются на программу установки.

Некоторые поставщики программ под GPL требуют от меня в их универсальных лицензионных соглашениях или в процессе получения по сети “подтвердить и гарантировать”, что я нахожусь в США или что я собираюсь распространять программы, не нарушая соответствующих законов по контролю экспорта. Зачем они это делают и не является ли это нарушением их обязанностей по GPL? (#ExportWarranties)

Это не является нарушением GPL. Эти поставщики (почти все они — коммерческие предприятия, торгующие дистрибутивами свободных программ и связанными с ними услугами) пытаются устранить возможные юридические опасности, грозящие им самим, а не контролировать ваше поведение. По законам о контроле экспорта в США они могли бы быть привлечены к ответственности, если они сознательно экспортируют программы в определенные страны или если они передают программы другой стороне, зная, что та будет заниматься таким экспортом. Запрашивая такие заявления от своих клиентов и всех тех, кому они поставляют программы, они защищаются на случай, если впоследствии контролирующие органы спросят их, что они знали о том, куда в конечном счете попадут программы, которые они распространяют. Они не ограничивают того, что вы можете делать с программами, а только снимают с себя ответственность за все, что вы делаете. Поскольку они не налагают дополнительных ограничений на программы, они не нарушают раздела 10 GPLv3 или раздела 6 GPLv2.

ФСПО выступает против применения законов США о контроле экспорта к свободным программам. Такие законы не только несовместимы с общей целью свободы программного обеспечения — они не служат никаким разумным государственным интересам, потому что свободные программы в настоящее время доступны и всегда должны быть доступны по разным каналам почти в каждой стране, включая страны, в которых нет законов о контроле экспорта и которые не участвуют в экономических эмбарго под руководством США. Таким образом, законы США о контроле экспорта в действительности ни в какой стране не лишают государство свободных программ, и граждане никакого страны не должны лишаться свободных программ независимо от политики их правительства (во всяком случае, в той мере, в какой это зависит от нас). Копии всех программ, распространяемых по GPL, опубликованных ФСПО, можно получить от нас безо всякой отчетности о том, где вы живете или что вы собираетесь делать. В то же время ФСПО понимает желание коммерческих поставщиков, находящихся в США, соответствовать законам США. Они вправе выбирать, кому они передают конкретные копии свободных программ; осуществление этого права не нарушает GPL, если они не добавляют договорных ограничений сверх того, что разрешает GPL.

Могу я использовать программы под GPL в устройстве, которое перестанет работать, если клиенты не будут вносить периодические платежи? (#SubscriptionFee)

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

Как мне обновить (L)GPLv2 до (L)GPLv3? (#v3HowToUpgrade)

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

Во-вторых, замените все свои существующие замечания о версии 2 лицензии (обычно — в начале каждого файла) на новый рекомендованный текст, доступный в руководстве по лицензиям GNU. Оно менее подвержено будущим изменениям, поскольку не содержит больше почтового адреса ФСПО.

Разумеется, любой текст с описанием (такой, как в файле README), в котором говорится о лицензии пакета, следует тоже обновить соответствующим образом.

Как GPLv3 облегчает распространение с помощью BitTorrent? (#BitTorrent)

Поскольку GPLv2 была написана до того, как распространение программ по одноранговым протоколам стало обычным, то соблюсти ее требования, когда вы обмениваетесь программами таким образом, трудно. Лучшим способом гарантировать, что вы удовлетворяете требованиям, когда распространяете объектный код под GPLv2 с помощью BitTorrent, было бы включать соответствующий исходный текст в тот же самый поток, что чересчур невыгодно.

GPLv3 решает эту проблему двумя способами. Во-первых, люди, принимающие этот поток и пересылающие в ходе этого процесса данные другим, не обязаны что-либо делать. Это следует из раздела 9, в котором сказано: “Вспомогательное перемещение лицензированной работы, происходящее исключительно вследствие пользования одноранговой системой передачи для получения копии подобным же образом не требует согласия [с лицензией]” [1].

Во-вторых, раздел 6e GPLv3 составлен так, чтобы дать распространителям — людям, которые организуют потоки — простой и ясный способ предоставить исходный текст, указав получателям, где его можно получить на общедоступном сетевом сервере. Это гарантирует, что каждый, кто хочет получить исходный текст, может это сделать, и не представляет почти никаких затруднений для распространителя.

Что такое тивоизация? Как GPLv3 ее предотвращает? (#Tivoization)

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

Когда люди распространяют “пользовательские продукты”, которые содержат программы под GPLv3, раздел 6 требует, чтобы они предоставили вам сведения, необходимые для изменения этих программ. “Пользовательский продукт“ — это термин, специально определяемый в лицензии; примером “пользовательских продуктов” могут служить портативные проигрыватели музыки, цифровые устройства видеозаписи, а также домашние системы безопасности.

Запрещает ли GPLv3 цифровое управление ограничениями? (#DRMProhibited)

Нет, не запрещает; вы можете использовать исходные тексты, выпущенные под GPLv3, для какого вам угодно рода цифрового управления ограничениями. Однако если вы делаете это, то в соответствии с разделом 3 система не может считаться техническим средством “защиты” авторских прав. Это значит, что если кто-то взломает цифровое управление ограничениями, то он тоже будет вправе распространять свои программы без препятствий со стороны Акта об авторском праве цифрового тысячелетия и тому подобных законов.

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

Могу я воспользоваться GPL как лицензией для аппаратуры? (#GPLHardware)

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

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

Я пользуюсь шифрованием с открытым ключом для того, чтобы подписывать свои программы и гарантировать их подлинность. Верно ли, что GPLv3 заставляет меня передавать свои закрытые ключи для подписей? (#GiveUpKeys)

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

Требует ли GPLv3, чтобы у избирателей была возможность изменять программы, выполняющиеся на устройствах для голосования? (#v3VotingMachine)

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

Обратите внимание, однако, что голосование — очень специфический случай. Одно то, что программы на компьютере свободны, не означает, что вы можете доверять компьютеру при голосовании. Мы убеждены, что вычислительной технике нельзя доверять голосование. Голосование должно проводиться на бумаге.

Есть ли в GPLv3 “параграф о защите от патентных исков”? (#v3PatentRetaliation)

Фактически есть. Раздел 10 запрещает тому, кто передает программы, преследовать других лицензиатов за нарушение патентов. Если бы кто-то все-таки сделал это, в разделе 8 объясняется, что они теряют свою лицензию и все лицензии на патенты, сопровождающие ее.

Можно мне пользоваться отрывками исходных текстов под GPL в документации, которая лицензирована несовместимым с GPL образом? (#SourceCodeInDocumentation)

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

В начале раздела 6 GPLv3 сказано, что я могу передавать произведение, на которое распространяется лицензия, в виде объектного кода “на условиях разделов 4 и 5” в случае, если я также удовлетворяю требованиям раздела 6. Что это значит? (#v3Under4and5)

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

Моя компания владеет множеством патентов. Долгие годы мы добавляли тексты в проекты под “GPL версии 2 или любой более поздней версии”, и сам проект распространялся на тех же самых условиях. Если пользователь решит взять программы проекта (с моим вкладом) на условиях GPLv3, значит ли это, что мной этому пользователю автоматически предоставлена содержащаяся в GPLv3 явная патентная лицензия? (#v2OrLaterPatentLicense)

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

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

Если я распространяю несвободную программу, которая компонуется с библиотекой под LGPLv3, в которую мной внесены изменения, что является “версией стороннего разработчика” при определении границ явной лицензии на патенты, которую я предоставляю — распространяется ли она только на библиотеку или на всю комбинацию? (#LGPLv3ContributorVersion)

“Версией стороннего разработчика” является только ваша версия библиотеки.

Совместима ли GPLv3 с GPLv2? (#v2v3Compatibility)

Нет. Между весиями 2 и 3 многие требования изменились, это значит, что точные требования GPLv2 не представлены в GPLv3 и наоборот. Например, условия о прекращении действия лицензии GPLv3 существенно менее жестки, чем требования GPLv2, таким образом, они отличаются от условий о прекращении действия GPLv2.

Из-за этих различий две лицензии несовместимы: если бы вы попытались комбинировать тексты программ, выпущенных под GPLv2 с программами под GPLv3, вы нарушили бы раздел 6 GPLv2.

Однако если программы выпускаются под GPL “версии 2 или более поздней”, это совместимо с GPLv3, потому что GPLv3 — одна из допустимых в этом случае возможностей.

Есть ли в GPLv2 требование о предоставлении информации об установке?(#InstInfo)

GPLv3 явным образом требует включать при перераспространении полную необходимую “информацию об установке”. В GPLv2 это выражение не используется, но лицензия требует включать при перераспространении “программы, используемые для управления компиляцией и установкой исполняемого файла” вместе с полным и сответствующим исходным текстом. Это представляет часть, но не все из того, что в GPLv3 называется “информацией об установке”. Таким образом, требования GPLv3 об информации об установке сильнее.

Что значит “устранить” нарушение GPLv3? (#Cure)

Устранить нарушение значит привести свою практику в соответствие с требованиями лицензии.

Кажется, отказ от гарантий и ответственности в GPLv3 составлен с учетом законов США. Можно мне добавить свой собственный отказ в отношении своих программ? (#v3InternationalDisclaimers)

Да. В разделе 7 вам дается разрешение добавить свой собственный отказ, а именно, в пункте 7(a).

У моей программы есть интерактивные пользовательские интерфейсы невизуальной природы. Как мне удовлетворить требованию GPLv3 о “соответствующих юридических замечаниях”? (#NonvisualLegalNotices)

Все, что от вас требуется — это гарантировать, что “соответствующие юридические замечания” легко доступны тому, кто пользуется вашим интерфейсом. Например, если вы написали звуковой интерфейс, вы могли бы добавить команду, которая читает замечания вслух.

Если я даю копию программы под GPLv3 сотруднику в своей компании, осуществляю ли я “передачу” этой копии? (#v3CoworkerConveying)

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

Если я распространяю программу под GPL, можно мне предоставлять гарантию, недействительную в случае, если пользователь изменяет программу? (#v3ConditionalWarranty)

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

Почему вы решили написать GNU GPLv3 Афферо как отдельную лицензию? (#SeparateAffero)

Первые редакции GPLv3 позволяли добавлять требование к публикации исходного текста, сходное с Афферо, в разделе 7. Однако некоторые компании, которые разрабатывают и полагаются на свободные программы, считают это требование слишком обременительным. Они хотят избегать исходных текстов с этим требованием и выразили соображение об издержках учета, связанных с проверкой текстов на это дополнительное требование. Публикуя GNU GPLv2 Афферо как отдельную лицензию и указывая в ней и в GPLv3 возможность комбинации друг с другом, мы достигаем всех своих первоначальных целей, облегчая в то же время определение того, у каких программ есть требование публикации исходных текстов.

Почему для GPLv3 вы придумали новые термины “перемещать” и “передавать”? (#WhyPropagateAndConvey)

Термин “распространять”, использованный в GPLv2, был заимствован из авторского права США. За прошедшие годы мы узнали, что в некоторых юрисдикциях в авторском праве применяется то же слово, но в других значениях. Мы придумали эти новые термины, чтобы как можно яснее выразить наши намерения независимо от того, где толкуется лицензия. Ни в каком авторском праве мира они не используются, и мы даем их определения прямо в лицензии.

Мне хотелось бы лицензировать свои исходные тексты по GPL, но мне хотелось бы также пояснить, что их нельзя применять в военных или коммерческих целях. Могу я это сделать? (#NoMilitary)

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

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

Представляет ли собой “передача” в GPLv3 то же, что в GPLv2 подразумевается под “распространением”? (#ConveyVsDistribute)

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

В GPLv3 “предоставление в общий доступ” приводится как пример перемещения. Что это значит? Является ли такое предоставление формой передачи? (#v3MakingAvailable)

Один из примеров “предоставления в общий доступ” — размещение программы на общедоступном сервере в сети. После того, как вы это сделали, может пройти некоторое время, пока кто-нибудь на самом деле получит от вас программы — но поскольку это может произойти сразу же, то удовлетворить требованиям GPL вам нужно тоже сразу же. Стало быть, в наше определение передачи эта деятельность входит.

Поскольку в рамках GPLv3 распространение и предоставление в общий доступ — это формы перемещения, которые являются также передачей, не могли бы вы привести примеры перемещения, которое передачей не является? (#PropagationNotConveying)

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

Считается ли изменением предварительная компоновка исполняемого файла под GPL с различными библиотеками в системе для оптимизации его характеристик? (#Prelinking)

Нет. Предварительная компоновка является частью процесса компиляции; это не вносит и не снижает лицензионных требований по сравнению с требованиями к компиляции. Если вам вообще позволено компоновать программу с библиотеками, то для нее вполне можно делать и предварительную компоновку. Если вы распространяете предварительно скомпонованный объектный код, вам нужно следовать требованиям раздела 6.

Если кто-то установит программу под GPL на портативном компьютере, а затем одолжит этот компьютер знакомому без предоставления исходного текста программы, будет ли это нарушением GPL? (#LaptopLoan)

Нет. В юрисдикциях, где мы исследовали этот вопрос, такого рода заимствование не считается передачей. Требования GPL не связывают владельца компьютера.

Предположим, что две компании пытаются обойти требование предоставления сведений по установке таким образом: одна из них выпускает подписанные программы, а другая выпускает пользовательский продукт, который выполняет программы, подписанные первой компанией. Является ли это нарушением GPLv3? (#TwoPartyTivoization)

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

Удовлетворяю ли я требованиям GPLv3, если я предлагаю двоичные файлы на сервере FTP, а исходные тексты — в виде ссылки на репозиторий исходных текстов в системе контроля версий, например CVS или Subversion? (#SourceInCVS)

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

Может кто-нибудь, кто передает программы под GPLv3 в пользовательском продукте, применять удаленную аттестацию для предотвращения модификации этих программ пользователем? (#RemoteAttestation)

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

Что в GPLv3 означает выражение “правила и протоколы связи по сети”? (#RulesProtocols)

Это относится к правилам о количестве данных, которые вы можете пересылать по сети. Например, если ограничено количество запросов, которые вы каждый день можете послать на сервер, или размер файла, который вы можете послать куда-то; ваш доступ к этим материалам может быть прекращен, если вы превышаете эти пределы.

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

Поставщики, предоставляющие согласно GPLv3 сведения по установке, не обязаны предоставлять “услуги по поддержке” этого продукта. Какого рода “услуги по поддержке” вы имеете в виду? (#SupportService)

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

Что имеется ввиду, когда в GPLv3 и AGPLv3 говорится “несмотря на все другие условия этой лицензии”? (#v3Notwithstanding)

Это просто означает, что данные условия отменяют любые другие положения лицензии, которые им противоречат. Например, без этого текста некоторые могли бы утверждать, что вы не можете комбинировать части программ под GPLv3 с частями программ под AGPLv3, потому что дополнительные требования AGPL расценивались бы как “дальнейшие ограничения”, упоминаемые в разделе 7 GPLv3. Этот текст поясняет, что верно толкование, предусмотренное нами, и вы можете комбинировать такие программы.

Этот текст только разрешает противоречия между разными условиями лицензии. Когда между двумя условиями нет противоречия, вы должны соблюдать и то, и другое. Эти параграфы не дают вам права игнорировать всю остальную лицензию — они только вырезают очень ограниченные исключения.

По условиям AGPLv3, когда я изменяю программу, какой “соответствующий исходный текст” должна она предлагать согласно разделу 13? (#AGPLv3CorrespondingSource)

“Соответствующий исходный текст” определяется в лицензии в разделе 1, и вы должны предоставлять то, что там перечислено. Так, если ваша измененная версия зависит от библиотек под другими лицензиями, таких, как лицензия Expat или GPLv3, то “соответствующий исходный текст” должен содержать эти библиотеки (если они не являются “системными библиотеками”). Если вы изменили эти библиотеки, вы должны предоставить их исходный текст с вашими изменениями.

Последнее предложение первого абзаца раздела 13 добавлено только для того, чтобы подтвердить то, что для большинства людей само собой разумеется: несмотря на то, что комбинации с текстами под GPLv3 оговариваются особым исключением в разделе 13, “соответствующий исходный текст” включает в себя тексты, с которыми программа таким образом комбинируется. Это предложение не означает, что вы должны предоставить только исходный текст, на который распространяется GPLv3; оно означает, что такой исходный текст не исключается из определения “соответствующего исходного текста”.

Что в AGPLv3 считается “взаимодействующим с [программой] удаленно по компьютерной сети”? (#AGPLv3InteractingRemotely)

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

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

Как понятие, выражаемое в GPLv3 словом “вы”, соотносится с определением “юридического или другого лица” в версии 2.0 лицензии Apache? (#ApacheLegalEntity)

Они фактически идентичны. Определение “юридического или другого лица” в версии 2.0 лицензии Apache очень типично для разного рода юридических соглашений — настолько, что было бы очень удивительно, если бы суд не истолковал термин точно также при отсутствии явного определения. Мы полностью рассчитываем, что они будут поступать так же, когда они будут читать GPLv3 и обсуждать, кто является лицензиатом.

Что означает слово “данная программа” в GPLv3? Означает ли оно всякую программу, когда-либо выпущенную под GPLv3? (#v3TheProgram)

Выражение “данная программа” означает конкретную работу, лицензируемую по GPLv3 и получаемую конкретным лицензиатом от исходного лицензиара или распространителя. “Данная программа” — конкретное программное произведение, которое вы получили в данном акте лицензирования по GPLv3 при получении программы.

“Данная программа” не может означать “все работы, когда-либо лицензированные по GPLv3”; это толкование бессмысленно по ряду причин. Мы опубликовали анализ выражения “данная программа” для тех, кто хотел бы узнать об этом подробнее.

Чего требует от меня лицензия, если я только создаю копии программы под GPL и выполняю их без распространения или передачи их другим? (#NoDistributionRequirements)

Ничего. GPL не налагает никаких требований на эту деятельность.

Если некоторая клиентская сетевая программа выпускается под AGPLv3, должна ли она быть в состоянии предоставить исходный текст серверам, с которыми она взаимодействует? (#AGPLv3ServerAsUser)

AGPLv3 требует, чтобы программа предлагала исходный текст “всем пользователям, удаленно взаимодействующим с ней по компьютерной сети”. Не важно, называете ли вы программу “клиентом” или “сервером” — спрашивать нужно, разумно ли ожидать, что человек будет взаимодействовать с программой удаленно по сети.

Если программа управляет промежуточным сервером под AGPL, как мне организовать предложение исходного текста пользователям, взаимодействующим с этой программой? (#AGPLProxy)

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

В AGPL говорится, что вы должны делать предложение “всем пользователям”. Если вы знаете, что определенному пользователю уже показано предложение для данной версии программы, вам не обязательно повторять его для этого пользователя снова.

Насколько различные лицензии GNU совместимы друг с другом? (#AllCompatibility)

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

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

Когда мы говорим “заимствовать исходные тексты”, мы подразумеваем именно это: вы берете отрывок текста из одного источника, с изменениями или без них, и вставляете в свою собственную программу, создавая тем самым произведение, производное от первого отрывка текста. “Применять библиотеку” означает, что вы не копируете никакие исходные тексты прямо, а вместо этого взаимодействуете с ними с помощью компоновки, импорта или других обычных механизмов, которые связывают исходные тексты друг с другом, когда вы компилируете или выполняете программы.

Каждый раз, когда в матрице написано “GPLv3”, то же утверждение о совместимости верно и для AGPLv3.

Пропустить матрицу совместимости


Я хочу лицензировать свой текст по:
Только GPLv2 GPLv2 или более поздней GPLv3 или более поздней Только LGPLv2.1 LGPLv2.1 или более поздней LGPLv3 или более поздней
Я хочу скопировать текст под: Только GPLv2 Можно Можно [2] Нельзя Можно: комбинация распространяется только по GPLv2 [7] Можно: комбинация распространяется только по GPLv2 [7][2] Нельзя
GPLv2 или более поздней Можно [1] Можно Можно Можно: комбинация распространяется по GPLv2 или более поздней [7] Можно: комбинация распространяется по GPLv2 или более поздней [7] Можно: комбинация распространяется по GPLv3 [8]
GPLv3 Нельзя Можно: комбинация распространяется по GPLv3 [3] Можно Можно: комбинация распространяется по GPLv3 [7] Можно: комбинация распространяется по GPLv3 [7] Можно: комбинация распространяется по GPLv3 [8]
Только LGPLv2.1 Можно: распространяйте скопированный исходный текст по GPLv2 [7] Можно: распространяйте скопированный исходный текст по GPLv2 или более поздней [7] Можно: распространяйте скопированный исходный текст по GPLv3 или более поздней [7] Можно Можно [6] Можно: распространяйте скопированный исходный текст по GPLv3 [7][8]
LGPLv2.1 или более поздней Можно: распространяйте скопированный исходный текст по GPLv2 [7][1] Можно: распространяйте скопированный исходный текст по GPLv2 или более поздней [7] Можно: распространяйте исходный текст по GPLv3 или более поздней [7] Можно [5] Можно Можно
LGPLv3 Нельзя Можно: комбинация распространяется по GPLv3 [8][3] Можно: комбинация распространяется по GPLv3 [8] Можно: комбинация распространяется по GPLv3 [7][8] Можно: комбинация распространяется по LGPLv3 [4] Можно: комбинация распространяется по LGPLv3
Я хочу применять библиотеку под: Только GPLv2 Можно Можно [2] Нельзя Можно: комбинация распространяется только по GPLv2 [7] Можно: комбинация распространяется только по GPLv2 [7][2] Нельзя
GPLv2 или более поздней Можно [1] Можно Можно Можно: комбинация распространяется по GPLv2 или более поздней [7] Можно: комбинация распространяется по GPLv2 или более поздней [7] Можно: комбинация распространяется по GPLv3 [8]
GPLv3 Нельзя Можно: комбинация распространяется по GPLv3 [3] Можно Можно: комбинация распространяется по GPLv3 [7] Можно: комбинация распространяется по GPLv3 [7] Можно: комбинация распространяется по GPLv3 [8]
Только LGPLv2.1 Можно Можно Можно Можно Можно Можно
LGPLv2.1 или более поздней Можно Можно Можно Можно Можно Можно
LGPLv3 Нельзя Можно: комбинация распространяется по GPLv3 [9] Можно Можно Можно Можно

Пропустить примечания

1: В этом случае вы должны следовать требованиям GPLv2, когда встраиваете эти программы. Вы не можете пользоваться условиями более поздних версий GPL.

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

3: Если у вас есть возможность выпустить проект под GPLv2 или любой более поздней версией, вы можете решить выпускать его под GPLv3 или любой более поздней версией — и как только вы сделаете это, вы сможете включать в него исходные под GPLv3.

4: Если у вас есть возможность выпустить проект под LGPLv2.1 или любой более поздней версией, вы можете решить выпускать его под LGPLv3 или любой более поздней версией — и как только вы сделаете это, вы сможете включать в него исходные под LGPLv3.

5: В этом случае вы должны следовать требованиям LGPLv2.1, когда встраиваете эти программы. Вы не можете пользоваться условиями более поздних версий LGPL.

6: Если вы сделаете это, то поскольку проект содержит тексты, выпущенные только под LGPLv2.1, вы не сможете обновить лицензию проекта до LGPLv3 или более поздней.

7: LGPLv2.1 дает вам разрешение перевыпустить программы под любой версией GPL, начиная с GPLv2. Если в этом случае вы можете переключить тексты под LGPL на соответствующую версию GPL (как показано в таблице), то вы можете комбинировать программы.

8: LGPLv3 — это GPLv3 плюс дополнительные разрешения, которые вы в этом случае можете не учитывать.

9: Поскольку GPLv2 не допускает комбинаций с LGPLv3, в этом случае вы должны передавать проект на условиях GPLv3, потому что она допускает такую комбинацию.

Примечания переводчика

  1. “Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance”.