update.前書き本記事は大幅改装中です。下記本文は現状参考までにとどめておいてください。Ver16と、jest、Flow、Immutable.jsの4プロジェクトに関しBSD+PATENTを改め、MITライセンスへ移行しました。現状はその他のプロジェクトにおいて、BSD+PATENTライセンスが有効ではありますが、おそらくはReactに関してその影響は排除されているものと推測されます。推測なので、確実な論拠を得てからその件は記述いたします。この件を知った発端QiitaでECMAScriptの最新事情を眺めていたら、Reactが有名なSNS企業のFacebookがやらかしてOSSコミュニティで村八分になっているとのこと。いうことか実際にgoogleで調べてみたらその関連の記事が出ること出ること。多くは英語記事であるが、日本語でも存在したのでこちらを。「Category-X」リスト(禁忌リスト)に追加したことだ。情報自体は先月中旬のため、本記事執筆地点では非常に新しいお話である。いうことかというと、Webサーバーで最も多く使用されるApacheの親元が定めるOSSの非営利団体にFacebookのOSSを「やってはいけないことをしたからうちのOSSのプロジェクトでは使ってはいけない」という認定をしたということ。これに対しFacebookは8月18日に自社のブログにおいて「方針を変えない」と発表したため、より大きな反響が広がり、炎上案件にまでなっている。Reactは2011年とか2012年のフレームワーク黎明期においてなされた革新的な仕組みを持つフロントエンド技術である。MVCにおけるVの部分のコンポーネントを重点的に作るもので、ViewとModelを分けないことが逆にコード圧縮を可能にしたりより柔軟な記述を可能にし、よりプログラマブルなコードを書いている人がなじみやすい形式となっている。WebのDOMに関する仕組みに対しての不便な部分の多くが改善されることから大きく広まり、今や世界最大のフロントエンドのフレームワークとなっている。NativeはWeb以外のプラットフォームにおいても活用できるように作られ、ReduxはFluxの概念を含んでReactにWebの統合フレームワークを提供した。ASFに限ったらASFのOSSはCategory-Xに属する対象に依存するようなプロジェクトを作れない。CordovaなどにReactなどのFacebook製OSSを用いる前提は不可能ということになる。仮に世界で一番多く使われているHTTPdサーバーを例にした場合。この件では、別にApacheHTTPdサーバーの上でreact使ったWebアプリ動かしてはいけないということではない。HTTPdがreactNativeやらreduxに依存するモジュール、のような組み合わせプロジェクトを作ったらアウトということである。いったわかりやすい形でのアウトならともかく、もし知らず知らずにASFとFacebookのOSSを共存させて依存関係が作られるプロジェクトを作ってしまった場合が問題になる。実際、ASFのCouchDBというプロジェクトでReactが使われていたことから、携わる人の間で大きな波紋となっている。「Facebook及びFacebookの関連会社を特許で訴訟した場合、ライセンスは破棄され、Facebookのコードを使う権利を失う」つまりFacebookのOSSに関して何か特許違反があったから訴えると、FacebookのOSSを使う権利を失うということ。オリジナリティあふれるコードによって自身や所属する企業が特許を所得した際、FacebookのOSSでシステムを構築していたことを弱みとして、Facebookがこの特許を侵害してきたら、取り返しのつかないことになる危険性がある。大多数の個人や企業がFacebookと係争する案件を持っているはずがないので、その件自体に何が問題があるのかという話だが、逆に言えば「Facebookと競合する可能性のある企業はFacebookのOSSを使わなくなる」ということ。下請けとなった時にそのことが大きくのしかかる可能性がある。飛び火してさまざまな企業でReactが大きな火種になる危険性をはらむ以上は使用をためらうものなのだ。Reactを含むFacebookのOSS使用を禁止している。(2017/9/11追記)(2017/9/21追記修正)MicrosoftはFacebookとはむしろ好意的な関係らしい。NativeのWindows向けやらONNXやらでの連携があるので、少なくとも該当はしないようである。実際このソースの出所的には同じQiitaに該当するものがある。Facebookと係争中の他社はReact.jsが使えないこの記事は1年以上前のものであるが、この記事自体がさらに1年も前にFaceBookが行った規約改定の件を取り上げた海外ブログの話から。Eisenberg"という人物の証言に基づくのだという。彼は過去にGoogleでAngularを作っていて、現在はAureliaのフレームワークを作成しながらMicrosoftでdocs.microsoft.comのプロジェクトに関わっており、つまりは内部から両社の事情を把握した上での発言ということになる。当時は「過剰に反応するまでもない」という話とスルーされかけているが、少なくとも今回のさらなる改定によって警戒しなければならない、容認できないラインを踏んだことは明白で、それをASFがある意味「保証した」ことになる。ちなみに、このライセンスの変更(BSD+PATENTSライセンス)はその2015年に行われたのが最後のGithubコミットで、それからASFが動くまではあまり大きな話題にならなかったということになる。このライセンスはOSSの定義に反する。この事項を遵守した場合、オープンソースの定義における、特定の個人やグループへの制限をしてはいけないという項目に抵触する行為にあたる。暴論ではあるが、つまりReactはオープンソースではない。ReactなどのFacebook関連のOSSを採用しない。別に個人で使う分にはと思われがちだが、企業案件として使いにくい→収益を上げるためには使いにくいということであり、さらに使用することで被るデメリットが大きすぎる。騒ぎを大きくしているのはアンチReactな方とか競合フロントフレームワークの人間なのかとも疑われることだが、実際にFacebookは自社のOSSをOSS「ではない」と自ら宣言したようなもの。それを用いるリスクはけして小さくはない。今から遅くない案件であれば、手を出さないに越したことはない。今学んでいるのであればあくまで知識の片隅程度とし、すぐに他のフレームワークに学習移行することをお勧めする。使われている場合は一時的な保守のみとし、将来的に撤退する。少なくとも現行で走っている中で、問題が表面上にないのであればすぐにどうこうなる危険性はない。時間的猶予は十分にあるので、まずは目の前のシステムが問題なく稼働できるように努め、Facebookがより浸食を深める前に別システムへの移行を進めるようにする。代替のフレームワークや互換性のあるライブラリの使用。jQueryを卒業する必要はない。Reduxなどの統合フレームワークなら、VueやAureliaやemberやriotなどなどのライセンスクリーンかつ先進的なフレームワークが存在するのでそちらに移行するとよい。Angularは迷走している感はあるが、現行で動いているものがあるならそれを無理して移ることはない。してもReact的なコーディングをするのであれば、Preactという選択肢もある。そもそも自分は特許を取るほど大それたことはしないような個人だったり、導入する企業としてそもそもFacebookと競うようなことは考えにくい場合など、リスクよりメリットが上回る根拠が明確であったり、自分はReactを大切に想うという理念がある場合には、スルーの選択肢も考えらえる。本件は2年も以前に危惧されたことが、さらにエスカレートしたことによって発生している。してもというのであればそれを止める権利は私にはないが、事態がより深刻さを増しつつあることに関して、けして油断せず動向を見守ってもらいたい。コメントを受けて加筆)本件を受けてWordPressは9月14日にReactJSの使用を中止したとのこと。Reactについては、WordPressの運営会社であるAutomatic社の提供しているCalypsoにはずっと前から、WordPress本体のGutenbergには少しずつの導入を行っていた。今回の決定は、ユーザーの多くにReactの特許事項によるリスクを要求するわけにはいかないという配慮によるものだ。この話の以前より、ASFの報があってからAutomatic社側はWordPressとCalypsoのReactを除くかどうか検討中という情報があったため、この決定はその結果によるもの。ASFの行動による影響はまだまだ大きくなりそう。少なくとも、今後WordPressのためにReactを覚える必然性は消えたことになる。upLoginユーザーは見つかりませんでした。