数か月に及ぶ議論の末、ウィキメディア財団 (WMF) は、Vue.js JavaScript フレームワークを採用することで、Wikipedia やその他のプロジェクトで使用されるフロントエンド インターフェースを近代化することを決定しましたが、この選択は依然として議論を呼んでいます。
ウィキメディア財団はWikipediaを監督していますが、同団体はjQueryなどの技術やOOUIと呼ばれる内部フレームワークで構築された10年前のユーザーインターフェース要素を依然として利用しています。この非営利団体は、自動化による管理性の向上、成果測定の容易化、そして将来の貢献者にとってより使いやすいプラットフォームを目指し、プラットフォームのアップデート計画を策定しています。
この計画の一環として、Wikipediaの運営に使用されているソフトウェアであるMediaWikiのフロントエンドインターフェース技術の見直しが進められています。昨年末、この非営利団体のフロントエンドアーキテクチャワーキンググループ(FAWG)は、PHPバックエンドで提供されるウェブインターフェース要素を作成するために、最新のJavaScriptフレームワークを採用するという提案を発表しました。
2019年12月に公開されたRequest for Comments(RFC)では、この技術コンテストの目標がまとめられており、人気のJavaScriptフロントエンドフレームワークであるVue.jsが有力候補として推奨されています。他に有力な候補として検討されているのは、Facebookが2013年にオープンソース化した、さらに人気の高いフレームワークであるReactだけです。
その他のJavaScriptフレームワークは最初の選考には残りませんでした。AngularとEmberは柔軟性が不十分と判断され、Svelte、Inferno、Preactは普及率が低いとして却下され、Stimulus.jsはサーバーサイドレンダリングなどの望ましいユースケースをサポートしていないとして却下されました。
私を愛してくれたPi:SSLライセンス
続きを読む
「ReactとVue.jsは多くの機能と理念を共有しています」と提案書では説明されています。「どちらも開発者が宣言型、リアクティブ、そしてコンポーネントベースの方法でUIを構築できるようにします。どちらのコアライブラリもかなり軽量で高性能であり、どちらも大規模で活発なコミュニティを擁しています。」
どちらのツールを採用しても、財団にとってメリットがあると考えています。しかし、Vue.jsには、財団のユースケースに関連する重要な利点がいくつかあると考えています。
提案によれば、Vue.js は Webpack や Babel などのフロントエンド ビルド ツールのサポートが優れており、依存関係の少ないコードを可能にし、安定して進化しているとのこと。
また、この提案は、Reactの親会社が問題であると示唆しています。具体的には、ReactはFacebookによって開発され、2014年から2017年の間、インターフェースライブラリはBSD + Patentsライセンスの対象となっており、他の組織はこれを潜在的なリスクと見なしていました。
Facebookは2017年にReactをMITライセンスに移行したが、同社のビジネスモデルと行動は一部の開発者にとって依然として懸念事項となっている。
この提案では、「Vue.js の開発は、WMF の目標とは異なる目標を持つ単一の企業によって主導されているわけではない」と述べられています。
WMF はまた、パフォーマンス向上のために PHP をマシン コードに変換するために使用されていた別のオープン ソース Facebook プロジェクトである HipHop Virtual Machine (HHVM) が昨年 PHP の完全サポートを停止し、WMF が PHP から移行せざるを得なくなったことにも不快感を示した。
さらに、Wikimedia コミュニティの一部ではすでに Vue.js の使用経験があり、WMDE (Wikimedia Deutschland) では Wikidata サイトのフレームワークを実験しています。
Vue.jsへの移行が検討されていた間、反対意見もありました。先月、開発者のHyeon Kim氏をはじめとする人々は、Reactの方がより良い選択肢だと主張しました。しかし、Vue.jsの開発者であるEvan You氏は、Kim氏の批判に答えようと議論に加わりました。
水曜日にコメント期間が終了し、Vue.js で前進するという提案が採択されました。
それでも、問題は決着しないかもしれない。この決定を受け、他の開発者たちはFAWGに再考を促しており、W3C標準のWebコンポーネントを使用すべきだと主張する者もいれば、開発者のニーズだけでなくユーザーのニーズも考慮すべきだと主張する者もいる。
正しい答えはないかもしれませんが、間違った答えは必ず存在します。®