Код, который вы напишете для Navigator, возможно, будет применен в сервере Netscape.
Итак, исходные тексты браузера Netscape опубликованы. Готовы ли вы взять их на вооружение? Перед тем как браться за дело, необходимо изучить лицензионное соглашение и понять, какие права оно дает и какие обязанности накладывает.
Некоторое время назад программистскую общественность всколыхнуло известие о публикации исходных текстов Web-браузера Navigator. Этот неожиданный шаг компании Netscape дал аналитикам повод порассуждать о том, какую выгоду способна принести ей бесплатная раздача плодов трехлетнего труда высокопрофессиональной команды разработчиков. Фактически Netscape пошла по испытанному пути создателей бесплатного ПО, такого как Apache или Linux. Легальное использование исходных текстов браузера требует от разработчика выполнения открытой лицензии Netscape (Netscape Public License), и очень важно понимать, как действует эта лицензия, что она позволяет, а что нет.
Идею бесплатного ПО впервые всерьез выдвинул Ричард Столлмен, автор популярного редактора emacs для Unix и основатель Фонда бесплатного ПО (Free Software Foundation, FSF). Основное положение FSF состоит в том, что исходные тексты программ должны быть общедоступными, открытыми для изучения, совершенствования и распространения. Предполагается, что, поскольку большинство пользователей не являются программистами, компании могут брать плату за услуги по компиляции (получению исполняемых файлов), написанию документации, сопровождению, составлению пакетов из взаимосвязанных программ и т. д.
Лицензии на бесплатное ПО
Существует несколько различных лицензий на бесплатное ПО, в том числе генеральная открытая лицензия GNU (GNU General Public License, GNU GPL или просто GPL), лицензия BSD (BSD software license), профессиональная лицензия Apache; сейчас к ним добавились еще открытые лицензии Netscape и Mozilla.
Чаще всего применяется GPL, которая до вступления Netscape в ряды производителей бесплатных программ была наиболее юридически отточенной. В ней оговорено все, от правил распространения до защиты от нарушения патента. А наиболее заметная особенность этой лицензии, за которую ее прозвали "вирус авторского лева" (Copyleft Virus), состоит в требовании о присоединении GPL к любой программе, как-либо с нею соприкоснувшейся. Иначе говоря, "авторское лево" (copyleft; неологизм, образованный из copyright - "авторское право" - заменой компонента right - "правый" на left - "левый". - Прим. перев.) предоставляется на том условии, что разработчик, использовавший в своей программе фрагмент какого-либо исходного файла, на который распространяется GPL, обязан распространить GPL на программу в целом, т. е. предоставить доступ ко всему ее исходному коду любому, кто его запросит, - либо через электронные коммуникации, либо по цене копирования и пересылки.
Лицензия Apache, в противоположность GPL, накладывает меньше всего ограничений. Ее единственное существенное требование состоит в том, что всякий производный двоичный или исходный код должен содержать ссылку на Apache Group и что лицензия должна прилагаться и применяться ко всем производным разработкам. Кроме того, название Apache не разрешается использовать при продвижении и передаче других продуктов без письменного разрешения Apache Group.
Лицензия BSD - самая старая, уходящая корнями в эпоху становления Unix, - как и лицензия Apache, требует давать в производных разработках ссылку на Университет штата Калифорния в Беркли и прилагать лицензию ко всем производным программам (исходным и двоичным кодам). Кроме того, она оговаривает, что любая модификация исходного текста, распространяемого на условиях лицензии BSD, также должна распространяться на этих условиях. Попытку превратить ее в лицензию о предоставлении "авторского лева" не удалось довести до конца из-за ряда препятствий юридического характера; они связаны с полудюжиной различных владельцев Unix и принудительным разделением AT&T в 80-х годах. С программами, имеющими лицензию BSD, вас, возможно, подстерегает наибольшее число юридических ловушек.
Подход Netscape
Открытая лицензия Netscape (NPL) очень похожа на GPL. Исходные тексты программ, распространяемые Netscape на условиях NPL, разрешается использовать в любых программных проектах. При этом, используя исходные файлы Netscape в своем проекте, вы обязаны распространять на условиях NPL те фрагменты программы, которые являются разработкой Netscape, а также новые фрагменты, представляющие собой модификацию или развитие кода Netscape. В случае программы, не предназначенной для открытого распространения, требуется обеспечить доступ к ее тексту только пользователям внутри организации; это позволит компаниям разрабатывать на основе исходных текстов Netscape специальные программы для внутреннего пользования, не опасаясь, что придется раскрыть служебную информацию.
Но интереснее всего в NPL пункт, разрешающий Netscape использовать любые вклады в общедоступную базу исходных текстов в других своих продуктах, в том числе и в распространяемых по лицензии, условия которой будут отличаться от условий NPL (например, в серверах), без выплаты компенсации авторам изменений и без указания их имен. Тем самым в обмен на вклад в виде исходных текстов Navigator компания получит возможность привлечь таланты всего сообщества разработчиков бесплатного ПО к созданию собственных коммерческих продуктов. Этот пункт лицензии вызвал немало споров в дискуссионных группах, посвященных Netscape, и в результате компания подкорректировала свою лицензию и выпустила другой ее вариант - открытую лицензию Mozilla (Mozilla Public License, MPL).
Лицензия MPL аналогична NPL за исключением одного: она не дает никому особых прав в отношении кода, распространяемого на ее условиях. Netscape постаралась дать предельно четкие разъяснения по поводу того, в каком случае какая из двух лицензий применяется. Изначально все исходные тексты Navigator будут выпущены на условиях NPL, так что Netscape сможет переносить в свои серверы любые модификации, которые внесет в эти тексты сетевое сообщество, не публикуя тексты серверных программ. Однако на добавляемые к проекту Navigator новые файлы с самостоятельными (не основанными на разработках Netscape) исходными текстами может распространяться лицензия MPL, не дающая Netscape права использовать эти файлы в программах, текст которых не открыт. Открыть тексты всех своих программ Netscape не может из-за существующих лицензионных соглашений с другими компаниями.
Сумеет ли Netscape с помощью этой пары похожих, но чуть-чуть различных лицензий впрячь сетевое программистское сообщество в работу над своими коммерческими программами? Или разработчики быстро перейдут с NPL на MPL, и основы движения за бесплатное ПО в том виде, в каком его задумал Ричард Столлмен, не будут поколеблены? Столлмен, кстати, уже высказывался против NPL: "Она отрицает идею сотрудничества равных, на которой покоится наше сообщество. Мы можем использовать код Netscape только так, как того требует NPL, а Netscape сделанные нами изменения - как угодно".
И все же разумно предположить, что многие разработчики примут NPL. Вполне вероятно, что тот, кто хочет увидеть воплощение своих программистских идей и готов делиться плодами своего труда, поддержит Netscape даже и не на самых выгодных для него условиях. А если Netscape сумеет извлечь из общественной разработки Navigator что-то полезное для своих серверов, другие компании, возможно, последуют ее примеру, и тогда коммерческие программы, которыми мы пользуемся каждый день, будут становиться совершеннее за счет открытой разработки.
Питер Бирман - инженер по системному ПО в компании Apple Computer. E-mail: peter.bierman@ne-dev.com.
Где найти
- Проект GNU http://www.gnu.org
- Mozilla group http://www.mozilla.org
- Linux http://www.linux.org
- BSD http://www.freebsd.org
- Apache group http://www.apache.org
Различия между лицензиями на бесплатное ПО
Лицензия | Изменения в исходном коде должны быть общедоступными | Отсылка к первоначальным авторам обязательна | Файлы с модифицированным кодом должны наследовать лицензию | Авторы первоначального кода имеют право на любое использование производного |
Apache | - | + | - | - |
GNU GPL | + | - | + | - |
NPL | + | - | - | + |
MPL | + | - | - | - |
BSD | + | + | - | - |