當前位置:
首頁 > 科技 > Facebook認慫React專利,但問題依舊沒有解決?

Facebook認慫React專利,但問題依舊沒有解決?

作者丨程墨

隨著 Facebook 連續發布使用 MIT 許可協議的 React v15.6.2 版和 v16 版,最近一段時間搞得沸沸揚揚的 React 許可協議事件終於塵埃落定了,不過很多吃瓜群眾可能還搞清楚怎麼回事,這裡我就來講一講來龍去脈。

1

React 到底惹了什麼麻煩?

一切都要從開源軟體的許可協議 (license) 說起。

搞開源軟體,並不是說把源代碼公布出去就完事,還有很多問題要考慮。比如,源代碼有 bug 害得用戶損失了一個億算誰的責任,有人想繼續修改源代碼重新發布怎麼辦,涉及到軟體專利怎麼辦……為了解決這些問題,開源軟體往往要隨源代碼包含一個許可協議,當然,要是每個開源軟體開發者都起草自己的許可協議,那他們估計也沒多少時間寫代碼了,所以,往往是採用現成的開源軟體許可協議。

現成的開源軟體許可協議很多,和這起事件相關的三個,也是開源軟體中很常用的三個,就是 BSD、MIT 和 Apache v2。

Facebook 曾經默認對自己開源出來軟體採用 BSD 許可協議,但是,在 2015 年的時候,Facebook 給自己開源軟體增加了一個專利附屬條款,React 也就隨之改為包含這個專利附屬條款的 BSD 許可協議,這也就是這起事件的源頭。

Facebook 為什麼要增加這個條款呢?因為 BSD 和 MIT 這兩種許可協議都是沒有專利相關內容的,換句話說,雖然源代碼是授權出去了,但是代碼中如果涉及到一些專利問題,就扯不清了,軟體專利這事情糾纏起來是非常狗血的,於是 Facebook 用這個專利附屬條款來做自我防禦。

在這裡可以看見專利附屬條款的內容,滿文都是搞法律人才寫得出的辭彙,冗長而且晦澀,但可以簡單一點解釋,以 React 為例,就是這樣:Facebook 擁有 React 中的一些專利,但是 Facebook 不會利用這些專利來找用戶你的麻煩,不過,如果用戶你有一天利用「任何專利問題」來找 Facebook 的麻煩,那麼 Facebook 有權立刻停止授權你使用 React。

這裡我們首先認識到,用什麼許可協議,完全是開源軟體貢獻者的決定,其他人如果想強制要求 Facebook 用什麼許可協議不用什麼許可協議,就和要求微軟開源 Windows 和 Office 源代碼一樣可笑。

Facebook 在 2015 年做了這個許可協議更改之後,招來一些非議,但是也沒有引起大風波,直到幾年後,在今年 7 月份,開源組織 Apache 軟體基金會將 Facebook 的這種帶專利附屬條款的 BSD 列為 Category X,這個 Category X 就是 Apache 基金會的黑名單,如果哪個開源軟體是基於這個黑名單上的許可協議,那就不能在 Apache 基金會的開源項目中使用,這是為了防止軟體依賴樹被「污染」。要知道,BSD 協議本身不在 Category X 黑名單上,所以 Apache 這個決定就是針對 Facebook 的專利附屬條款,害怕這個附屬條款會給 Apache 帶來麻煩。

這個決定導致基於 React 的很多 Apache 項目不得不重寫。

Apache 這麼一搞,一下子把 Facebook 推到風口浪尖,大批大批開發者請願希望 Facebook 更改 React 的許可協議,畢竟,誰也不希望有朝一日自己的軟體被停止使用。

面對這些請願,Facebook 一開始是拒絕的,依然認為包含專利條款的 BSD 許可協議是最好的選擇。

然後,在 9 月份,WordPress 的創始人 Matt 也表示 WordPress 也會離開 React,值得一提的是,Matt 在聲明中盛讚 React 是一個了不起的軟體,並且說這樣做是為了規避風險。

WordPress 的決定應該是推動 Facebook 做出改變的最主要原因,要知道,這世界上每四個網站就有一個是用 WordPress 構建的,WordPress 不用 React 影響太大,所以,Facebook 終於發表聲明,表示會在新版 v16 中放棄原有的帶專利附屬條款的 BSD 許可協議,轉而採用 MIT 許可協議。

事實上,既然做了這個決定,就不用等 v16 了,React 在 v16 發布之前發布了 v15.6.2,作為 v15 的收官之作,已經改為 MIT 許可協議。

2

事情到此為止了,然而,真的到此為止了嗎?

我們重新回顧一下這個事件,期間有不少人渾水摸魚謾罵 Facebook,各種曲解那個專利附屬條款,各種誇大 Facebook 會利用這個條款整治其他公司的可能性,所以,這裡需要重新審視一下這個條款。

