React 路/粉/黑 都该了解的 React license 争议

产生背景

React.js 萌芽于 Facebook 内部开发 Instagram 的项目中,是一个用来构建用户界面的优秀 JS 库,于 2013 年 5 月开源。

然而,在 2016 年 7 月,React.js 开源许可协议中的附加专利条款(Additional patent grant)引起了激烈争论。

请看 React 官方团队的描述React is BSD licensed. We also provide an additional patent grant.

即:BSD 许可证 + 专利许可证。

BSD Lisense: https://en.wikipedia.org/wiki/BSD_licenses,没有异议。

问题就出在了专利许可条款: https://github.com/facebook/react/blob/master/PATENTS,节选原文如下:

The license granted hereunder will terminate, automatically and without notice, if you (or any of your subsidiaries, corporate affiliates or agents) initiate directly or indirectly, or take a direct financial interest in, any Patent Assertion: (i) against Facebook or any of its subsidiaries or corporate affiliates, (ii) against any party if such Patent Assertion arises in whole or in part from any software, technology, product or service of Facebook or any of its subsidiaries or corporate affiliates, or (iii) against any party relating to the Software.

敲黑板!

From my point of view: 如果你使用了 React,你不能做构成与 Facebook (包括其子公司及其合作方)竞争的事情,一旦你做了,就会有极大的潜在危险。

  • 由 i 可以清楚的看出:因为如果你采取专利主张(诉讼)或者其他方式挑战 Facebook(包括其子公司及其合作方),那么你使用 React 的许可会被立即撤销。
  • 由 iii 可以看出:你也不能与其他使用 React 的公司发生(专利)纠纷,否则你使用 React 的许可也会被撤销。

======= update 2017-09-17 (感觉漏掉了点什么) ======

Notwithstanding the foregoing, if Facebook or any of its subsidiaries or corporate affiliates files a lawsuit alleging patent infringement against you in the first instance, and you respond by filing a patent infringement counterclaim in that lawsuit against that party that is unrelated to the Software, the license granted hereunder will not terminate under section (i) of this paragraph due to such counterclaim.

  • 上文表示:对于 Facebook 主动提出的专利诉讼而被告者进行的专利反诉,与 React 无关的,该协议授予用户的专利权利不会自动终止。与 React 有关的,你们猜 =,=

曾经一位来自某乎的同学言辞激烈的抨击我文中 “你不能做构成与 Facebook (包括其子公司及其合作方)竞争的事情” 等说法的合理性。试想一下 FB 有天诉讼你家公司基于 React 的某产品(related 无疑),那么恭喜你家公司已经立于不胜之地了。

在我这里,附加的专利协议可不只是防御协议。

====== end ======

先声明在 AG/Vue/React 的各种撕逼大战中我始终是没有站过边的,但是项目中确确实实 React 用的多,Vue 业余有接触,AG 几乎没了解多少。

而且,在我的观点里,开源软件 和 专利/软件著作权之类,根本是南辕北辙的两个方向甚至是截然不同的价值观。

引用一句话:开源社区会继续坚持对 ‘邪恶公司’ 的抵制,而 Facebook 很容易被归为此类公司。

业界反应

针对外界争议, 2016 年 11 月,Facebook 发布官方问答: https://react-etc.net/entry/react-patents-facebook-license-faq-adoption-by-apple-and-microsoft,对附加专利条款进行澄清。

不过我个人的观感是:与其说是澄清,不如说是对于其 BSD 许可证 + 专利许可证的解释和坚持。

至今以来最重磅的反弹:

2017 年 7 月,Apache 基金会禁止使用遵循 BSD 许可证 + 专利开源协议的 JAR 包。

Apache 基金会具体建议如下:

任何新项目、子项目或代码库都不允许使用遵循 Facebook 公司 “BSD 许可证 + 专利开源协议”的 jar 包。换句话说,如果你之前没有使用过,之后也不允许去使用。这种许可协议被 Apache 基金会列为 X 类别(Cat-X:Apache 产品中可能不允许的许可证)。

如果你一直在使用,并且在 release 中已经这么做了,那么在 2017 年 8 月 31 日之前,你将暂时从 X 类别中被排除。在此之后,任何和所有使用 Facebook 公司 “BSD 许可证+专利开源协议”的产品都将被 Apache 基金会禁止使用,你必须找到采用了合适许可证的替代品,或者放弃使用。这种情况没有例外。

上述条款没有涵盖的任何其他情形也禁止使用。

当然 Google、MS、Apple 之类的巨头们不用担心,核心业务有自己的开源或非开源库做支持。非核心业务即便有使用,重构成本也未必多高。但是一些小公司,如运营 WordPress 的 Automattic 的小公司,很可能成为 Facebook 这个巨头的诉讼对象,且一旦出事,则难以招架。

也许是要缓和气氛?

有意思的是,Facebook 公司的数据库引擎 RocksDB 已于 7 月 27 日将许可证正式由 BSD 许可证 + 专利许可证 更改为 Apache 2.0https://github.com/facebook/rocksdb/pull/2589

但 React.js 貌似是一个特殊的项目(74K+ stars =,=),Facebook 公司似乎有意继续保留专利条款。

再引用一句话:开源社区对 Facebook 不断捍卫和澄清这种特殊授权感到了厌倦

最新进展

8月19日, Facebook 一方又有了新的解释:https://code.facebook.com/posts/112130496157735/explaining-react-s-license/

上文的重点:

  1. 专利许可证的存在主要是防御无良的专利诉讼;
  2. 其他大公司发布的开源软件并不涉及核心产品中的技术,我们的 React 不一样。出于保护核心产品,我们不得不加 patent grant;
  3. 最后黑一下 ASF:他们对于使用此许可证的项目的兼容性的决定不是一个合法决定

我想说:

  • 关于 1: 解释了专利许可证中的第 iiiiii 条的广泛用途,但并没有看到对竞品进行潜在限制的解释,避重就轻
  • 关于 2: 所以我可以理解为:开源的巨大影响力 + 社区的无偿支持 和 专利对于利益的保护你们都要兼得的意思 =,= 舍不得就别开源,开源了就请按照基本法好嘛 :)
  • 关于 3: 呵呵

Facebook 别扯淡了,真别扭。。

以上~

At last

喜欢这篇文章的话,去 Github Repo 给个 star 吧亲~

本文文字及图片出自 elevenbeans.github.io

余下全文(1/3)
分享这篇文章:

请关注我们:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注