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.0。https://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/
上文的重點:
- 專利許可證的存在主要是防禦無良的專利訴訟;
- 其他大公司發布的開源軟體並不涉及核心產品中的技術,我們的 React 不一樣。出於保護核心產品,我們不得不加 patent grant;
- 最後黑一下 ASF:他們對於使用此許可證的項目的兼容性的決定不是一個合法決定
我想說:
- 關於 1: 解釋了專利許可證中的第 i、ii、iii 條的廣泛用途,但並沒有看到對競品進行潛在限制的解釋,避重就輕
- 關於 2: 所以我可以理解為:開源的巨大影響力 + 社區的無償支持 和 專利對於利益的保護你們都要兼得的意思 =,= 捨不得就別開源,開源了就請按照基本法好嘛 :)
- 關於 3: 呵呵
Facebook 別扯淡了,真彆扭。。
以上~
At last
喜歡這篇文章的話,去 Github Repo 給個 star 吧親~
推薦閱讀:
※前端必備技能——本地伺服器的搭建&配置
※清新脫俗的 Web 伺服器 Caddy
※python如何抓取本地數據包?
※PHP寫的API如何防止拒絕服務攻擊?
※怎樣通俗的講解 PHP 和 Apache 的關係?