首先要知道,這個條款是一個防禦性的法律措施,為的是防止有人利用專利問題起訴 Facebook,條款中是 Facebook 先授權用戶使用專利,然後再防止用戶因為專利問題反訴 Facebook。

事實上,自從實施這個條款以來,Facebook 還從來沒有利用這個條款取消某個組織或者個人對自己的開源軟體的使用許可,React 也得到廣泛的應用,Microsoft、AirBnB 等大型公司都在大量使用 React。當然,Microsoft 是 Facebook 的股東,AirBnB 也沒有和 Facebook 有商業競爭,可是,就連 Twitter 也在使用 React,Twitter 可是和 Facebook 有最直接的競爭關係,他們都不怕,還有什麼好怕的呢?

所以說,覺得 Facebook 會利用這個條款來打擊競爭對手,那真是想多了。

當然,擔心惹上麻煩而棄用 React 的 Apache 和 WordPress,也完全應該理解他們的做法,因為他們的軟體不只是自己用,而是要發布出去,被千百萬其他用戶使用,這樣牽扯到的就不只是 Facebook 和 Apache、WordPress 之間的關係,還要應對這世界各色各樣用戶的法律需求。法律上的事情,小心無大錯。

React 已經改為 MIT 許可協議了,問題就徹底解決了嗎?

很可惜,也許解決了一個問題,但是誕生了新的問題。

前面已經說過,BSD 和 MIT 許可協議都不包含專利保護內容,但是 Apache v2 許可協議有相關內容, Apache v2 對於專利問題的處理可以這麼解釋:如果你起訴這個開源軟體中用到的專利,那麼從你起訴那一刻起,對你的許可協議就取消了。

理論上說,如果某個農業公司告 Facebook 侵犯了他們水稻基因培育的專利,根據專利附屬條款條款 Facebook 可以要求這個農業公司不許用 React,這個農業公司的官方網站如果用 React 寫的話就麻煩了,這個虛構的故事聽起來就有點扯,但也看出這個專利條款的殺傷力很大。

這樣一看,Apache v2 似乎是一個關於專利問題更好的選擇,但是 Facebook 選擇了 MIT,一個同樣沒有專利保護內容的許可協議。

Facebook 為什麼選擇 MIT 呢?這個問題外人無法回答,只能猜測,最大的可能就是,MIT 是 github 上最受歡迎的許可協議,所以乾脆從善如流,就選最熱的許可協議好了,省去很多口水。

那 Facebook 為什麼不選擇 Apache v2 呢?很可能 Apache v2 並不滿足 Facebook 的要求。

好了,現在 React 換成 MIT 許可協議了,雖然看不見那個煩人的「專利附屬條款」,但是專利的問題依然存在,如果將來某個組織和 Facebook 產生了專利衝突,怎麼辦呢?那時候,就看誰的專利池裡貨更多,就看誰能請到更厲害的律師,就看誰更有錢打曠日持久的官司。

這麼一看,似乎還真不如最初帶一個專利附屬條款的 BSD。

這是開源世界對 Facebook 的勝利嗎?首先,這不是一場戰爭,這只不過是開源軟體世界中的一次討論,所以用不上「勝利」這個辭彙。

在這場大戲中,除了 Facebook、Apache 和 WordPress 這幾個主角,還有眾多的開發者參與其中作為群眾演員。

大家有訴求,發出自己的聲音,這沒有問題,很多開發者都有禮有節地向 Facebook 請願,但是,也可以聽到很多極其刺耳的聲音,對 Facebook 各種侮辱批鬥。

如果覺得觀念不合就要批鬥,這和專制有什麼區別?

不管怎樣,Facebook 選擇用什麼樣的許可協議,都是他自己的事情,你可以請求或者建議他做出改變,但是靠謾罵和中傷就是沒素質,難道真的以為 Facebook 是被罵才做出改變的嗎?好好說話不行嗎?整個事件中最大的推動力量是 WordPress 而不是口出穢言的噴子。

React 是一個非常優秀的軟體,Facebook 作為這個軟體的創造者應該受到尊敬,當我們在享用別人的開源成果時,應該想的是自己能夠做什麼來幫助別人,而不是見風就是雨的嘲笑中傷挖井的人。

不管怎樣,React 將會繼續演進,作為目前最受歡迎的 UI 庫之一,讓我們共同為 React 社區的繁榮努力奮鬥吧。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 InfoQ 的精彩文章:

大數據篩選下的三十篇技術好文,送給太想進步的你!
Spring技術佈道師眼中的微服務:事件驅動型微服務詳解
這才是DevOps、雲原生乾貨內容的正確打開方式
三張通行證,為「高級工程師進階」加滿血量!
Yahoo開源實時大數據處理服務系統Vespa

TAG:InfoQ |