Mozillaが今日、Firefoxのアドオンの今後の実装が大きく変わることを発表した。中でもいちばん重要なのは、ChromeやOperaのようなBlinkベースのブラウザとほとんど互換性のある、新しいエクステンションAPIを採用することだ。このWebExtensions APIにより、デベロッパはChrome/Operaのエクステンションにわずかな変更を加えるだけで、Firefoxでも動くようにできる。
MozillaのKev Needhamが今日の発表声明で次のように述べている:
“アドオンの開発を、Webの開発のようにしたい。つまり一定のスタンダードに従って書かれることにより、同じコードが複数のブラウザで動くようにしたい。そのことにより、ドキュメンテーションの充実も図りたい”。
Firefoxのエクステンションを書くことは、同じ機能をChrome用に書くことに比べて、かなり面倒だった。それは、FirefoxがXPCOMやXUL(ユーザインタフェイス)のような独自の技術を使っていたからだ。それによりブラウザ本体をほとんどJavaScriptだけで書くことができ、エクステンションのデベロッパはFirefoxの内部的な機能の多くにアクセスできたが、そのため相当複雑な開発技術になっていた。
しかしこの、デベロッパがブラウザの実装の内部に自由にアクセスできる開発モデル(“permissive model”…寛容モデル)は終わりを迎える。そしてXULやXPCOMに依存し寛容なアドオンモデルに立脚するアドオンは、12〜18ヶ月後には非推奨になる。
ただしこの変更は、新しいJetpack SDKを使ってエクステンションを書いているデベロッパには適用されない(彼らがJetpackの枠内にとどまり、低レベルのAPIに手を出さないかぎり)。
Firefox 42からは、デベロッパが提出したエクステンションをすべてMozillaが検定し、合格したものだけをデプロイできる。Needhamは書いている:
“検定の作業はほとんど人間による手作業なので、合否の決定が出るまでに数週間から数か月かかることもありえる”。
ただしMozillaの想定では、WebExtensions APIへの移行によってアドオンのレビューが従来よりも相当速くなるだろう、という。またレビュー過程の一部を自動化することによって、レビューに要する時間を5日ぐらいに短縮したい、とも言っている。
Mozzilaはアドオンだけでなく、Firefox本体にも大きな変更を加えようとしている。そのElectrolysisプロジェクトにより、ブラウザのタブとユーザインタフェイス本体が別プロセスになり、タブのクラッシュによりブラウザ全体がダウンすることが、解消される。
この機能は今、Firefoxのデベロッパチャネルにプレビューが登場しているが、デフォルトで有効になるのはFirefox 43の最初のベータからだ。Electrolysisと相性の悪いアドオンもありえるから、デベロッパは事前にコードをテストせよ、とMozillaは勧奨している。
WebExtensionsのサポートはすでに、Firefox NightlyチャネルとDeveloper Editionで有効である。
これでFirefoxのアドオンが大きく変わるわけだけれども、これまでFirefoxはすごく大きくて濃密なアドオン開発のエコシステムを育ててきたし、独自の技術であるだけに、そのアドオンには、Chromeなどそのほかのブラウザにはできないことができた(ユーザインタフェイスの変更など)。
今度の変更が、Firefoxのそんなアドオンエコシステムにどんな影響を与えるだろうか? コードを一つだけ書けば、それが(わずかな変更だけで)FirefoxとChromeの両方で動く未来は、基本的にはデベロッパとユーザの両方にとってwin-winだとは思うが。
しかしMozillaにとっては、これによってFirefoxの独自性が失われていくリスクもある。