最新の日記 記事一覧 ログイン 無料ブログ開設

Mozilla Flux

2009-05-04

NoScriptの全面譲歩で決着

予想外にあっけない幕切れだった。NoScript 1.9.2.6がリリースされ、1.9.2.4で問題になっていたホワイトリストは自動的に削除されるようになった。そして、二度と追加されることはない。NoScriptの作者Giorgio Maone氏は、公式サイトのほか、自己のブログにも謝罪文を掲載した(『Dear Adblock Plus and NoScript Users, Dear Mozilla Community』)。

大きな反響をいただき、台湾からのトラックバックさえあった『Adblock Plus vs. NoScript』の続報である。筆者は対立が長引くと見ていたのだが、わずか数日でNoScriptが全面的に譲歩する結果となった。Maone氏の謝罪文には経緯も説明されているので、まずはそれを見てみよう。

NoScript作者から見た争いの経緯

やはり今回の争いの発端はEasyListにあった。フィルターセットと呼ばれる、Adblock Plusがカットする広告のリスト。その中でも最も有名なのが、このEasyListだ*1。そこにNoScript関連のドメインが追加されたのだが、当初、Maone氏がWebサイト側の設定でそれをかわそうとすると、リストのアップデートが行われるという応酬が一週間ほど続いたようだ。最終的にリストの設定は非常に強力なものとなり、広告をカットするだけでなく、NoScript等をインストールするためのリンクも正常に動作しなくなったという。

広告収入を減らされ、しかもサイトの動作を阻害されたと感じて怒り心頭に発したMaone氏は、NoScript関連のドメインで上記フィルターセットを機能させなくするスクリプトを書いて、NoScriptに追加した。Maone氏は自家製ホワイトリストと表現しているが、Adblock Plusの作者Wladimir Palant氏は、Adblock Plusの一部機能を無効にされたと受け取った。この点に関連して、コードを難読化したかどうかが問題になっているのだが、Maone氏は否定している。読みやすいコードではないにせよ、わざと読めなくしたことは一切ないと。ただ、一部の「データ」を読みにくくしたことは認めている。EasyListの管理人による対抗措置を困難にするためだったらしい。

Maone氏の説明では、そのバージョンをリリースした後になって、別の拡張機能(この場合はNoScript)からAdblock Plusのホワイトリストにドメインを追加できることに気づいたのだという。また、Palant氏は触れていなかったが、この時点で同氏からMaone氏へメールがあり、NoScriptの措置に問題があるとの指摘がなされた。そこでMaone氏は、独自のスクリプトを使わず、上記ホワイトリストに自己のドメインを追加することに決めた。しかし、ユーザーへの説明は自己のサイトやMozilla Add-ons(AMO)で行えば十分と判断した。Maone氏によれば、その旨を含むメールをPalant氏に送ったが、返事がなかったので、異議がないと考えたのだそうだ。

そして、懸案のNoScript 1.9.2.4がリリースされる。これもMaone氏の説明だが、リリース後すぐに、措置が不十分だと悟ったという。起動時に意図を説明し、明示的にユーザーの承諾を得るようにすべきだったと。実際、リリースから半日と経たないうちにAMOからメールがあり、次のバージョンではオプトイン用のダイアログを追加すべきと提案された。

だが、事態の進行速度は、Maone氏の予想をはるかに超えていた。AMOのレビューは批判の嵐となり、NoScriptのフォーラムにも非難の声が相次いだ。本家スラッシュドットで大きく騒がれ、Maone氏に届いたメールもかなりの量だったらしい。どうやら、Palant氏のブログ記事の影響は大きかったようだ。

話はそれだけでは終わらない。Maone氏がユーザーの承諾を求めるよう変更したNoScript 1.9.2.5をAMOに提出してレビューを申請したときには、AMOのスタンスも厳しくなっていたのである。オプトイン用のダイアログを追加するだけでは不十分であり、そもそもAdblock Plusのホワイトリストへの追加はNoScriptの機能と関連しないから、そのような措置は認められないと通告された。つまり、NoScriptがホワイトリストに手を出すこと自体がアウトになったわけだ。

Maone氏は書いていないが、この通告は非常に重い。NoScript 1.9.2.5をAMOで公開することができず、かといって何もしなければ、同等以上の問題を抱える当時のNoScriptについて、掲載の継続そのものが危ぶまれるからだ。Maone氏も白旗を揚げざるを得なかった。こうして、NoScript 1.9.2.6が急遽リリースされる運びとなった。

なお、Maone氏がフォーラムで説明しているところでは、問題のホワイトリストを削除しても次回起動時に再度書き込みが行われるのは、意図的ではなく、純粋なバグだったそうだ。

再発防止に向けた動き

Maone氏の「弁解」を鵜呑みにするのは難しい。とくに、次の三点は真偽を疑われても仕方がなかろう。燎原の火のごとく広まる批判の声に慌て、泥縄式に火消しに走ったというあたりが真相かもしれない。

  1. Adblock Plusのホワイトリストにドメインを追加できると後から気づいた
  2. v1.9.2.4のリリース直後にユーザーから明示的な承諾を得るべきだったと悟った
  3. ホワイトリストを削除しても次回起動時に再度書き込みが行われるのは純粋なバグだった

それはともかく、こうしたもめごとはNoScriptだけでなくアドオン全体の信頼性にもかかわることなので、どうやって再発を防止するかが重要だ。Maone氏は二度とこのようなことはしないと誓ったうえで、NoScriptを含めた自作拡張機能のリポジトリを誰でもアクセス可能なものにすると発表している。要するに、コードを誰でも覗けるようになれば、変なことをしてもすぐに発覚するので、抑止力として機能するというのである。

また、AMOも、今回の件を踏まえ、Mozilla Add-ons Blogの『No Surprises』という記事で新たなポリシーを提案している。内容はこうだ。

デフォルトホームページや検索設定の変更は、他にインストールされたアドオンの設定と同様に、そのアドオンの中核機能と関連するものでなければならない。この関連性が確立された場合も、それらの設定を変更する際は、以下の要求を厳守しなければならない。

  • アドオンの説明は、アドオンが加える変更を明確に述べていなければならない
  • すべての変更は「オプトイン」、すなわちユーザーが変更を有効にする措置を非デフォルトとしなければならない
  • アドオンをアンインストールしたときは、変更された設定をユーザーのオリジナルに復元する

以上は最低限の要求であって、アドオンが承認されることを保証するものではない。

新ポリシーは、Firefox本体や他のアドオンの設定を変更する場合、「当該アドオンの中核機能との関連性」と「ユーザーに対する説明および明示的な同意」という二つのハードルを課している。提案と言っているが、既にNoScriptに適用されたのだから決定事項も同じだ。NoScriptは一つ目のハードルを超えられなかったため、二つ目のハードルにたどり着けずに承認申請を却下された。

新しいルールが設けられるということは、それだけアドオンの自由が減ることを意味する。Adblock Plus vs. NoScriptの争いは決着がついたが、その置き土産はことのほか大きかったのかもしれない。

*1:有志が管理しており、Adblock Plusの作者が作成に携わっているわけではない

piro_orpiro_or 2009/05/04 16:54 >ホワイトリストを削除しても次回起動時に再度書き込みが行われるのは純粋なバグだった
ホワイトリストが組み込まれておらず、且つ、過去にユーザが手動でホワイトリストを削除したことがある場合、というケースを判別するためのコードを頑張って書かない限りは、そういう動作になりますし、そういうケースを判別するのはそれなりに面倒ですので、熱くなった頭で見過ごしてしまったとしてもおかしくはないでしょう。
無罪とは言えませんが、かといってこの事を厳しく責めるのはかわいそうだ、というのがうっかりミスを連発しがちな自分の感想です。

sysy 2009/05/04 23:43 >すべての変更は「オプトイン」、すなわちユーザーが変更を有効にする措置を非デフォルトとしなければならない

この部分ですが、直訳過ぎる為か、ユーザーの行動とアドオンの動作がごっちゃになっていて分かりにくいように思います。文の意図を考えたら「非デフォルト」ではなく「デフォルト」ではないでしょうか。また、簡潔に(?)
「すべての変更は「オプトイン」、すなわちデフォルトで有効であってはならない」
こんな感じではどうでしょうか。

広告を表示している以上EasyListに載るのは仕方ないのですから、EasyListを回避する応酬を行ったこの事件の発端からしてMaone氏に弁解の余地は無いように思います。NoScriptが素晴らしいものなら(実際素晴らしいと思いますが)ユーザーの非難を受けるのはEasyListになったでしょうから。

ただ自分はこの置き土産は良い財産で、アドオンの自由度が減るようなものだとは思わない(むしろそんな自由度は無い方が良い)のは、自分がユーザー視点だからでしょうか。

RockridgeRockridge 2009/05/05 15:41 Piroさん、syさん、コメントありがとうございます。

> Piroさん

NoScriptを最初に起動したときだけホワイトリストを追加する仕様にするのは難しいのでしょうか。first-runページを提供するアドオンはいくつも見かけたことがあるので、Maone氏ほどの技術があれば十分に可能だと思うのです。そうした手段をあえて選ばなかったのですから、これは「見過ごしてしまった」とは言えないのではないでしょうか。

> syさん

ご指摘の文が直訳になっている点ですが、あえてそうしてあります。原文が「non-default」という回りくどい言い方をしているのは、理由があってそうしているのだろうと考えたからです。

仮にアドオン作者が、設定変更をデフォルトであるような、ないような曖昧な扱いにする方法を思いついたとしましょう。「デフォルトで有効にするな」という消極的なルールなら、作者は言い逃れができますが、「非デフォルトにしろ」という積極的なルールなら、作者は説明責任を負います。仮定した方法が実際に存在するかは分かりませんが、将来のトラブルを避けるようにルールを設定しておくのは賢いやり方です。

そういうわけで、原文があえて回りくどい言い方にしている以上、訳文もそれにしたがうべきだと考えました。

あと、この新ルールが適正なものであることは言うまでもありませんが、やはりルールで縛らなくて済むならそれに越したことはないと思います。拡張機能作者の方々が余計な気を遣う事態は少ないほうがいいからです。

ゲスト