English [en]   français [fr]   italiano [it]   русский [ru]  

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

Совместимость лицензий и перелицензирование

Ричард Столмен

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

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

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

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

В целом либеральные неограничительные лицензии (измененная лицензия BSD, X11, Expat, Apache, Python и т.д.) совместимы друг с другом. Дело в том, что в них нет требований к другим текстам, которые добавляются к программе. Они даже допускают обращение всей программы (возможно, с изменениями) в несвободный программный продукт; таким образом, мы называем их “безвольными лицензиями”, потому что они не говорят “нет”, когда один пользователь пытается отказать в свободе другим.

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

Подобным же образом, либеральные лицензии обычно совместимы со всякой лицензией с авторским левом. В объединенной программе части, которые были под либеральными лицензиями, по-прежнему находятся под ними, но вся программа в целом несет лицензию с авторским левом. В одной либеральной лицензии, Apache 2.0, есть патентные пункты, несовместимые с GPL версии 2; поскольку я думаю, что такие пункты полезны, я сделал версию 3 GPL совместимой с ними.

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

Я по большей части устранил эту проблему, убедив декана, Гела Вериэна, организовать публикацию Калифорнийским университетом в Беркли “модифицированной лицензии BSD” (без пункта о рекламе) и перевыпуска программ BSD под этой лицензией. Сегодня первоначальная лицензия BSD (к счастью) практически не применяется, но мы до сих пор должны принимать меры, чтобы не говорить о (“единственной”) лицензии BSD.

В общем и целом, две разные лицензии с авторским левом неизбежно несовместимы, если совместимость не оговорена в них явным образом. Это не связано с ошибкой в деталях; это следствие принципов авторского лева. Суть авторского лева заключается в том, что “измененные и расширенные версии должны быть под той же самой лицензией”. Если в лицензии А сказано, что расширенные программы должны быть под лицензией А, а в лицензии Б сказано, что расширенные программы должны быть под лицензией Б, то это неустранимое разногласие; лицензия совмещенной программы должна быть лицензией А и она должна быть лицензией Б. Вот почему GPL версии 2 несовместима с GPL версии 3; избежать этого было невозможно. Точно так же условия CC BY-SA 4.0 были бы принципиально несовместимы с условиями CC BY-SA 3.0, и авторам не удалось бы этого избежать.

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

Подход ФСПО состоит в том, чтобы просить людей выпускать программы под “GNU GPL версии N или любой более поздней”. Это совместимо с версией N, а также N+1 (потому что версия N+1 предлагается как вариант). Когда вы объединяете программы под “GPL версии 3 или более поздней” с программами под “GPL версии 2 или более поздней”, лицензия объединенной программы является их пересечением, то есть “GPL версии 3 или более поздней”.

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

Другой подход состоит в том, чтобы в каждой версии лицензии явным образом допускать обновление до более поздних версий. Это-то и делает Creative Commons: например, в CC BY-SA версии 4.0 (текущей версии) любому пользователю явным образом разрешено обновляться до более поздних версий CC BY-SA, как только они появятся. Mozilla Foundation также пользуется этим подходом.

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

Прошло время, и я стал сомневаться в мудрости этого решения. Такие программы, как Linux, которые допускают только одну версию GNU GPL и отвергают обновления, на практике приводят к несовместимости.(***) Возможно, нам следует включить пункт об обновлении в GPL версии 4, если версия 4 нам когда-нибудь понадобится.

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

Явное разрешение перелицензировать — это не то же самое, что совместимость (хотя перелицензирование может сделать лицензию совместимой с лицензией другой программы), и оно не взаимно. Например, в CeCILL дается явное разрешение перелицензировать программы на GNU GPL, но GNU GPL не допускает перелицензирование на CeCILL. Таким образом, нельзя объединить эти две программы А и Б и распространять результат под CeCILL; это было бы нарушением GPL в отношении программы Б. Эту объединенную программу разрешено выпускать только под GPL соответствующих версий.

Подобным образом CC BY-SA 4.0 явно разрешает перелицензирование измененных версий на GNU GPL версии 3, но GPL версии 3 не допускает перелицензирования на CC BY-SA. Для программ это никогда не должно быть проблемой; по заявлению Creative Commons, его лицензии не предназначены для программ, для них предназначена GNU GPL. Но есть работы других видов, такие как чертежи аппаратуры и художественные вставки в играх,— в этих произведениях иногда появляются предпосылки объединять материал, выпущенный под CC BY-SA, с материалом, выпущенным под GNU GPL. Это можно сделать благодаря явному разрешению перелицензировать в CC BY-SA.

