Несвободный JavaScript?

Vladimir
Опубликовано в: Всё подряд

The JavaScript Trap

Цитата с Linux.org.ru (жирный шрифт мой):

Ричард Столлман принял решение о том, как браузеры должны отличать свободные и несвободные скрипты, и добавил в свою статью на GNU.org конвенцию о выпуске свободных программ на JavaScript. В свободных скриптах в комментариях отныне должна присутствовать директива @licstart@licend, содержащая текст лицензии, а браузеры должны отслеживать соответствие используемых скриптами лицензий разрешённым.

Оригинал творчества Столлмана (под названием The JavaScript Trap) лежит здесь.

In the free software community, the idea that non-free programs mistreat their users is familiar. Some of us refuse entirely to install proprietary software, and many others consider non-freedom a strike against the program. Many users are aware that this issue applies to the plug-ins that browsers offer to install, since they can be free or non-free.

Я ни разу в жизни не видел столь принципиального пользователя (кроме самого Столлмана), который вообще не ставит себе проприетарный софт, для которого всё проприетарное — это зло и т.п. Да, я за свободное программное обеспечение, но без фанатизма.

Browsers don’t normally tell you when they load JavaScript programs. Most browsers have a way to turn off JavaScript entirely, but none of them can check for JavaScript programs that are nontrivial and non-free. Even if you’re aware of this issue, it would take you considerable trouble to identify and then block those programs. However, even in the free software community most users are not aware of this issue; the browsers’ silence tends to conceal it.

Я соглашусь с тем, что где-то есть люди (помимо Столлмана), которые не оскверняют свой компьютер установкой проприетарного ПО, но зарезание всего несвободного отдаёт уже клиникой. Можно проявить принципиальность и не использовать сайты, которые не предоставляют свой исходный код (разве у свободного пользователя нет права знать, что гнусная проприетарщина делает с его личными данными?), отказаться заходить на сервера, которые обслуживаются проприетарным программным обеспечением, забанить все маршрутизаторы, использующие несвободные прошивки, но ведь это маразм!

JavaScript is not the only language web sites use for programs sent to the user.

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

“Only free programs transmitted to the user” must become part of the criterion for proper behavior by web sites.

Не раньше, чем открытое ПО по качеству не будет уступать “проприетарным поделиям”. Как ни странно, но деньги являются одним из лучших мотиваторов: за спасибо мало кто работает, ведь кушать-то хочется. Зато есть много любителей халявы (они громче всех орут, что софт должен быть свободным). Но если разработчик не получает вознаграждения за работу (пусть даже в виде пожертвований), то его энтузиазм пропадает и подводит пользователя вплотную к реализации его “свободы изучения работы программы и адаптации к своим нуждам”. В результате на примере ПО для Linux имеем кучу сырого, недоделанного софта.

Finally, we need to change free browsers to support freedom for users of pages with JavaScript. First of all, browsers should be able to tell the user about nontrivial non-free JavaScript programs, rather than running them.

Всё же интересно, если пользователь попадает на важный для него сайт, который использует несвободный JavaScript, что сделает среднестатистический пользователь: уйдёт с сайта или проигнорирует предупреждение? Или вообще отключит эту функциональность в браузере?

Browser users also need a convenient facility to specify JavaScript code to use instead of the JavaScript in a certain page.

Не понимаю, это всерьёз или шутка? Какому проценту пользователей это действительно нужно? Убедите разработчиков браузеров, что это действительно необходимо.

А если код, выдаваемый пользователю, генерируется серверным приложением? Например, вставляет nonce, которые используются для защиты от CSRF-атак? Или просто генерирует нечитаемый JavaScript по каким-либо данным? Например, динамически генерируемая форма и динамически генерируемый JavaScript, который может быть нетривиальным, используя определение Столлмана? Как такой код заменить пользовательским, да и нужно ли это в принципе?

Даже если на секунду представить, что Google откроет исходный код Google Docs (который, по словам Столлмана, занимает полмегабайта в сжатом виде), какой мазохист-пользователь будет его изменять? Понятно, что Столлману хочется, чтобы у пользователя были все четыре свободы, но на практике “Свобода изучения работы программы и адаптация ее к вашим нуждам” нужна небольшому проценту пользователей.

Оффтопик: эта свобода часто оказывается, как ни странно, врагом свободного программного обеспечения: с точки зрения разработчиков, если пользователю что-то не нравится, исходник в зубы и вперёд. Да, с программистами это иногда работает, а с простыми людьми — нет. В результате, когда на безобидный вопрос несколько раз нахамят и пошлют, то всё же проще купить лицензионный Windows. Ладно, это я отвлёкся.

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

Да даже представить себе трудно, как всякие фишеры будут рады, если браузеры смогут подменять JavaScript. На мой взгляд, реализация данной затеи откроет большую банку с червями, создав больше проблем, чем решив.

These features will make it possible for a JavaScript program included in a web page to be free in a real and practical sense. JavaScript will no longer be a particular obstacle to our freedom

RMS никто не сказал, а он не знает: несвободным может быть не только JavaScript, но ещё и CSS и HTML и куча всего (они вполне могут быть не free as in freedom). Тогда нужно требовать от браузера, чтобы он вырезал вообще весь несвободный контент.

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

Вот только вопрос: кто от этого выиграет? Пользователь? Позвольте усомниться.

Добавить в закладки
  • del.ici.ous
  • Digg
  • Furl
  • Google
  • Simpy
  • Spurl
  • Y! MyWeb
  • БобрДобр
  • Мистер Вонг
  • Yandex.Закладки
  • Текст 2.0
  • News2
  • AddScoop
  • RuSpace
  • RUmarkz
  • Memori
  • Google Bookmarks
  • Писали
  • СМИ 2
  • Моё Место
  • 100 Закладок
  • Ваау!
  • Technorati
  • RuCity
  • LinkStore
  • NewsLand
  • Lopas
  • Закладки - IN.UA
  • Connotea
  • Bibsonomy
  • Trucking Bookmarks
  • Communizm
  • UCA
  • Slashdot
  • Magnolia
  • Blogmarks
  • Current
  • Meneame
  • Oknotizie
  • Diigo
  • Funp
  • Hugg
  • Dealspl.us
  • N4G
  • Mister Wong
  • Faves
  • Yigg
  • Fresqui
  • Care2
  • Kirtsy
  • Sphinn
  • SaveThis.ru

Связанные записи

19
Май
2009

Комментарии к статье «Несвободный JavaScript?» (2)  »

  1. Артём Сапегин says:

    А ещё на сайтах часто используют несвободные фотографии, например :)

    Пользователь вообще не хочет (и не должен) знать, что такое JavaScript, CSS и прочая хрень. И уж тем более у него не должно возникать желания его заменять на что-то.

    • Vladimir says:

      А еще контент нагло копипастят, не оставляя ссылок.

      На мой взгляд, RMS решил лишний раз пропиариться. Либо это паранойя, прикрытая “заботой” о пользователях.

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

Подписаться на RSS-ленту комментариев к статье «Несвободный JavaScript?» Trackback URL: http://blog.sjinks.org.ua/uncategorized/560-the-javascript-trap/trackback/

Оставить комментарий к записи «Несвободный JavaScript?»

Вы можете использовать данные тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, Вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя