天天看點

Facebook在代碼裡下毒,百度身受重傷。。。

白首相知猶按劍

前兩天看到有朋友分享說,WordPress停用了react。

今天,在逛知乎時看到了另一個問題

别細看這圖,我賭你看不懂。。。

Facebook在代碼裡下毒,百度身受重傷。。。

嗯。。。用人話來說就是百度内部要求他們的程式猿不要再使用一個叫 React

的開源産品的代碼了。

而且,現有的已經使用過這些代碼的産品要改寫!(其實幾乎有很多要重寫了)

Facebook在代碼裡下毒,百度身受重傷。。。

有朋友會問 React 是毛啊?

這是 Facebook 搞的一套賊好用的前端開發工具,它能提供一些很好的效果,别的開發者可以免費拿來在它的基礎上去做自己的産品,為了更多人更好的使用它,Facebook 把這東西開源了。(免費和開源還不太一樣,下面說)

基于 React 的前端效果

Facebook在代碼裡下毒,百度身受重傷。。。

這次出問題主要是因為 React / React Native 工具的開源協定 Facebook BSD + PATENTS 。

整天聽沒事兒就扯什麼開源,Github 啊什麼的,不太懂程式設計的朋友們可能覺得我在裝哔。

那麼,今天就好好說說開源的事兒。

Facebook在代碼裡下毒,百度身受重傷。。。

開源軟體和免費軟體不是一個意思,開源軟體的源代碼是公開的(感覺像是句廢話?

Facebook在代碼裡下毒,百度身受重傷。。。

),但免費軟體不一定。

舉個栗子,有兩個好人 A 和 B 都願意免費給你提供食物,但是好人 B 告訴你他的制作菜單,而 A 隻讓你吃。

Facebook在代碼裡下毒,百度身受重傷。。。

這差別就大了。。。

首先,“ 免費的程度 ” 不一樣。(這個比喻很奇怪但确實可以這麼了解)

如果 A 哪天突然要找你收錢了,那你隻好要麼不吃,要麼就換個途徑擷取食物,因為你隻從 A 這裡獲得做好的食物,你自己還是沒辦法做。

但從 B 這裡你擷取的是菜單,你可以自己做,是以對于 B 來說收錢一般是沒什麼意義的事情。(還是存在可能有的人覺得 B 做的好捐款的)

Facebook在代碼裡下毒,百度身受重傷。。。

其次,可以修改。

如果你覺得 A 的食物不好吃,你要麼不吃,要麼給 A 提個意見,要麼含着淚咽下去。。。

如果你覺得 B 的食物不好吃,你可以适當的根據食譜來修改一下,做出自己喜歡的食物,成本也不高,就是買買菜而已。

Facebook在代碼裡下毒,百度身受重傷。。。

在計算機剛出現的時候,用計算機的人都是專業研發人員,大家寫出來的程式都會分享源代碼,友善給大家解決問題,本着類似于學術鑽研的态度在搞軟體。

後來,軟體規模和複雜度越來越大,計算機越來越平民化和普及,有的商業軟體公司為了保護技術和維持盈利,開始對軟體閉源,這樣使用者就無法知道原理了。

微軟當時的老大比爾 · 蓋茲在私有軟體的推廣上起到了重要的作用,認為軟體具有知識産權,讓開發者僅僅靠熱情去無償開發和維護軟體是不太合理的。

微軟的 BASIC 程式設計軟體

Facebook在代碼裡下毒,百度身受重傷。。。

不過軟體業并沒有是以漸漸完全走向閉源,而是産生了分化,形成了開源和閉源觀點對立的情況。

這就不得不提一個開源社群舉足輕重的人物(他本人也真的很重,是個大胖子),他叫 Richard Stallman。(這個人差評君講過,傳送門)

Richard Stallman

Facebook在代碼裡下毒,百度身受重傷。。。

當時許多開發者們看着 UNIX 作業系統從開源慢慢走向商業化和閉源感到痛心疾首,于是這位仁兄發表了 GNU (GNU is not Unix)宣言,号召大家一起做一個開源的作業系統,裡面運作的所有的軟體也都是開源的。

畢竟槍杆裡面出政權,你收費我就起義!

Facebook在代碼裡下毒,百度身受重傷。。。

接着,他用法律術語寫了一份通用公共許可證 (General Public License ,簡稱 GPL ),放今天講就是一份開源協定。

Facebook在代碼裡下毒,百度身受重傷。。。

