Лицензионные пометы о JavaScript: Предпосылки и обоснование
Пользователи, просматривающие Всемирную паутину, в наши дни, как правило, выполняют огромные количества несвободных программ на своих компьютерах, нередко даже не зная об этом. Свободные программы успешно выполняют свою задачу на настольных компьютерах, частично благодаря защите авторским левом, которое гарантирует, что пользователям будут внятно говорить, когда конкретная программа предоставляет им свободу пользования, изучения, обмена и внесения изменений. Во Всемирной паутине браузеры получают и выполняют программу на JavaScript, даже не информируя пользователей ни о лицензии этой программы, ни об их свободах — или о том, как другие программы отказывают пользователям в свободе.
Для решения этой проблемы мы разработали программу LibreJS, которая распознает нетривиальные программы на JavaScript и проверяет их лицензию. Для работы программы нужно, чтобы лицензии были указаны так, что программа, у которой нет человеческого интеллекта, могла бы надежно это распознавать. Кроме того, все лицензии GNU для программ требуют от распространителей объявлять о лицензии программ, чтобы получатели знали свои права, и указывать, где найти исходный текст.
Простой способ указать лицензию — стилизованные комментарии в программах на JavaScript. Однако это может быть неудобно для минимизированных библиотечных файлов, так что мы разработали другой способ указать на их лицензии: лицензионные пометы о JavaScript.
Обоснование
Если условия лицензий свободных программ требуют, чтобы программа поставлялась с копией условий лицензии, а также доступом к исходному тексту, это почти всегда легко выполнить, когда программа распространяется по Всемирной паутине или другим каналам Интернета. Однако распространение программ на JavaScript, встроенных в сайты, осложняется двумя исключительными факторами: посетители обычно получают программы без явного запроса, а разработчики сайта могут доставить только единичный файл программы на JavaScript (так что они не могут, например, послать архивный файл, содержащий другие материалы, требуемые лицензией).
Сочетание этих проблем оставляет разработчикам сайтов мало очевидных способов предоставить дополнительный материал, требуемый лицензиями свободных программ. Простейшим решением было бы доставление программ на JavaScript только в виде исходных текстов, с полной копией лицензии в комментариях. Это было бы приемлемо на малых сайтах, но когда программы на JavaScript начинают представлять большой поток повторяющихся файлов, разработчики сайтов по понятным причинам не склонны выдавать так много данных. Наш метод дает им четкий адрес для доставки дополнительных лицензионных материалов, а посетителям — четкий адрес для их поиска, решая оба этих вопроса. Во-первых, он делает распространение программ видимым, предлагая “сведения о лицензиях программ на JavaScript” по ссылке. Указанная в ссылке страница предоставляет разработчикам сайта место, где они могут публиковать эти материалы; она достаточно заметна, но не мешает посетителям.
Возможность машинной обработки
Чтобы людям было легче блокировать несвободные программы на JavaScript в своих браузерах, наш метод достаточно детализирован, чтобы дополнительный модуль или другие программы могли найти таблицу сайта с лицензионными сведениями о программах на JavaScript, подтвердить, что на все эти программы распространяется известная свободная лицензия, получить исходный текст и подтвердить, что он соответствует оптимизированной программе на JavaScript, которая доставляется с сайта. Таким образом, посетители могут быстро и легко проверить, свободны эти программы или нет, и соответственно решить, хотят ли они выполнять их. LibreJS — дополнительный модуль для браузеров на основе Mozilla, помогающий пользователям избежать выполнения несвободных программ на JavaScript; в нем также будут реализованы эти проверки, чтобы усовершенствовать его характеристики.
Мы рассматривали применение другого формата, такого, как RDF, как основу для нашей системы, чтобы упростить эту задачу для программистов, дав им более подробные сведения в легко анализируемом формате. Однако нашей целью было сделать эти сведения доступными прежде всего для читателя-человека, а затем — для машины. Применение хорошо структурированного HTML позволило добиться оптимального соответствия этим приоритетам.
Дальнейшие шаги
Мы не говорим, что разработчики сайтов, предлагающие свободные программы на JavaScript, должны следовать этому конкретному методу, чтобы выполнить требования лицензий. Любая лицензия свободных программ ясно очерчивает свои собственные условия, и любой разработчик сайтов, желающий применять другой метод, чтобы удовлетворить этим условиям, вполне может это делать. Однако этот метод хорош тем, что он делает полные лицензионные сведения легко доступными для посетителей — проблема, которую до сих пор решить было нелегко — без ограничения возможности разработчиков сайта доставлять программы на JavaScript тем способом, который им представляется наилучшим.
Нам было бы крайне интересно услышать отзывы и предложения о других способах, которыми мы могли бы достигнуть тех же целей, делая в то же время систему более полезной для разработчиков сайта, его посетителей или специалистов, работающих над программами проверки лицензий. Если мы соберем достаточно предложений, чтобы опубликовать новый метод, значительно лучший, чем этот, мы его опубликуем. (Вот почему в этом методе применяется такой подробный идентификатор таблицы лицензионных сведений: чтобы дать программам возможность отличать этот метод от других, которые мы можем выстроить в будущем.) Если этот вопрос представляет для вас интерес, подпишитесь, пожалуйста, на список рассылки LibreJS и пошлите туда свои замечания и предложения. Мы с нетерпением ждем их от вас.