Facebook React 项目添加的附加专利条款

局长 局长 发布于2017年09月20日 收藏 1 评论 2

关于 Facebook 在 React 项目的开源许可协议上添加专利条款这件事,去年就已在前端技术圈引起了激烈的争论。

最近,React 项目的开源许可协议又开始被大众关注起来了,主要原因是不少科技公司纷纷宣布选择弃用 React,其中国内的如百度和阿里巴巴内部的软件工程团队都不约而同地选择弃用 React,国外的如 WordPress,也在近日宣布不再使用 Facebook 的 React JavaScript 库。

之所以这样做,皆是因为 Facebook 的 BSD+Patents 许可协议(即 BSD 许可证 + 专利许可证)。此前,React 项目采用的是 BSD 开源许可证,BSD 是十分宽松且对商业友好的开源许可证。但在 2016 年 7 月,React 在其开源许可协议中添加了一项附加专利条款 (Additional patent grant),这引起了激烈的争论。

React 官方团队的对此的描述是:React is BSD licensed. We also provide an additional patent grant.

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.

归纳下来,可以理解为:如果你在项目中使用了 React,你不能做构成与 Facebook (包括其子公司及其合作方)竞争的事情,一旦你做了,会有极大的潜在危险。

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

  • 由 iii 可以看出:你不能与其他使用 React 的公司发生(专利)纠纷,否则你使用 React 的许可也会被撤销。

所以,在 Facebook 专利条款的约束下,使用了 React 的科技公司不得不重新考虑对 React 的选择。那么,React 的许可协议到底会给使用者带来怎样的影响?

下面转载了一位从业者对于国内互联网公司停止使用 React/React Native 的看法:

工作关系,精通美国专利法,在前东家后台支持过几次前两年美国公司最大规模专利诉讼。这里友善的的告知大家,本题里为 Facebook 洗地的那几个回答涉及专利法的内容都是错得离谱的

如果你在一个有国际化目标的公司工作,公司有出海的计划,而公司内部形成了使用 React 的风气,项目中大量使用,那很遗憾,你们公司所有各国专利事实上全部免费赠予 Facebook 使用。

整个事情的逻辑很简单,举个例子来说明:公司各项目前端各类东西全部用 React 来玩,用户体验一流效果美观,人人夸奖。突然一天,发现自己最核心的、和 web/UI/react 完全无关的大批核心专利被 Facebook 拿去商用、给 Facebook 带来巨大商业收益并且进而和你们产生直接商业竞争,此时怎么办?起诉 Facebook?别逗,Facebook 根据协议,在你提出诉讼的那刻自动撤回所有 React 相关专利授权,你们所有基于 React 的系统同时侵权滥用 Facebook 的React 专利。前端的东西不那么好藏对吧?Facebook 马上拿了证据去联邦法院、甚至各主要国家法院,要求关停你所有侵权的基于 React 的服务。届时你能有什么话说?公司前台商用的系统只得被动地从 React 全部立刻迁移出去,换到没有和 React 关系的平台上,出海阻碍、项目成本、损失、诉讼风险谁来扛?

以百度为例,按照 React 目前协议,要想不让 Facebook 事实上免费大胆用自己人工智能、自动驾驶方面获颁的专利,唯一选择就是不让公司的前端用 React。这笔帐,真的不难算。

上面有小白给 Facebook 洗地,说 Facebook 是防御性的使用这些条款,只要你不去告 Facebook 专利侵权就没事。这个逻辑思维能力真的不适合写软件。为什么某公司会告 Facebook?告 Facebook 什么?这两个问题不复杂,真的要说清。是告 Facebook 专利侵权对吧?当你们公司选择 React 来构建大量系统的前台,Facebook 上来什么也不干,先让你用公司全部专利做抵押,这叫防御?拿到你们的专利抵押,Facebook 可以直接免费大胆商用你们的专利,而你们却不能轻易起诉,因为一旦你们起诉,你们的 React 系统就是人质,Facebook 马上可以反诉你们侵权,请问这叫防御?最悲惨的,你以为你 React 粉,积极内部推广 React,残酷的事实是,你内部 React 系统越多,迁移成本越高时间越广,被人霸占专利的风险越高:因为他们手里人质更多。

还有一个洗地说法是很多别的美国公司诸如 netflex、微软、苹果也用 React。拜托,那些美国公司手里和 Facebook 业务相关的专利你去看看,微软、苹果怕和你 Facebook 打专利官司?Imagination 说苹果一做 GPU,就踩专利地雷阵,结果大家都看到了。微软的专利 portfolio 蓝星无敌,谁碰谁出局。netflix 核心竞争力最根本的是手里的内容也就是片源,也不大搞别的互联网项目,BATJ 肯把业务覆盖面缩到 netflix 一样窄,再来对比谈用 React 的风险才有意义。

这个事情要特别当心,React 是前端的东西,detectability 没的说,这不同于你后台某服务器程序用了某某专利、某某库,只要你自己不去开源,别人无法发现难以证明。而且和一般的 patent retaliation clause 不一样,React 这事情反复报道,涉及的 React 专利清晰明确,到时候扯皮的机会也没有。用某某库的时候 retaliation clause 要当心,自己被公司授权去开源某项目,license 里的 patent grant clause 要当心。

评论里有人反复用“案例”来质问,基本是主张防范是浪费,要出事了用事故说明问题,这逻辑本身就不对。RocksDB 以前也同样的 BSD+Patent 协议,知道自己后台系统用的,别人用了 Facebook 也无法知道更无法证明,钓鱼成功概率接近零就自觉改了协议,(在改协议的时候有意或者无意的把 LevelDB 的协议去掉被老对头 lmdb 作者抓现行)。反观 React,受关注更多,却死活不改协议,为什么?同一个公司,都是火热的两个开源项目,同样的协议上的问题,如此大的区别对待,还不够说明 Facebook 在 React 协议上有小算盘?

作者:我做分布式系统 来源:知乎
转载已作者获得授权,非商业转载请注明出处。

不知道大家对此是怎么看的,欢迎大家理性发表自己的看法和观点。