И обратно о лицензиях: 1. По мотивам RMS

Алексей Федорчук

Первым поводом для настоящей заметки послужило предостережение Ричарда Столлмена, высказанное им в статье The Javascript Trap. Суть его в двух словах следующая:

Некоторые web-приложения, написанные на свободных языках сценариев (например, на JavaScript), для ускорения загрузки сжимают код таким образом, что он становится не читаемым для пользователя. Таким образом, получается, что на основе свободного софта создаются в сущности проприетарные программы, так как предоставление читаемого исходного кода — непременное условие принадлежности к классу FOSS.

В качестве модельного примера приводится Google Docs — онлайновый сервис, выполняющий функции офисного пакета, то есть текстового процессора, электронной таблицы и презентационной программы, работающих без установки на локальную машину. Используя набор технологий AJAX, он в конечном счёте основывается на JavaScript (не только на нём, но в данном контексте это не существенно). То есть на свободном языке сценариев, исходники на котором по определению открыты и доступны. То есть сценарий Google Docs можно загрузить на локальную машину и работать с ним в своё удовольствие. Так в чём же проблема?

Оказывается, в том, что Google Docs — сценарий на JavaScript, исходный текст которого оптимизирован для максимального ускорения загрузки путём полного отсутствия комментариев, максимальной «разгрузки» от пробелов, сокращения имён методов до одного символа. В результате код оказывается не читаемым для пользователя и, следовательно, недоступным для изучения и модификации:

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

То есть, по мнению Столлмена, пользователю под видом свободного программного обеспечения подсовывается проприетарный софт, о чём он может и не подозревать: хотя в любом браузере имеется возможность отключения исполнения сценариев JavaScript, но функций различения скриптов с «нормальным» и «компактным» кодом не предусмотрено ни в одном. Так что пурист FOSS может и не подозревать, что он использует классово чуждый ему закрытый софт.

Впрочем, по мнению Столлмена, Google Docs — не единственная угроза целомудрию адепта FOSS. Более существенными ему представляются такие технологии, как Flash и Silverlight. Особенно последняя, так как она не только основана на проприетаных (и, следовательно, закрытых) кодеках, но и не предоставляет альтернативных способов их воспроизведения. Тогда как Flash, используя формат, до недавнего времени закрытый (а ныне его можно квалифицировать только как полуоткрытый), всё же допускает использование свободных заменителей фирменному Flash Player.

В качестве методов сохранения девственности FOSS-пользователей предлагаются следующие:

  • выработка критерия «отделения зёрен от плевел» — то есть «кошерного» кода Javascript от «трефного»;
  • переделка свободных браузеров таким образом, чтобы, во-первых, сообщать пользователю о степени «кошерности» кода web-приложений, а во-вторых, предоставлять ему возможность выбора между кодом «чистым» и «не чистым»;
  • истинно свободный код JavaScript в случае его «компактизации» должен внутри себя содержать ссылку на сайт с исходниками и документацией, и сопровождаться специально разработанной на этот случай лицензией.

Казалось бы, как говорил товарищ Саахов,

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

Так что с другой стороны, давайте посмотрим, так ли страшен чёрт вместе со всеми его малютками с точки зрения растления непорочных FOSS-душ?

Начнём с того, что с негодованием отметаем растлевающее влияние Flash и Silverlight: каждый пользователь свободного софта, скачивая соответствующие плагины с сайтов Adobe или Microsoft, не может не отдавать себе отчёта в том, что он имеет дело с заведомо проприетарными программами. Ибо в принудительном порядке знакомится с лицензией и соглашается с ней — по крайней мере для Adobe Flash скачивание без этого дальше не продвинется. Мифического FOSS-пользователя, невинного до незнания того, что существуют проприетарные программы, можно уподобить Адаму и Еве до их грехопадения.

В случае с Silverlight ситуация более чем ясна: для сохранения своих сердец в чистоте пуристы FOSS должны просто отказаться от его использования. Для Flash же всегда существует альтернатива — пользователь, вместо проприетарного Flash Player, может выбрать любой из числа свободных плейеров swf-формата, благо таковые, в виде gnash, klash (возможно, и других) имеются. То есть он ничем не отличается от пользователя, читающего, редактирующего и даже создающего документы в формате Word’а посредством OpenOffice.org.

Более того, наличествуют даже свободные средства для изготовления swf-роликов — SWFTools, Spalah и ещё несколько. Не знаю, насколько свободные Flash-ориентированные программы воспроизводят функциональность проприетарных прототипов — но чем только ни пожертвуешь ради сохранения непорочности?

Однако вернёмся к главному герою «Предупреждения Столлмана» — Google Docs с его «компактизированным» кодом JavaScript. Не будучи программистом, не могу судить, насколько такая компактизация делает код не читаемым для разработчика. Замечу только, что в принципе разработчику вольно оптимизировать свой код так, как ему видится наилучшим. А уж писать или не писать комментарии — это вообще его сугубо личное дело — вроде, никакая лицензия (кроме внтуренних побуждений) его к этому не обязывает. Что же до того самого пользователя, который постоянно фигурирует в статье Столлмана, то для него в большинстве случаев равно не читаем будет ни реальный, ни компактный код.

Далее, следует подчеркнуть, что в случае с Google Docs пользователь имеет дело не столько с программой самой по себе, сколько с сервисом: пользователю предоставляется не только (и даже не столько) средство для создания своих документов, но и обеспечивается их хранение на сервере, резервирование, доступ по сети, в том числе и защищённый.

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

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

Так что никакой практической пользы в «антирастлительных» мерах, предложенных Столлменом, я не вижу. С задачей различения свободного и проприетарного кода в web-приложениях рассматриваемого типа прекрасно справляются сами пользователи первого; и если они допускают для себя лично использование не вполне свободных плагинов и онлайновых сервисов — значит, оно им зачем-нибудь да нужно. Пользователей же второго этот вопрос нимало не волнует: они и так живут в проприетарном мире.

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

Ну и, наконец, про дополнительную лицензию и говорить нечего: их и так развелось столько, что в них запутались и пользователи, и разработчики.

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

И обратно о лицензиях: 1. По мотивам RMS: 1 комментарий

  1. Чудесным образом этот пост напомнил мне <a href=»http://sorex.livejournal.com/428595.html» rel=»nofollow»>другой и о другом</a>. :)
    По сути же — «заставь дурака богу молиться…». Ох уж эти пуристы и фанатики.

Обсуждение закрыто.