一年之后,React.js 许可协议再起争端
| 2017-07-29 09:23:00 评论: 3
在 2016 年 7 月,Facebook 公司的 React.js 开源许可协议曾引起激烈争论。一年过后,该协议再次成为开源社区的头条新闻。
背景介绍
React.js 是 Facebook 推出的一个用来构建用户界面的 JavaScript 库,起源于 Facebook 的内部项目,用来架设 Instagram 的网站。
- 2013 年 5 月,Facebook 将 React.js 开源。
- 2016 年 7月,React.js 开源许可协议中的附加专利条款引发争议。
- 2016 年 11 月,Facebook 发布官方问答,对附加专利条款进行澄清。
- 2017 年 7 月,Apache 基金会禁止使用遵循 BSD 许可证 + 专利开源协议的 JAR 包。
Apache 基金会的立场
2017 年 7 月,针对 Facebook 公司的 BSD 许可证 + 专利开源协议,Apache 基金会提出了如下建议:
- 任何新项目、子项目或代码库都不允许使用遵循 Facebook 公司 “BSD 许可证 + 专利开源协议”的 jar 包。换句话说,如果你之前没有使用过,之后也不允许去使用。这种许可协议被 Apache 基金会列为 X 类别(Cat-X)。
- 如果你一直在使用,并且在 release 中已经这么做了,那么在 2017 年 8 月 31 日之前,你将暂时从 X 类别中被排除。在此之后,任何和所有使用 Facebook 公司 “BSD 许可证+专利开源协议”的产品都将被 Apache 基金会禁止使用,你必须找到采用了合适许可证的替代品,或者放弃使用。这种情况没有例外。
- 上述条款没有涵盖的任何其他情形也禁止使用。
X 类别被定义为“Apache 产品中可能不允许的许可证”,目前包括 GNU GPL、GNU LGPL、BCL、BSD-4-Clause 等许可证。有关禁用许可证列表可以在 Apache 基金会网站上查询。
Facebook 的 “BSD 许可证 + 专利开源协议”
React 是一种流行的用于创建丰富用户界面的 JavaScript 技术,最初来源于 Facebook,并被广泛使用。该技术依据 BSD 许可证进行开源,但是,它的附加专利条款需要特别注意(以下为节选)。
Facebook, Inc.(Facebook)特此授予软件的每个接收人(“你”)基于任何 “必要权利要求” 的永久的、全球范围的、免版税的、非排他的、不可撤销的许可(遵守以下终止条款),可以制造、曾经制造、使用、销售、许诺销售、进口以及转移软件。
如果您(或任何您的子公司、关联方或代理商)直接或间接地启动了专利主张,或从专利主张中直接获取经济利益,本协议授予的许可将自动终止,恕不另行通知:(i)针对 Facebook 或其任何子公司或关联方;(ii)全部或部分来自于 Facebook 或其任何子公司或关联方的任何软件、技术、产品或服务的专利主张针对任何一方;或(iii)与软件相关的任何一方。尽管如此,如果 Facebook 或其任何子公司或关联方首先对你提起专利侵权诉讼指控,你在该诉讼中针对与软件无关的一方提起专利侵权反诉,你所被授予的许可不会因反诉而在本段第(i)款的规定下终止。
如果你的项目中正在使用或打算使用 React,你可能需要去咨询律师了。由于专利条款的限制,你不能做任何构成与 Facebook 竞争的事情。如果你采取法律行动或者以其他方式挑战 Facebook,那么你使用 React 的许可会被立即撤销。
如果你与其他使用 React 的公司发生法律纠纷,那你使用 React 的许可也会被撤销。Aurelia 框架创建者、Angular 2 开发团队前成员 Rob Eisenberg 表示,这就是 Google 公司和 Microsoft 公司的员工在工作中不允许使用 React.js 的原因。
虽然这只是在理论上对大多数采用 React 的项目可能产生的影响,但仍然值得特别注意,并且,类似 WordPress Calypso 这种已经与 React.js 建立了深刻联系的项目,可能会受到限制。运营 WordPress 的 Automattic 公司对一些小官司并不陌生,但这次很可能成为 Facebook 这个大公司的诉讼对象。
Drupal 和 WordPress 等许多开源产品都在采用 Facebook 公司的 React.js 技术。对于 Automattic 公司这种拥有开源产品的公司来说,未来如果被 Facebook 认定与 Facebook 构成竞争,将会是一个棘手的问题。
目前 Facebook 正如日中天,以上可能性发生的几率比较小,但如同 Yahoo 公司一样,Facebook 总有一天会从神坛跌落。到那时,Facebook 公司很有可能会从竞争角度充分利用许可协议所赋予的权利。所以,如果你打算利用 React.js 创建一个有可能终结 Facebook 神话的产品,最好先咨询你的律师。
但是,美国专利法非常复杂,尤其是在知识产权相关问题上,往往难以解释。从 Google 和 Oracle 公司有关安卓使用 Java 的争议可以看出,解决此类问题往往需要好几年时间。这意味着你必须要财大气粗,即使是你最后赢了官司。
Facebook 公司的官方问答
React 的技术优势难以挑战。从开发者构建 web 用户界面方面来说,React 引发了一场变革。Facebook 在某些方面不太清楚的许可协议(BSD 许可证+专利)在开源开发者中间引发了激烈争论。开源社区继续坚持对“邪恶公司”的抵制,而 Facebook 很容易被归为此类公司。
2016 年 11 月,Facebook 澄清了其在 React、React Native 和其他许多项目中广泛采用的开源许可协议方面的立场。与任何法律文本一样,软件许可协议非常难以解释。Facebook 提供了一个 FAQ 来回应经常被问到的问题。其中包括:
- 如果我创建了一个竞争性产品,那么 Facebook 公司 “BSD 许可证+专利许可协议”中的附加专利授权是否会被终止?
- 如果我用专利侵权以外的理由起诉 Facebook,那么 Facebook 公司 “BSD许可证+专利许可协议”中的附加专利授权是否会被终止?
- 如果 Facebook 公司首先起诉我专利侵权,而我反诉 Facebook 公司专利侵权,那么 Facebook 公司 “BSD许可证+专利许可协议”中的附加专利授权是否会被终止?
- Facebook 公司 “BSD 许可证+专利许可协议”中的附加专利授权的终止是否也会导致版权许可的终止?
对 1、2、4 的回答是明确的“否”,而对于第 3 个问题,FAQ 中规定,反诉主张不得与 Facebook 任何专利相关。上述官方说法比较可靠,在这个 Facebook 即便成为专利流氓也所获甚微的时刻,Facebook 仍然坚持其对 React 许可协议的看法。
使用 React.js 的开发者怎么办?
Apple 和 Microsoft 等行业巨头对于采用 React 的态度令人关注。有报道称,由于担心法律纠纷,这些巨头们已经禁止在项目中使用 React UI 库。但显然这是一个引发争议的问题,因为两家巨头都发布了使用 React 的网络资源或库。
Microsoft 提供了一个用于扩展 PowerPoint 和其他 Office365 产品的 React UI 组件库。Apple 开发者网站上的 API 文档采用 React.js 构建。
以上两款产品都不是两家公司的核心产品,Apple 也不太可能发布一款利用 React Native 编写的 iOS 邮件客户端。值得注意的是,虽然两家公司都看到了利用 React 创建 web 用户界面的价值,但它们的法律部门也没有因此遇到麻烦。
所以对大多数应用案例来说,似乎专利诉讼被严格限制在使用中的具体工具上,在这种情况下无需过分担心。由于使用了宽松的 BSD 许可证,对于开发者来说,React 实际上比使用传染性的 GPL 许可证的库更为安全。
Facebook 公司的数据库引擎 RocksDB 正准备将许可证更改为 Apache 2.0。但 React.js 是一个特殊的项目,Facebook 公司似乎有意继续保留专利条款。
虽然商业实体很乐意在产品中使用 React 授权代码,尽管 WordPress 等许多受欢迎的开源项目仍将继续采用 React,但开源社区对 Facebook 不断捍卫和澄清这种特殊授权感到了厌倦。
因此,如果你想找到类似 Solr 这种采用 React UI 的 Apache 项目,可能还需要很长时间。幸运的是,React 本身并非独一无二,你的项目可以采用与 React 类似的替代品,例如 Preact 或 Inferno,而不用担心遇到 React 的专利授权问题。
参考来源
- https://react-etc.net/entry/your-license-to-use-react-js-can-be-revoked-if-you-compete-with-facebook
- https://react-etc.net/entry/react-patents-facebook-license-faq-adoption-by-apple-and-microsoft
- https://react-etc.net/entry/apache-foundation-bans-use-of-facebook-bsd-patents-licensed-libraries-like-react-js
-
https://github.com/facebook/react/blob/master/PATENTS
(题图:facebook.github.io)