К сожалению, CC BY-SA 4.0 не разрешает перелицензировать на будущие версии GPL. Вам, когда вы перелицензируете материал под CC BY-SA 4.0 на GPL, надо указать себя в качестве посредника, определяющего версию лицензии, чтобы указать, разрешены ли будущие версии GPL для этого материала. Если когда-нибудь будет GPL версии 4 и Creative Commons решит позволить перелицензировать с CC BY-SA на GPL версии 4, вы как посредник сможете задним числом санкционировать GPL версии 4 для этого перелицензированного материала. (Вместо этого можно также попросить авторов этого материала непосредственно выдать разрешение.)

Обычная Стандартная общественная лицензия GNU и Стандартная общественная лицензия GNU Афферо (GNU AGPL) представляют две различных лицензии с авторским левом, так что они, естественно, несовместимы. Мы явным образом установили особого рода совместимость между ними: исходный текст под GNU GPL версии 3 можно включать в одну программу с другим исходным текстом, выпущенным под GNU GPL Афферо. Это разрешено, потому что в обеих лицензиях это оговаривается явным образом, и в результате получается произведение, на которое распространяется GNU GPL Афферо. Однако просто перелицензировать программы с GNU GPL (с “более поздними версиями“ или без них) на GNU AGPL и наоборот нельзя; ни одна из лицензий этого не допускает. Обратите также внимание, что GNU AGPL версии 3 не является “более поздней версией” обычной GNU GPL версии 2, потому что GNU AGPL и GNU GPL представляют два различных ряда лицензий.

Меньшая стандартная общественная лицензия GNU версии 3 в действительности представляет Стандартную общественную лицензию GNU версии 3 с некоторыми дополнительными разрешениями. В разделе 7 GPL версии 3 говорится, что дополнительные разрешения всегда можно удалить, тем самым вы получаете те же программы под обычной GNU GPL версии 3. Если программа допускает применение под GNU LGPL версии 2 или более поздней, ее можно перелицензировать на GPL версии 3 или более поздней; для каждой будущей GPL версии N (N > 3) мы будем делать LGPL версии N, состоящей из GPL версии N с дополнительными разрешениями.

Что касается GNU LGPL версии 2.1, то в ней явным образом разрешено перелицензирование на GNU GPL версии 2 или более поздней.

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

Наконец, что можно сказать о двойном лицензировании?(****) Двойная лицензия представляет дизъюнкцию: это значит, что программа предоставляет на выбор две или более различных лицензий. Например, старые версии Perl предоставляли две лицензии: дизъюнкцию Стандартной общественной лицензии GNU и Артистической лицензии. Это означало, что каждый пользователь мог выбрать и перераспространять Perl под той или другой лицензией, или под дизъюнкцией обеих, как и сам выпуск Perl. Дизъюнкция совместима с набором других лицензий, если хотя бы одна из лицензий в дизъюнкции совместима с этим набором.

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

Примечания

* Главная из применяемых в настоящее время лицензий, которая несовместима сама с собой — лицензия TeXа: если две программы лицензированы так, как TeX, нет разрешенного способа распространять их объединенную версию.

Лицензия TeXа допускает распространение модифицированной версии только в форме первоначальной версии с файлом различий. Если А и Б раздельно лицензированы таким образом, а затем объединяются, то распространение объединенной программы как А с файлом изменений нарушает лицензию Б. Распространение ее как Б с файлом изменений нарушает лицензию А. Распространение любым другим образом нарушает обе лицензии.

Не случайно TeX выпустили в 1982 году: с тех пор наше сообщество научилось писать разумные лицензии.

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

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

**** Некоторые необъяснимо употребляют выражение “двойное лицензирование” для обозначения продажи исключений, но это злоупотребление языком. См. Продажа исключений. Обратите внимание, что если лицензия, которая продается в качестве исключения, выдается на любые программы, не входящие в обычный свободный выпуск, то это не продажа исключений — это несвободные программы.

К НАЧАЛУ


[Эмблема ФСПО]“Наша задача — сохранение, защита и поддержка свободы использования, изучения, модификации, копирования и распространения компьютерных программ, а также защита прав пользователей свободных программ”.

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