1
前兩天看到開源中國發了兩篇很有意思的文章:《FreeBSD大敗局》[1]和《Linux敗局已定——駁FreeBSD大敗局》[2]。也許很多人只當這是兩個作業系統互噴的八卦,但在我看來,這場爭論帶出了一個很重要的問題:自由軟體與開源軟體究竟哪裡不同?FreeBSD 所繼承的BSD 某種程度上是「自由軟體」精神的發端。而 Linux 則是開源軟體的最佳代表。
我們會在很多文章裡面看到諸如以下的表述:
-
「自由軟體」強調軟體自由,使用者有權利得到所執行的程式的原始碼;
-
「開源軟體」繼承了自由軟體程式碼開放的理念;
-
「自由軟體」與「開源軟體」被並稱 Free and Open Source Software (FOSS)
-
……
這些講法都沒有錯,但他們卻往往給人造成一種困惑:「開源軟體」與「自由軟體」是一樣的,那麼為什麼要有兩個概念呢?
我的回答是「自由軟體」與「開源軟體」是兩回事,他們的主力參與者是兩種人。從宏觀上看,不同人群都會有共同點。(比如,上帝和安拉都禁止人們盜竊。)但人與人的差異往往在細微之處。
2
「自由軟體」的土壤是小型機 (minicomputer) 與 UNIX 作業系統。DEC[3] 公司發明的小型機成功把計算機從大公司普及到了大學與研究機構,使得更多人有機會接觸到計算機。但前提是你得能進入頂尖的大學或研究機構,這便是標題中所指的「精英程式設計師」——來自精英階層的程式設計師。
「開源軟體」則源於 X86 個人電腦 (personal computer),網際網路與 Linux 作業系統。個人電腦進一步把計算機從大學、研究機構普及到了普通人家。你不再需要先進入精英階層才能接觸程式設計了。這樣的「草根程式設計師」很多沒有計算機理論基礎,也沒有學習過什麼高等數學知識,他們有的是濃厚的興趣。其中佼佼者會成長為「程式設計師精英」,比如 Linus。
但你可以想象「精英程式設計師」是如何看待這些草根的,我參照一下《還有人記得Linux之前,那個理想又驕傲的BSD嗎?》[4] 中的的內容:
不僅是 Bill Joy,整個 BSD 的傲氣都十分外漏。Marshall Kirk McKusick 後來深度參與了 FreeBSD,他就曾表示,90% 的 committers 所貢獻的程式碼都不能用,還剩下的一小部分則需要「were peed upon to make them smell like Berkeley」(不翻譯了,大家自行體會。)而這也是FreeBSD 儲存有整個等級制度的原因。
lola,《還有人記得Linux之前,那個理想又驕傲的BSD嗎?》
除了階層上的優越感,裝置上的鄙視鏈也是個重要的因素。DEC 開發的小型機當年一度把 IBM 的大型電腦 (mainframe) 打得找不著北。IBM 如何應對 DEC 的強勢崛起?除了不斷完善大型電腦,真正的殺手鐗就是做出了 PC 個人電腦。當然任何產品初期的時候都是比較稚嫩的。因此不難想象,那些用過小型機的「精英程式設計師」是如何看待用著玩具般的 PC 的計算機「草根」們。
回顧過去的歷程,顯然「精英程式設計師」輸給了「程式設計師精英」。有趣的是今天中國網際網路大廠們的校招風格依然是「精英程式設計師」的思路,特別重視本科學歷。在業務上似乎也取得了不錯的成果。但在技術上呢?
大廠內部「精英程式設計師」們也很難展開合作。比如資料庫,一個大廠沒幾個互相 PK 的資料庫團隊,都不好意思說自己投入了基礎軟體的研發。
現在我們正處於又一個計算環境變革的時代,「程式設計師精英」與開源模式能不能繼續發揚光大呢?
附錄
[1]: FreeBSD大敗局
[3]: Digital Equipment Corporation
[4]: 還有人記得Linux之前,那個理想又驕傲的BSD嗎?
本文轉載自「燃燼1400」公眾號,作者:顧鈞Jun,原文連結: