React死亡?React終了?～Facebookの特許事項付きライセンスの問題～

# 前書き
**本記事は大幅改装中です。
下記本文は現状参考までにとどめておいてください。**

Facebookは2017年9月26日リリースのReact Ver16と、jest、Flow、Immutable.jsの4プロジェクトに関しBSD+PATENTを改め、MITライセンスへ移行しました。
現状はその他のプロジェクトにおいて、BSD+PATENTライセンスが有効ではありますが、おそらくはReactに関してその影響は排除されているものと推測されます。
あくまで推測なので、確実な論拠を得てからその件は記述いたします。

## この件を知った発端
Qiitaで[ECMAScriptの最新事情](http://qiita.com/masakielastic/items/c7c8b893bb23f36944c9)を眺めていたら、Reactが有名なSNS企業のFacebookがやらかしてOSSコミュニティで村八分になっているとのこと。

## どういうことか
実際にgoogleで調べてみたらその関連の記事が出ること出ること。多くは英語記事であるが、日本語でも存在したのでこちらを。
[Facebookの特許条項付きBSDライセンスが炎上している件について](https://note.mu/konpyu/n/nc0d2f49676ba) 
記事を上記より引用すると、

> ことの始まりは、Apache Software Foundation（以下、ASF）という著名OSSプロジェクトを多数保有する非営利団体が、Facebookが自社OSSに付加している独自ライセンス Facebook BSD+Patents license を「Category-X」リスト（禁忌リスト）に追加したことだ。

情報自体は先月中旬のため、本記事執筆地点では非常に新しいお話である。
どういうことかというと、Webサーバーで最も多く使用されるApacheの親元が定めるOSSの非営利団体にFacebookのOSSを「やってはいけないことをしたからうちのOSSのプロジェクトでは使ってはいけない」という認定をしたということ。
これに対しFacebookは8月18日に自社のブログにおいて「方針を変えない」と発表したため、より大きな反響が広がり、炎上案件にまでなっている。

## Reactを簡単に。
Reactは2011年とか2012年のフレームワーク黎明期においてなされた革新的な仕組みを持つフロントエンド技術である。MVCにおけるVの部分のコンポーネントを重点的に作るもので、ViewとModelを分けないことが逆にコード圧縮を可能にしたりより柔軟な記述を可能にし、よりプログラマブルなコードを書いている人がなじみやすい形式となっている。WebのDOMに関する仕組みに対しての不便な部分の多くが改善されることから大きく広まり、今や世界最大のフロントエンドのフレームワークとなっている。
React NativeはWeb以外のプラットフォームにおいても活用できるように作られ、ReduxはFluxの概念を含んでReactにWebの統合フレームワークを提供した。

## ASFに限ったら
ASFのOSSはCategory-Xに属する対象に依存するようなプロジェクトを作れない。
例えばCordovaなどにReactなどのFacebook製OSSを用いる前提は不可能ということになる。
仮に世界で一番多く使われているHTTPdサーバーを例にした場合。
この件では、別にApacheHTTPdサーバーの上でreact使ったWebアプリ動かしてはいけないということではない。
だが、Apache HTTPdがreactNativeやらreduxに依存するモジュール、のような組み合わせプロジェクトを作ったらアウトということである。
そういったわかりやすい形でのアウトならともかく、もし知らず知らずにASFとFacebookのOSSを共存させて依存関係が作られるプロジェクトを作ってしまった場合が問題になる。
実際、ASFの[CouchDB](http://couchdb.apache.org/)というプロジェクトでReactが使われていたことから、携わる人の間で大きな波紋となっている。

## そんなことより大きな問題
**「Facebook及びFacebookの関連会社を特許で訴訟した場合、ライセンスは破棄され、Facebookのコードを使う権利を失う」**

つまりFacebookのOSSに関して何か特許違反があったから訴えると、FacebookのOSSを使う権利を失うということ。
もしオリジナリティあふれるコードによって自身や所属する企業が特許を所得した際、FacebookのOSSでシステムを構築していたことを弱みとして、Facebookがこの特許を侵害してきたら、取り返しのつかないことになる危険性がある。
もっとも、大多数の個人や企業がFacebookと係争する案件を持っているはずがないので、その件自体に何が問題があるのかという話だが、逆に言えば「Facebookと競合する可能性のある企業はFacebookのOSSを使わなくなる」ということ。下請けとなった時にそのことが大きくのしかかる可能性がある。
飛び火してさまざまな企業でReactが大きな火種になる危険性をはらむ以上は使用をためらうものなのだ。
そのため、例えばGoogle ~~やMicroSoft~~ などではReactを含むFacebookのOSS使用を禁止している。

(2017/9/11追記)
(2017/9/21追記修正)

MicrosoftはFacebookとはむしろ好意的な関係らしい。@noraplant42氏のご指摘もあるが、Microsoftは自社のSkypeアプリはもちろん、[React NativeのWindows向け](https://github.com/Microsoft/react-native-windows)やら[ONNX](http://www.itmedia.co.jp/news/articles/1709/08/news051.html)やらでの連携があるので、少なくとも該当はしないようである。

実際このソースの出所的には同じQiitaに該当するものがある。
[Facebookと係争中の他社はReact.jsが使えない](http://qiita.com/darai0512/items/64b2552b73aa32d4104b)
この記事は1年以上前のものであるが、この記事自体がさらに1年も前にFaceBookが行った規約改定の件を取り上げた海外ブログの話から。
記事によればGoogleとMicrosoftがReact.jsを社内使用禁止という話は、"Rob Eisenberg"という人物の証言に基づくのだという。彼は過去にGoogleでAngularを作っていて、現在はAureliaのフレームワークを作成しながらMicrosoftでdocs.microsoft.comのプロジェクトに関わっており、つまりは内部から両社の事情を把握した上での発言ということになる。
当時は「過剰に反応するまでもない」という話とスルーされかけているが、少なくとも今回のさらなる改定によって警戒しなければならない、容認できないラインを踏んだことは明白で、それをASFがある意味「保証した」ことになる。

ちなみに、このライセンスの変更(BSD+PATENTSライセンス)はその2015年に行われたのが最後のGithubコミットで、それからASFが動くまではあまり大きな話題にならなかったということになる。

## このライセンスはOSSの定義に反する。
この事項を遵守した場合、[オープンソースの定義](http://www.opensource.jp/osd/osd-japanese.html)における、特定の個人やグループへの制限をしてはいけないという項目に抵触する行為にあたる。
暴論ではあるが、つまりReactはオープンソースではない。

## これからの対策。
- ReactなどのFacebook関連のOSSを採用しない。学ばない。  
  別に個人で使う分にはと思われがちだが、企業案件として使いにくい→収益を上げるためには使いにくいということであり、さらに使用することで被るデメリットが大きすぎる。  
  もっとも、騒ぎを大きくしているのはアンチReactな方とか競合フロントフレームワークの人間なのかとも疑われることだが、実際にFacebookは自社のOSSをOSS「ではない」と自ら宣言したようなもの。それを用いるリスクはけして小さくはない。
  今から遅くない案件であれば、手を出さないに越したことはない。  
  また、今学んでいるのであればあくまで知識の片隅程度とし、すぐに他のフレームワークに学習移行することをお勧めする。
- すでに使われている場合は一時的な保守のみとし、将来的に撤退する。  
  少なくとも現行で走っている中で、問題が表面上にないのであればすぐにどうこうなる危険性はない。時間的猶予は十分にあるので、まずは目の前のシステムが問題なく稼働できるように努め、Facebookがより浸食を深める前に別システムへの移行を進めるようにする。
- 代替のフレームワークや互換性のあるライブラリの使用。  
  例えば[jQuery](https://jquery.com/)を[卒業する](http://qiita.com/naruto/items/fdb61bc743395f8d8faf)必要はない。  
  Reduxなどの統合フレームワークなら、[Vue](https://vuejs.org/)や[Aurelia](http://aurelia.io/)や[ember](https://www.emberjs.com/)や[riot](http://riotjs.com/ja/)などなどのライセンスクリーンかつ先進的なフレームワークが存在するのでそちらに移行するとよい。[Angular](https://angular.io/)は迷走している感はあるが、現行で動いているものがあるならそれを無理して移ることはない。  
  もしどうしてもReact的なコーディングをするのであれば、[Preact](https://preactjs.com/)という選択肢もある。
- 無視する。  
  そもそも自分は特許を取るほど大それたことはしないような個人だったり、導入する企業としてそもそもFacebookと競うようなことは考えにくい場合など、リスクよりメリットが上回る根拠が明確であったり、自分はReactを大切に想うという理念がある場合には、スルーの選択肢も考えらえる。  
  だが、本件は2年も以前に危惧されたことが、さらにエスカレートしたことによって発生している。  
  どうしてもというのであればそれを止める権利は私にはないが、事態がより深刻さを増しつつあることに関して、けして油断せず動向を見守ってもらいたい。

　(2017/9/13　コメントを受けて加筆)

　本件を受けてWordPressは9月14日にReactJSの使用を中止したとのこと。Reactについては、WordPressの運営会社であるAutomatic社の提供しているCalypsoにはずっと前から、WordPress本体のGutenbergには少しずつの導入を行っていた。
　今回の決定は、ユーザーの多くにReactの特許事項によるリスクを要求するわけにはいかないという配慮によるものだ。
　この話の以前より、ASFの報があってからAutomatic社側はWordPressとCalypsoのReactを除くかどうか検討中という情報があったため、この決定はその結果によるもの。ASFの行動による影響はまだまだ大きくなりそう。少なくとも、今後WordPressのためにReactを覚える必然性は消えたことになる。

　(2017/9/21　加筆)