GNOMEプロジェクトは、最近Developer Experience Hackfest でJavaScriptがGNOMEデスクトップ環境における、アプリケーション開発用の既定言語である、という物議を呼ぶ宣言を行った。この決定に対する述べられた理由は、開発プロセスを簡単化することで、ドキュメントの標準セット、ベストプラクティス、開発者用ツールセットに焦点を置くことができるからである。
JavaScriptを第一言語として推奨する決定が、直ちに物議を引き起こし、コメンテーターは、特にJavaScriptを批判したり、自分が選んだ言語が見落とされたことを嘆いた。 GNOME Foundationのメンバーで Hackfestに参加した Travis Reitter氏は、この決定をした幾つかの理由を挙げている。
- 我々が選ぶ言語は動的で高レベルである必要がある。
- GNOMEプロジェクトには、既にJavaScriptに対する勢いがあった。それはGNOMEシェルと GNOMEのドキュメントでつかわれている。
- 特に速く、埋め込み可能で、フレームワークに依存しないようにするには、言語に入り込む、多くの作業がある。
- JavaScriptは、増々一級のデスクトッププログラミング言語として見られている。Windows 8、モバイルプラットフォーム、ローカルなウェブアプリケーションで使われている。
- JavaScriptは、自己完結型である。それには、それ自身のコアライブラリセットが付いてこない。このことが、プラットフォームに統合する時に、より都合のいいものとなる。
Reitter 氏が直ぐに注意したのは、アプリケーション開発に関してこの決定があっても、GNOMEのシステムライブラリ用の推奨言語はCであり続ける。JavaScriptの選択は、他の言語へのサポートを無視する、という意味ではないが、JavaScriptがドキュメントと開発者用のツールサポートの両方で優先されることになる。
このアナウンスが多くの論評を生み出した。 Sriram Ramkrishna氏が書いた一部。
「思うに、人々が心配しているのは、ある言語が他のものより遅れを取る、という事実だと思います。今日既にこれは起きています。なので、もし他の言語を使うことを決めたら、重要なアップデートが使っている言語には、なされないというリスクがあります。開発者には、JavaScript以外のものを使っていても自分が選んだ言語のバインディングにも、タイムリーにアップデートを得ることができる、という保証が必要です。」
Tristan Van Berkom氏は、GNOMEがネイティブな言語を持つ、という要望に関してコメントした。
GNOMEは、「固有の」言語が必要です。 NextStepのObjective-C実装がAppleに帰属していると同じやり方です。私がこう言う理由は、高レベル言語の有用性です。すなわち言語は我々のプラットフォームへの窓口で、プラットフォーム固有のフィーチャを利用できます(ここでプラットフォームと言っているのは、GObject/GIO/Clutter/GTK+などのスタックです)。
Valaは、明らかな選択肢「です」。なぜならシンタックスを説明したり、プラットフォームに固有のフィーチャを活用でき、Valaを使うことで Objective-Cが NextStep環境を利用するのと同じやり方で、GtkBuilderのフィーチャを利用できます。それがどこに繋がるのかは、誰にもわかりません。
Valaは、GNOMEのアプリケーション開発者にC#やJavaの代替を提供するために開発された。 Reitter氏がコメントしている。
「ValaよりもJavaScriptを好む大きな理由は、非常に多くのインストールベースの人々が既にJavaScriptを使う(すなわち、JavaScriptの方がWindows 8 開発、Firefox OS、幾つかのモバイルプラットフォームでより好まれている言語です)ことを公言しているのと、特に多くの人々がJavaScriptを速く、そして安定させようとしていることです。」
Keith Curtis氏は、別のブログ記事でコメントを公開した。
「彼らができるだけ多くのコードにガベージコレクションのある言語を使おうとしているのは、素晴らしいです。コンポーネントベースのシェルUIでは、JavaScriptは確かに C, C++, あるいは Javaよりも良いです。彼らは、このJavaScriptへの道を何年も前に始めたのを認識していますが、彼らが正しい道の上にいるのかどうか再考する価値があると思います。
大きな決断によって、記録に残るのはいいことです。私はこの決断を支援するドキュメントを見つけ出すことができません。唯一、起きた後に書かれたブログ記事だけで、これも余り情報は与えてくれません。」
ちなみに、KDEプロジェクトの貢献者は、C++を使っている。アプリケーション開発者は、 C++, Python, Ruby, C#, Perlから選ぶことができる。Plasmoids と呼ばれる軽量KDEアプリケーションは、C++, JavaScript, Python, Ruby、QML(「本質的にCSSとJavaScript間で構築)で書くことができる。