遵循 GPL 的項目有這麼幾條規則:

(1) 軟體誰寫的著作權就是誰的
(2)誰都可以用這個開源項目做任何事情,而且與原作者無關
(3)誰要是用了這個軟體的源代碼,那麼他的作品也必須遵守 GPL,也得開源
(4)在之前那個吃飯的例子裡講,上面的話就是你改良了某人的菜單,那麼你也得公開你的菜單。
(5)為什麼要幹這種有錢沒得賺吃力不讨好的事情?      

因為一旦遵循了這樣的協定,開源項目可以集中大家的智慧去得到改良,熱愛自由的開發者們可以形成一個社群一樣的環境來交流技術。

比如說著名的版本控制服務網站 Github 上就有大量的開源項目

Facebook在代碼裡下毒,百度身受重傷。。。

現在除了 GLP,還衍生出了其他的開源協定。

Facebook在代碼裡下毒,百度身受重傷。。。

文章開頭提到的 Facebook BSD + PATENTS 就是開源協定的一種~

但它到底有什麼問題,以至于讓百度甯可費這麼大力氣重做他們的東西都要棄用這個協定的産品呢?

因為根據協定内容,隻要你在用 Facebook 家的 React 在做項目,那麼 Facebook 可以反過來用你的項目專利,而且和 React 無關的專利 Facebook 也可以用。

同時你還不能告他侵權,否則你就會失去 React 的授權,Facebook 可以先告你!

其實 React 挺好用的

Facebook在代碼裡下毒,百度身受重傷。。。

可能朋友們對于百度的印象不太好,但這回是 Facebook 做的不太道地,因為根據這個開源協定,百度的人工智能,自動駕駛等等專利都可能受到威脅,這一點 Facebook 的這個協定确實有點太流氓了。

而且不光百度,Apache 也因為開源協定的原因禁用了 React。

Apache 軟體基金會支援了很多不錯的非營利性開源項目

Facebook在代碼裡下毒,百度身受重傷。。。

其實在科技圈,因為這個開源協定鬧出來的幺蛾子事情還真不少。。。

還記得這個少年創業家麼?

Facebook在代碼裡下毒,百度身受重傷。。。

他的産品被原作者指抄襲

這個 00 後搞了個叫貓桌面的東西

Facebook在代碼裡下毒,百度身受重傷。。。

這個東西抄襲了另一個作者的開源代碼,叫 “ 墨鏡貓 ”

Facebook在代碼裡下毒,百度身受重傷。。。

連名字都還叫 “ 貓 ”,你這抄襲也忒不走心了吧。。。

差評君去開源庫裡看了看,發現原作者發現被抄襲了之後,更改了開源協定,改成了差評君之前說的 GPL

Facebook在代碼裡下毒,百度身受重傷。。。

有趣的是,他還在改動日志裡罵了幾句娘。。。

Facebook在代碼裡下毒,百度身受重傷。。。

這就是典型的不遵守開源協定的案例。

再比如說區塊鍊熱潮中的一個叫量子鍊的項目,圖為知乎匿名網友扒出來的開源協定問題。(話題連結:https://www.zhihu.com/question/57090778)

Facebook在代碼裡下毒,百度身受重傷。。。

一直以來開源項目的公開透明讓不少别有用心的人鑽了孔子,這實在是違背了開源社群的初衷。

但有些公司還在協定裡打着保護知識産權的幌子耍流氓。。。

比如 Facebook 這樣本身有着技術卻去污染開源社群的行為受到了許多争議。

還有人把 Facebook 的點贊倒過來 diss 了一下

Facebook在代碼裡下毒,百度身受重傷。。。

開源本身的目的是讓軟體項目和科研項目一樣,互相分享知識,讓前人給後人發明的工具,讓後人更好地改變世界。

而做這樣的事情,是需要很大的熱情的,是以極客君覺得私有軟體也沒有錯,程式員也是要吃飯的。

但是,拿開源去搞一些不正當的行為,用大家的美好夢想去填充自私的欲望,這樣的行為真的不合适。

“ 小公司不用擔心,Facebook 應該不在乎~ ”

目前,百度内部在自研 React Native 的替代方案。

這是否意味着國内大公司在 Facebook 條款的限制下,也有逐漸停用 React / React Native 技術棧的可能? 知乎是否會停止使用React? 阿裡還會使用react嗎? 騰訊還會使用react嗎?

各位geek朋友們如何看待此事呢?^_^

歡迎通路GBin1.com