訂正
「BSD Licenseは暗黙に特許の許諾を含んでいるので、PATENTSによってそれを制限するのは正しくない行為である」という話の流れをようやく理解しました。コメントありがとうございます > @Cat_sushi 。
記事は残しておきますが、間違いばっかりですので、コメントまで読んでください。
私の理解を書いておく。間違っていたら教えてください。ちなみに、僕もこんなファイルがあることは全く気付いていませんでした。
あっ、「パテントトロールに対する条項だから」という口約束は信頼しないことにしています(もしくは、今はそこは考えずに条文だけを考えます)。
適当に追記を繰り返しているので、少し矛盾があるかもしれません。
前提
- ReactはBSD License
- BSD Licenseには特許に関する取り決めがない
- 2014年10月までは素のApache License 2だった https://github.com/facebook/react/commit/dcf415c2b91ce52fd5d4dd02b70875ba9d33290f
- LISENCE https://github.com/facebook/react/blob/master/LICENSE
- PATENTS https://github.com/facebook/react/blob/master/PATENTS
PATENTSに書かれていること
- Faecbookが持っている特許のうち、Reactに関係するものは、Reactを通して利用する限り、Facebookから利用者にライセンスされる
- react以外のあなたが書いたコードとか他のコードとの組み合わせが特許を侵害する場合には、それらについてはライセンスされない
- 上記のライセンスは、次の場合に自動的に通知なしに取り消しされる
- あなたとあなたに関連する企業が、FacebookまたはFacebookに関連する企業を、特許侵害で訴えた場合(あなたの訴えに関連する特許がReactに関係するかしないかは関係がない)
- ただし、Facebookが先にあなたを訴えていた場合に、それへの対応としてあなたが訴えを起こした場合は例外で、Reactに関する特許のライセンスは失効しない
僕の感想
Facebookはきっちりしてて素晴らしいと思い、Facebookが先に訴えていた場合の例外の設定を見て気前がいいなあと思った。(私には、Facebookを訴える予定がない。)
補足:昔はAPL2だったことに気づきました
この感想は「ただのBSD Licenseだと思っていたら実はBSD License + PATENTSであることに気づいた場合」のものである。(僕はそうだった。)
「昔からReactを使っていてApache License 2だと思っていたら、いつの間にかBSD License + PATENTSに変更されていたことに気づいた」場合は、確かに知らない間にFacebookの権利が強められているわけで、それについて誠実でないという批判をすることはできると思う。(2014年の話だけど。)
もしReactのリポジトリにPATENTSがなかったらどうなるか
ここはとても怪しい。
BSDLが特許の利用を許諾しないという私の解釈は誤りである可能性が高くて、少なくとも一般的ではないようで、誤りであればこの話はただの間違いです。
BSDLによって特許の利用が暗黙に許諾されるとする場合、PATENTSは一方的に利用者の権利を制限するものになるので、BSDL+PATENTSを受け入れられないとすることは全く合理的である。
PATENTSがなかった場合には、BSD Licenseには特許に関する条項は含まれていないので、Reactを使うとFacebookが保有する特許をあなたが勝手に使っている状態になる。つまり、Facebookはいつでもあなたを訴えることができる。(実際に訴えることはまずないだろうけど。)
PATENTSによって、特許がライセンスされていることになるので、FacebookがReactに関連する特許の件であなたを訴えることはない。
PATENTSがない場合よりも、ある場合の方が、Facebookに訴えられるリスクを減らせるので、より安全である。(残念ながら、Facebook以外から訴えられるリスクは変わらない。)
Apache License 2からの変更について
Reactは2014年の10月にライセンスを変更している。
Apache License 2からBSD+PATENTSに変更された。Apache License 2はそれ自体に特許の利用に関する条件を含んでいるが、BSDには含まれておらずPATENTSが補完するものとなっている。
PATENTSの内容は、Apache License 2が規定する特許に関する条項よりも、Facebookに有利なものになっている。つまり、Apache License 2の頃から使っている人にとっては、一方的により厳しい条件を突きつけられたわけで、それが正義でないという見方はできると思う。
PATENTSの内容について注意が必要な人
「Facebookを特許の侵害で訴える予定があって、Reactを使っている人」は、訴えを起こす前にReact以外に切り替えた方が良い。(でもその場合、Facebookの特許について一通り調べているだろうし、当然PATENTSの存在に気づいているだろうから、何か新しい問題が生まれたわけではない。)
とはいえ
Reactと全然関係ない、何か例えば広告とかO2Oとかに関連する特許で殴り合いになることを考えると、実は全く関係ないというわけでもないと思い直したりもした。
- Facebookが保有する何かの特許で保護されているものを実は勝手に使っていて、金を払えと迫られる場合 → Reactには関係ないので特にリスクが高まるわけではない。金を払うか、あなたが持っている特許を根拠にFacebookを訴えるかして戦えばいい。
- Facebookを、あなたが保有する何かの特許に基づいて訴えて金をせしめようとした場合 → Reactに関する特許のライセンスが失効するので、Reactを使えなくなる。というか、多分Reactか何かのソフトウェア製品を使ってるじゃんお前こそ金を払えなどと言われて、諦めることになる。(この場合にはReact以外にMySQLとかPHPとかやばいんじゃない?知らんけど。)
- つまり、Reactを使い続けるには何とかしてFacebookに先に訴えさせるように挑発するなどの戦略が求められる。
- Facebookの他の特許についてどうなっているかは知らん。
他の方法はあるか
利用者にとっては、より制限が緩い方がいい。(Facebookがライセンスを取り消す権利が制限されている方が嬉しい。)そのようなものとしてはApache Lisence 2がある。Apache Lisence 2は
- 権利者(ここではFacebook本体)を訴えた場合に取り消されるかもしれない
- 自動的に取り消されるわけではない
- ライセンスされているソフトウェア(ここではReactのこと)に関する特許について訴えた場合のみ取り消しができる
となっていて、PATENTSに定義されているものよりライセンス取り消しの権利が制限されている。
仮に、ReactをApache Lisence 2にして同時にPATENTSを削除すると、より利用者にとって安全になる。(が、Facebookにとってはリスクが増えるので、わざわざ変更しないと思う。)
ReactっぽいReact以外のライブラリを使えばいいのでは?
(理論的には)Facebookに特許侵害で訴えられるリスクだけが増えるので、賢い選択ではないと思う。
OSS的にはこれは差別ではないか?
OSIのOSSの定義では、差別を禁止している。これは問題がないのだろうか。
- 僕の直感では、これが差別であるかというとかなり難しいと思うけど、でも差別かもしれない(この件に関しては、僕の直感は全然アテにならない)
- ただし、これが差別になる場合には、Apache License 2は差別にならないのか?
- これを差別と呼んだとしても、patentとcopyrightとは別の概念なので、OSSの定義には依然として含まれるのではないか?
よくわかりません。