Richard M. Stallman、JavaScriptに吼える 90
ストーリー by hayakawa
自由を、この手に。 部門より
自由を、この手に。 部門より
あるAnonymous Coward 曰く、
GNUのページ内にある「Philosophy of the GNU Project」というコンテンツにて、Richard M. Stallmanが書いた「The Javascript Trap」という記事が公開されている。
この記事によると、JavaScriptには下記のような問題があるとのこと。
- JavaScriptは非フリーなプログラムを、ブラウザを通じて勝手に実行する可能性がある
- 一部のサイトはソースコードの難読化を行っているため、その真のソースコードを読むことはできない
- フリーソフトウェアとしてJavaScriptコードをリリースすることは可能だが、実行されているコードを(動的に)置き換えることはできない
「あるサイトで使われているJavaScriptに問題があった場合にそれを修正したり、また改良を行ったとしても、その修正版/改良版はそのサイトの管理者が採用してくれない限り利用できない。これは、自由を侵害するものだ」という主張のようだ。
なお、同記事のAppendixとして、JavaScriptコードをGPLで配布する方法が紹介されている。
The Javascript Trap? (スコア:3, おもしろおかしい)
勝手に実行 (スコア:2, すばらしい洞察)
JavaScriptは非フリーなプログラムを、ブラウザを通じて勝手に実行する可能性がある
実行に関してはフリーでしょうから実害はないと思うのですが。
イスラムやヒンドゥーの人が豚肉や牛肉を勝手に食べさせられて怒っているかのようだ、とか書くとフレームの元かな?
勝手に実行はフリーではない (スコア:3, すばらしい洞察)
さすがに勝手に実行する行為と、実行がフリーはまったく別の問題でしょう。
ユーザが認識していないソフトウェアが勝手に実行されるなら、自由に実行できるとは云えない。勝手にということは、他人の意思ということなのだから。もちろん、危険かもしれない。
(フリーは、無料だけでなく、自由って意味でもありますよ)
Re:勝手に実行はフリーではない (スコア:3, すばらしい洞察)
通常、それは不可能。ほとんどのユーザは。自動実行を禁止できることさえ知らないから。また、多くのサービスも利用できなくなってしまうから。
それにも関わらず、ユーザが目的としているサービスに関係のない動作をしていてもユーザが知ることはできない。
RMSがフリー云々というとき、それは別にマニアや専門家の環境を対象としてわけじゃないでしょ。
ブラウザの数々の設定を一般ユーザに理解、把握しろという方がムリな要求だし。
Re:勝手に実行はフリーではない (スコア:2)
それと、実行を禁止すれば良いっていうのは、単なる対処療法。暴走する車を出荷しておいて、ユーザに使わなければいいっていうようなもの。
Re:勝手に実行 (スコア:2, すばらしい洞察)
>> 実行に関してはフリーでしょうから実害はないと思うのですが。
「実害がない」なんて論理が御大に通じるわけないじゃないですか.
Re:勝手に実行 (スコア:2, おもしろおかしい)
Stallmanは,フリーなプログラムが勝手に実行されたら
じんましんでも出たり,悲鳴をあげたりするんですかねえ.
「ギャー!,難読化されたJavaScriptで書かれたプログラムが
勝手にワシのPCを荒らしやがった.うーっ,かゆいぜ!」
とか言ってみたり.
勝手に連想 (スコア:1)
「ギャー!難読化されたJavaScriptで書かれたプログラムが
勝手にワシのPCをナオンの楽園に接続し、神秘の宇宙の向こうから深淵の悪魔を導いたのだ!
これは某国による陰謀、すなわち情報操作なのジャヨー!! ギャワー!」
#絶対違う
ψアレゲな事を真面目にやることこそアレゲだと思う。
Re:勝手に実行 (スコア:1)
> StallmanのPCにフリーじゃないプログラムが入ってるわけないじゃない。
そりゃそうだろうけど,それは議論の的を外してますよ.
今そういうPCにインストールされているプログラムに限定した話なんて
してなくて,JavaScriptのようなサーバサイドに配置されていて,
アクセスするとローカルで実行されるプログラムも含めての話ですよ.
Re:勝手に実行 (スコア:1)
さすがにその点は自覚してるらしく、Campaign for Free BIOS (http://www.fsf.org/campaigns/free-bios.html [fsf.org])なんてのをやってたりする模様。
Re:勝手に実行 (スコア:1, 興味深い)
「実行に関しては…」というのは見当違いだと思いますが、
という喩えはうまいかも。どちらかというと
「普段の食事にも知らず知らずのうちに豚肉・牛肉が紛れ込んでいるから気をつけよう」
とか
「豚肉・牛肉の代替品を開発しよう」
と呼びかけている文書だと思いますよ。
あ、でも宗教と食肉の関係はよく知らないので間違っているかも。
JavaScriptを置き換えられる利点 (スコア:2, 参考になる)
はてなブックマークのコンテンツの JavaScript を高速化する - IT戦記 [hatena.ne.jp]
JavaScriptが動的生成(JSONPとかそういうの)でない場合は、これの開発時みたいにプロキシで置き換えれば一応自分の好きなように置き換えられると思う。
難読化とかJava、Flashなどでできていたら、こういうことはとても無理なので、
「弄り安いようにしておくべき」というのは、利便性の上で賛成。
Re:JavaScriptを置き換えられる利点 (スコア:1)
amachang さんのような有名人が書くと速攻で対処する (上の件じゃなかったかもしれませんけど)
あの会社の体質が非 GNU 的かな、と。
背景には (スコア:2)
きっと Lisp スクリプトを評価するブラウザを彼は望んでいるんですよ。
#Lispで書かれたウェブサーバもあるので、すでに存在するのかも。
自由の侵害 (スコア:1)
サイト管理者側にも修正版や改良版を採用する/しない自由があると思うのだけれど。
「それはオレの自由を侵害するから却下」なのか?
Re:自由の侵害 (スコア:2, 興味深い)
そうじゃないでしょ。それをクライアント側で持っておいて、
俺はそっちを使うぜ、みたいな機構がとれないのが問題だ、
と言ってるんでしょ。
プロトコルが決まってる普通のクライアント・サーバじゃなくて、
コードが勝手に飛んできて勝手に実行されるわけだから、
すっかり慣れちゃってるけど、あらためて考えると、
気持ち悪いっちゃ気持ち悪い。
Re:自由の侵害 (スコア:2, 参考になる)
サイト管理者が選んだプログラムが、クライアント側(エンドユーザ側)で動作するから問題なんでしょう。
JavaScriptを丸ごとoffにするのでない限り、特に何の許諾も求めず勝手にクライアントにインストールされて実行される。
RMSは、JavaScriptのみならず、Flash/ActionScriptやSilverlight、ひいてはJava AppletのようなApplet型の実行環境も、総じて許可なくプログラムを実行してしまうので問題だ、と言っているようです。
# 個人的には「どうでもいいじゃん」と思ってますが。
# 飽くまで、「free software以外絶対使わない!」っていう教条を遵守したい方たちにとってのみの問題かと。
Re:自由の侵害 (スコア:1, すばらしい洞察)
アパートや賃貸マンションの入居者が友達を呼んでパーティしているようなものでしょうか。
呼んだ人によっては真夜中まで大騒ぎすることもあります。
IEさんは勝手に部屋の又貸しして合鍵を渡すので困っています。
Re:自由の侵害 (スコア:1)
クライアント向け Windows でもグループポリシーで許可したアドイン以外使わせない、ファイルのダウンロードを許可しない (ファイルダウンロードのダイアログを出さない)、といったカスタマイズが可能ですし、サーバ向け Windows (Server 2008) なんかでは標準設定でファイルのダウンロードすら禁止になっていますよ。
あなたが言っている IE さんって、実は Firefox さんとか Safari さんって名前だったりしませんか?
# 問題のレポートと解決策で「ドライバをダウンロードしろ」とか、標準のままじゃドライバのダウンロードもできねーよ。
Re:自由の侵害 (スコア:2, 興味深い)
> サイト管理者側にも修正版や改良版を採用する/しない自由があると思うのだけれど。
もちろん。元のソースのライセンスでそれがOKであるか、サイト管理者自身がライセンスを持っていればそういう自由があるし、それを他人がどうこう出来るものでもない。
ストールマンがプロプライエタリなソフトを批判するのは彼の信条に基づくもので、いわばポジショントークなわけ。ライセンスの縛りを受けない限り (例えばGPLコードを利用する、などしない限り)、あなたがどんなコードをどう使おうが自由だし、ストールマンが強制的にその自由を奪うことは出来ない。だからあなたの自由な全く侵害されていない。
ストールマンには彼の理想とする社会像があるから、言論によってそっちの方向へ誘導しようとする。もしあなたがそれをよしとしないなら、あなたは反対意見を述べればいい。誰もあなたがそうすることを妨げない。これが言論の自由ね。
あなたがそうだ、というのではないんだけれど、GPLがらみの話になると、どうも批判されただけで「自由を侵害されているのではないか」という気分になる人がいるらしいので書いてみた。それぞれの立場の人間が、自分の立場を有利にするためにポジショントークをかますのは普通のことであって、それにいちいち感情的に反発してたんじゃ議論にならないよ。
Re:自由の侵害 (スコア:1)
サイト管理者が持っている (可能性がある) のはライセンスじゃなくて著作権じゃないのかと……。
大半の JavaScript のコードには、そもそも再利用どうこう以前にライセンスに関する記述がないと思います。というか Copyright の明示すらもないでしょ。
Re:自由の侵害 (スコア:2, 参考になる)
どこにぶらさげようかと思ったけど、とりあえずココで。
RMSの言う「自由」は、「ソフトウェアを提供する側」にとっての「自由」ではなくて、「ソフトウェアを利用する側」にとっての「自由」なので、そんなこと言ってもそもそもピントがずれてます。
何故RMSがそこに固執するかについては、RMSがフリーソフトウェア運動を始めたきっかけ(Gosling Emacsの件ね)を調べればわかるはずです。
Re:自由の侵害 (スコア:1)
Flash とか Silverlight とかのファイルって Excel のマクロ有効ブックとかとなんら差がない (つまりそれ自体は実行するアプリケーション/ソフトウェアではなく単なるデータファイルでしかない) と思うのですが、どの辺りに「ソフトウェアを利用する側」にとっての「自由」が影響するんでしょうね?
JavaScript の難読化とかも、正直「いや、このコーディングじゃ……」っていう C のコードとか言ってるのと大差ないようにしか思えないですし。むかーしの「BASIC じゃ遅いから実体は全部マシン語でコードは DATA 文にある 16 進数の中」とかいうコードとどれだけ差があるのかと。
# あんまり追及すると .exe も「そのプラットフォームに合わせたデータファイルだろう」とか言える気がするのですが。
JavaScriptに特有じゃない気が... (スコア:1)
いや、気持ちはなんとなく分る気がしますが
# 英語原文読みたいけど...時間なし
* JavaScriptは非フリーなプログラムを、ブラウザを通じて勝手に実行する可能性がある
これは実行するプログラムを自己管理できるか、ひいてはそれが自由なソフトウェアであ
るかってことでJavaScriptじゃなくても発生しうるかなーと
* 一部のサイトはソースコードの難読化を行っているため、その真のソースコードを読むことはできない
これもJavaScriptが主因ではないですよね。しいていえばスクリプト(非コンパイル)言語
の実行ファイル=ソースファイルが閲覧可能な箇所に置かれた場合かつそれが置いた人が
なるべく隠蔽したい場合に発生します。
コンパイルできると、そもそもバイナリ(というかなんというか)になるので、読めないひ
とにはトコトン読めない気がw
あと、プログラム言語ですから、がんばれば閲覧しやすくはできるはず。
# 限度がありましょうが...
* フリーソフトウェアとしてJavaScriptコードをリリースすることは可能だが、実行され
ているコードを(動的に)置き換えることはできない
これはまあ最初のに絡む点もありますが、放置サーバとかも同じようなもんじゃないかな?と
か...
# 危険なサービスサイト(JavaScriptのあるなしに関係なく)、は利用しちゃあかんよね。
これも最初のに関係し、あと自由なソフトウェアを維持している意味に関係するんだろう
なと思います
# そーいう意味でサーバサイドとGNUって相性わるいのかな?
自分でプログラムを動かす場合、まず動かすかどうかの決定権が自分にあり
ソフトが自由であると、安全なプログラムかの確認も、不具合の修正や改良
(とそれによるソフト技術の発展)がある、ってことかな。
翻ってサーバだと、自分で決定できないですもんね。
ただ、これがプロトコル越しならサービスのみを受けるからいいけど、(今のメインの)
JavaScriptはプログラムを流しこまれるからねぇ...そら文句は出ますやね。
ただまあ、サンドボックスがしっかりしてれば(という前提は難しいけど)
直接ソフトが実行される(ことでサービスを受ける)か、(Webとかさらには現実の他の)サー
ビスを受けるかの違いなんで、それはそれでアリという気も
# 少なくともJavaScriptだけじゃないよなぁ...
# と冒頭と同じ意味でシメ
M-FalconSky (暑いか寒い)
Re:JavaScriptに特有じゃない気が... (スコア:2, すばらしい洞察)
自分でプログラムを動かす場合、まず動かすかどうかの決定権が自分にあり
ソフトが自由であると、安全なプログラムかの確認も、不具合の修正や改良
(とそれによるソフト技術の発展)がある、ってことかな。
ここが問題なんですよ。ウェブページ、つまりテキスト文書を見てるだけのつもりなのに非フリーなソフトウェアをダウンロードして実行してしまっている可能性が出てくる、しかもGPLをわりとうまく避けられるってところがまずいんです。安全性とか管理者権限がどうとかじゃないです。おそらく最近ページ埋め込み型のネイティブコードなんて話が出てることから、新しいTivo化形態を生み出したくないというのがこの話の元ネタだと思います。GPLはサーバサイドアプリには適用されませんし、難読化されてても元々がスクリプト言語なJSコードは「元ソース」と主張される恐れがありますから。
Re:JavaScriptに特有じゃない気が... (スコア:1)
了解です。
やっぱそういう所は大事ですよね。
...ただJavaScriptが我が世とはいえ、他の言語がないわけじゃないんで、ちょっと違和感がありました。
# あと、純粋にネイティブコードオンリーなGPLソフト(バイナリを生書きしたもの)とかをだれか出したら、RMSは一言言ってくれるかなぁw
まあ、読みやすいコードには大賛成です。
あとはユーザーの管理能力、ソース改変環境の構築ですね。
# これもFirefox拡張とかがんばれば不可能でもないのかもしれない...と可能性を信じますかね
M-FalconSky (暑いか寒い)
Re:JavaScriptに特有じゃない気が... (スコア:2)
貴殿の仰ることは、ごもっともです。
ただ、RMS氏は、以下のような思想の持ち主ですから。
つまり、ソースコードというものは、修正するための適した形でないといかんと。
極端に言えば、ユーザに読んでもらえるソースコードを書け、ということです。
Re:JavaScriptに特有じゃない気が... (スコア:1)
ありがとうございます。追加しました。
よく分からんが・・・ (スコア:1, 興味深い)
ASPでも同じことは言えないのか?
>JavaScriptは非フリーなプログラムを、ブラウザを通じて勝手に実行する可能性がある
非フリーなライブラリを使えば同じだよな?
>一部のサイトはソースコードの難読化を行っているため、その真のソースコードを読むことはできない
そもそも読めるようになってないよな?ASPとか。
>フリーソフトウェアとしてJavaScriptコードをリリースすることは可能だが、実行されているコードを(動的に)置き換えることはできない
出来てたまるか馬鹿。
グローバルで参照できるところにスクリプトファイルを置き、さらに動作検証をお前がする前提なら・・・やはりいやづら
HTML (スコア:1)
GPLじゃない、HTMLについてはかみつかなくていいのかな?
JavaScriptが嫌なら (スコア:1)
メールで見ればいいじゃない [zdnet.com]。
視点が... (スコア:1)
修正や改良という概念が追いついていないのでは?
と、思ったりします。
自分のやっている事が永遠に正しいと、
そんな風になってしまったら、
自分からの自由を失ってしまった状態と、
考えてよいうのではないでしょうか?
-- LightSpeed-J
Re:視点が... (スコア:1, 興味深い)
>修正や改良という概念が追いついていないのでは?
「追いついてない」とは誰の事を指して言ってるんですか?まさかRMS?それはないですよね?
RMSが言う「自由」は修正や改良に対する(理論上)無限の可能性を提示する道具です。
たぶんその手の道具の中では最強でしょう。
なんせ「まるごと誰かの手にゆだねるのをいつでもOKする」
しかも「特定の誰かというわけじゃなく複数の陣営が同時に別々に改良するのも全然OK」
といってるんですから、
その改良の可能性はぶっちゃけ人類の能力の可能性そのものとイコールです。
今回問題になってるような昨今のWebアプリをRMS的自由に照らして考えれば、
自由を「多少(結構?)犠牲にして」そのぶん鯖サイドでごちゃごちゃやる事を優先してる、といった位置づけでしょう。
こまかくいえば恐らく、「鯖サイドでごちゃごちゃ」は「アジャイル」みたいな状況を指すことになると思います。
あれって結局のところソフト改変に関わる人の数を制限するほうが「迅速に」改良できるよねというスタンス。
それはFirstHit作戦でありBestHit作戦ではないんですよね。
長期的には全ての人類に晒すほうが最終的な発展力は上だろという自由ソフトの考えかたとは少なくとも方向性が違います。
じゃあどっちを優先するんだ?となると、
鯖サイド大好き陣営(誰だ?)とRMS派とは反りが合わないという状況なのでしょう。
…まあねえ、なんといいますか、
私もキイハナですが初代のWikiはWikiコンテンツ自体が(Perlによる)Wikiエンジンそのものだったそうですね。
それと同じことをやれば原理的には「Webアプリでありかつ自由なソフト」になる可能性も有るかなと思います。
ものすごく難しそうではありますが。
難読化というのか知りませんが (スコア:1)
たとえば、/.Jで使われているJavaScriptの一部に
function toggle_loginform() {
obj = document.getElementById("loginform");
visible = (obj.style.height == "" || obj.style.height == "0pt") ? false : true;
if (visible) {
obj.style.height = "0pt";
document.getElementById("loginlink").className = 'collapsed';
} else {
obj.style.height = '39px';
document.getElementById("loginlink").className = 'expanded';
}
}
こんなのがありますが、これを、
function t(){o=document.getElementById("loginform");visible=(o.style.height==""||o.style.height=="0pt")?false:true;if(visible){o.style.height="0pt";document.getElementById("loginlink").className='collapsed';}else{o.style.height='39px';document.getElementById("loginlink").className='expanded';}}
としてしまったら、それはNGなのでしょうかね?
確かにソースコードとしての可読性はかなり落ちますが、だから全て悪いかというとそうではないわけで・・・。(前述の用にパフォーマンス面で)
神社でC#.NET
Re:歴史は繰り返す (スコア:1)
JavaScriptのソースのサイズは、処理速度より主に転送量に影響します。
当然転送量が増えればロード完了して実行するまでの時間も長くなる訳で。
(レンタルサーバなんかだとコストにもかかってくるかと)
流行のJavaScriptフレームワークはどんどん規模が大きくなってきているんで、
こういうささやかな工夫でもかなり効果があるようです。
Re:歴史は繰り返す (スコア:1)
IE6 みたいなクソとろい JavaScript エンジンにとっては、転送量よりも実行速度に普通に影響を与えますよ。
フリーソフトウェアとwebサービスの相性の悪さ (スコア:1)
前にもストーリーがありましたし、今回も指摘している方がいらっしゃいますが、
いわゆるFSFの提唱する「フリーソフトウェア」という概念と、現在のWebサービス
(Webアプリとも言う?)が、根本的な部分で相性が悪いんじゃないかと思います。
# それが悪いのかどうかはさておき
特にJavascriptやFlashなんかは、アプリケーションであると同時に(場合によってはそれ以上に)
コンテンツとしての性質を持っているので、いわゆるソフトウェアとして考えるだけでは、
無理が出てくるんではないかと思います。
GNU GPLによるフリーソフトウェア運動を推進するような場合、おそらくGNU FDLやCCと
複合させたようなライセンス形態が必要になってくるんじゃないかなぁ、と思います。
# まぁ、なかなか難しそうではありますが(苦笑)
日本語訳 (スコア:1)
http://cpplover.blogspot.com/2009/03/blog-post_24.html [blogspot.com]
JavaScriptコードをGPLで配布する方法 (スコア:0)
なにこれ。with a license notice like this:の後に書かれている文章を書けばいいんだと思うんだけど、
下の方に、このワークはCC-ND 3.0 USでライセンスされてるって書いてあるじゃん。
統一しろよ。
#Translations of this pageが英語しかない (スコア:0)
さあ、日本語に翻訳して、八田さんのように有名になろう!
根本的な問題として (スコア:0)
一般人は自分が使っているソフトがフリーソフトであるかどうかなんて気にしないと思うんだ。
また、ソフトの難読化なんぞも気にする提供者も使用者も少ないと思うんだ。
そもそも、サービスの提供を行っているJavaScriptがフリーソフトであって嬉しくそうで無いと不味いと思うのは、
極々一部の特殊な心情を持っている人だけだと思うんだ。
#自分の理念を大切にするのは良い。
#けど、その利点を固持するのでなく他者を貶める事で自分等の主張の根拠とする様になるとオシマイだよ。
Re: (スコア:0)
タダか否か
だけでワーワー騒ぐ人、星の数ほどいると思うけど
#ここ10年くらいで指数関数的に増えているような
御大とはもちろん違いますけど
なんというか (スコア:0, すばらしい洞察)
あったまおかしいじゃねーの?
としか感想が出てこない…
全部使い方の問題で言語の問題じゃないだろ…
Re:なんというか (スコア:3, 参考になる)
サブジェクトには "JavaScript" とありますが、
本文中では Flash, Silverlight, Java アプレット等、
サーバからダウンロードされてクライアントサイドで
実行されるコード全般について問題にしてますよ。
まさに「使い方」を問題にしてる。言語の問題じゃない。
Re:なんというか (スコア:1, すばらしい洞察)
いや耄碌じゃないよ。
もともと「リモートアプリやダウンロードアプリとソフトの自由とのあいだの関係」は
自由ソフト(派)にとって微妙な問題だ、ってことは認識されていたことだ。
GPL3にだってWebアプリを視野にいれた条項を足すかどうか、しばらくすったもんだしてたはず。
まあ逆にいえば以前から判りきってた問題を今更言うのは耄碌じゃね?ともいえるが、
それ言うならRMSの耄碌が始まった時点を探そうとすると
RMSが自由ソフトについて発言を「2度目に」おこなった時期まで遡らないとならないから、
いったい何十年前から耄碌してたんだ?という事になりかねん。
だから何だと? (スコア:0)
んじゃ全部Emacs Lispで置き換えるか?w
それともGuileか?w
Re:よくわからん (スコア:1)
原文読んできたんだけど、「難読化」なんて書かれてなくない?
"compacted form" とは書かれてるけど。
一見ソースコードのようでいてロジックも追えるのに、
サイズを抑えるために、コメントやスペース・インデントが
ストリップされていて、変数も1~2文字と意味不明、
これは気持ち悪いぜ、生殺しだ、と言いたいのかな? > RMS
たしかに、ソースにライセンス条項がコメントで入っていても、
これじゃ落ちちゃうよな。こういう処理をするための
サーバ側プラグインとかあるんでしょうかね?
Re:よくわからん (スコア:3, 参考になる)
compacted form/難読化 は一種の「コンパイル」であり、飛んできているコードは一種の「中間言語」とみなすこともできます。この場合、変換前の「ソースコード」があるはずです。
「全てのソースコードを公開せよ」
が究極の目標である RMS にとって、これは十分不愉快な状態でしょう。
fjの教祖様
Re:よくわからん (スコア:1)
私には qmail のコードも難読化されているようなものですし、Emacsen が使う 2 space indent 混合 4tab とかは難読化以外の何物でもないように感じるのですが、その辺りも「中間言語」に含まれますか?
変数名を先頭 2 文字しか認識せず、解釈できればスペース入れなくても解釈していた MSX-BASIC なんかもは、その点では今見たら難読化されたコード扱いなのか。
Re:よくわからん (スコア:1)
真の JavaScript 難読化は、デコードする JavaScript コードとかあったりするので実際には全くコンパクトにならないという点を考えると、初歩的な難読化 (indent 通したら読みやすいレベルになる、という感じ) のような物を言っている可能性もありますね。
初歩的な JavaScript 難読化ツールは「そういう」レベルです。
JavaScript は当然ながらソースコードに戻せないと実行できないという点があるため、結局のところ元のコード (っぽい何か) に戻せないと実行できないのですよね。
# 確か Google も AdSense で自動挿入するコードとかは難読化してたよね。