Об общественной лицензии Netscape

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

Общественная лицензия Netscape, или NPL, в том виде, в каком она была окончательно написана в 1998 году, -- это свободная программная лицензия, но у нее есть три больших недостатка. Одно место несет плохую философскую идею, другое ставит сообщество свободного программного обеспечения в невыгодное положение, а третье создает большую практическую проблему внутри самого сообщества. Два из трех этих недостатков присущи также и общественной лицензии Mozilla. Из-за этих недостатков мы настоятельно советуем не использовать NPL или MPL в ваших свободных программах.

1. Не все пользователи равны

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

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

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

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

Практический эффект этого условия минимален из-за еще одного недостатка NPL: она не разработана в виде подробного copyleft. Другими словами, она не прикладывает больших усилий для гарантирования того, чтобы сделанные пользователями модификации были доступны как свободное программное обеспечение.

MPL (общественная лицензия Mozilla) не содержит этой проблемы. Это принципиальное различие между MPL и NPL.

2. Не copyleft

В NPL есть разновидность copyleft; она явно говорит, что все сделанные пользователями модификации должны быть выпущены под NPL. Но это применяется только к модификациям существующего кода -- не к добавленным подпрограммам, если они помещены в отдельные файлы. С практической позиции, это означает, что можно легко сделать закрытые изменения, если вы этого хотите: просто поместите большую часть вашего кода в отдельный файл и назовите совокупность Larger Work. Только добавленные к старым файлам вызовы подпрограмм должны быть выпущены под NPL, и они не будут полезны сами по себе.

Отсутствие настоящего copyleft -- не катастрофа; это не делает программное обеспечение несвободным. Например, условия распространения XFree86 вообще не пытаются применить copyleft, тем не менее XFree86 является свободным программным обеспечением. BSD -- это также свободное ПО без copyleft (хотя условия распространения BSD обладаютa серьезным недостатком и их не следует имитировать -- если вы хотите выпустить свободную программу без copyleft, используйте условия XFree86). Программное обеспечение под NPL также является свободным, но без применения copyleft, и само по себе это не делает NPL хуже других свободных лицензий без copyleft.

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

3. Несовместима с GPL

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

Такой конфликт возникает, потому что GPL серьезно относится к copyleft: она была разработана так, чтобы все изменения и расширения свободной программы гарантированно были свободными. Поэтому она не оставляет лазейки для создания закрытых изменений путем помещения их в отдельный файл. Чтобы закрыть эту возможность, GPL не разрешает связывание программы под copylefted с кодом, имеющим другие ограничения или условия -- такие как NPL.

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

Решение ее путем изменения GPL возможно, но это повлекло бы за собой отказ от copyleft, а из этого вышло бы больше вреда, чем пользы. Но проблему можно решить небольшим изменением в NPL. (О том, как именно это можно сделать, смотрите ниже.)

4. Замечание о названиях

NPL обозначает Netscape Public License, но GPL не значит GNU Public License. Полное название нашей лицензии -- GNU General Public License, или сокращенно, GNU GPL. Иногда люди опускают слово ``GNU'' и пишут просто GPL.

(Это не проблема, это просто факт, о котором вам стоит знать.)

Выводы

Поскольку проблема 3 наиболее серьезна, я надеюсь, что люди вежливо и рационально объяснят Netscape важность ее устранения. Варианты решения возможны; им нужно только решить использовать их.


Есть способ разрешить связывание кода под NPL и под GPL. Это можно сделать, добавив к NPL два таких абзаца:

A.1. You may distribute a Covered Work under the terms
     of the GNU General Public License, version 2 or
     newer, as published by the Free Software
     Foundation, when it is included in a Larger Work
     which is as a whole distributed under the terms
     of the same version of the GNU General Public
     License.

A.2. If you have received a copy of a Larger Work
     under the terms of a version or a choice of
     versions of the GNU General Public License, and
     you make modifications to some NPL-covered
     portions of this Larger Work, you have the option
     of altering these portions to say that their
     distribution terms are that version or that
     choice of versions of GNU General Public License.

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

Это разрешает выпускать модификации таких объединенных работ на условиях GNU GPL -- но проще всего будет выпускать их под NPL.

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

Однако, NPL дает разработчикам закрытого программного обеспечения простой способ сделать свои изменения полностью недоступными для Netscape -- поместив их в отдельные файлы и назвав комбинацию Larger Work. Фактически, для них это проще, чем A.2 для пользователей GPL.

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


© 1998, 1999 Free Software Foundation
Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.