“自由軟件”與“開源軟件”的破產(chǎn)
我接觸開源最早要追溯到小時(shí)候無知瞎玩易語言的時(shí)期。當(dāng)時(shí)我發(fā)現(xiàn),很多令人垂涎無比的模塊和軟件,很想對(duì)其工作原理一探究竟,可是絕大多數(shù)作者都把源碼藏著掖著,往往敗興而歸。那時(shí)候我就在想,要是大家都能積極共享代碼,互相學(xué)習(xí)研究,還能憑自己心意修改使用,那多是一件美事啊。所以中學(xué)時(shí),我對(duì)FOSS和Linux的沉迷和狂熱也就成了必然,雖然現(xiàn)在回看,那只不過是個(gè)毛頭小子關(guān)在家里的孤獨(dú)自嗨罷了。而且那時(shí)候純憑興趣做事的我,學(xué)什么都不精,學(xué)編程卻對(duì)算法一無所知,接觸現(xiàn)代編程語言太晚,最大的成就是瘋狂裝過上百遍各種操作系統(tǒng),結(jié)果就成了個(gè)啥都聽過啥都不會(huì)的萬金油?,F(xiàn)在專業(yè)不對(duì)口,學(xué)藝又不精,找個(gè)好工作也找不到。說到這就想起剛看的《孤獨(dú)搖滾》,可以說深有感觸,可人家波奇醬畢竟實(shí)打?qū)嵉木毘鰜砹诉€有3w粉,只是不會(huì)團(tuán)隊(duì)配合罷了;而我小時(shí)候的計(jì)算機(jī)折騰全走歪了,后來好不容易變得世故了,又覺得編程索然無味,浪費(fèi)掉了寶貴的大學(xué)四年,現(xiàn)在才如夢(mèng)初醒。唉,跑題了。
成年以后,我好不容易從一個(gè)混世魔王變成了好歹有幾個(gè)朋友的正常人,也重新建立了三觀,開始理解了世界和社會(huì)的運(yùn)行邏輯。等到我終于稍稍重拾對(duì)計(jì)算機(jī)技術(shù)的熱情之后,重新開始Archlinux日用并回顧了開源往事,很多小時(shí)候看不明白的事逐漸變得明晰,“Free & Open Source Software”在我的眼里也走下了神壇。其實(shí)對(duì)我來說“走下神壇”并不是第一次,我曾經(jīng)對(duì)某系列、主機(jī)游戲、FF14等都產(chǎn)生過狂熱,但經(jīng)過一系列事后,它們?cè)谖倚闹凶罱K都祛魅了;不過這次的FOSS是一個(gè)的很好的契機(jī),可以借此話題抒發(fā)一番。
我為什么對(duì)自由軟件基金會(huì)敬而遠(yuǎn)之
我第一次看《revolution os》這部紀(jì)錄片時(shí),理查德·斯托曼“不應(yīng)該有密碼”的言論就讓我有些訝異。他認(rèn)為系統(tǒng)并不需要密碼,因?yàn)檫@給了管理員控制所有用戶的手段。為了證明自己的觀點(diǎn),他把密碼系統(tǒng)黑了,給使用者貼出提示,“為什么不用回車做密碼呢?”以小見大,你可以從這件事窺見他的理念。不可否認(rèn),他創(chuàng)建的FSF,以及旗下的GNU軟件遍布了全世界的計(jì)算機(jī),源代碼開放的程序和軟件成為了全球互聯(lián)網(wǎng)的基石。就像在比爾蓋茨給家釀?dòng)?jì)算機(jī)俱樂部寄那封信前,沒人想過要限制軟件的復(fù)制行為;沒有斯托曼和FSF,人們可能也不會(huì)想到“把軟件的源代碼完全公之于眾而不會(huì)被輕易剽竊是可行的”。道路就在這里出現(xiàn)了分叉,兩條路越行越遠(yuǎn),直到水火不容。
但是FSF的理念從來就不是“公布源碼”這么簡(jiǎn)單,他們是帶著鮮明的政治理念來的,堅(jiān)信消滅私有軟件能讓世界變得更美好。雖然我也覺得代碼能自由共享很美好,但他們讓我認(rèn)為太超過了。誠(chéng)然為了沖鋒在對(duì)抗的前線,不極端是無法堅(jiān)持下去的;但這也讓GNU和FSF變成了一種新型宗教,教徒將“自由軟件”視為世界唯一的救贖,而堅(jiān)信私有軟件一定是劣質(zhì)的,不足取的。說實(shí)話,如果我沒用過幾個(gè)私有軟件,還真能給他們哄住。我一直就弄不明白一件事,既然微內(nèi)核這么難開發(fā),你們的GNU/Hurd一直是一盤爛攤子,為什么微軟就能做出NT內(nèi)核呢?難不成是因?yàn)樗麄冇绣X,人多?不至于吧,“開源”的開發(fā)模式不是最厲害的唯一真神嗎?
Cutler對(duì)個(gè)人電腦不屑一顧,一接手就把OS/2早期代碼統(tǒng)統(tǒng)扔掉,從零開始打造個(gè)沒有歷史包袱的操作系統(tǒng)。NT設(shè)計(jì)極具前瞻性,它是用C語言寫的,可移植到其他芯片架構(gòu),不像早前的OS/2和Windows只能跑在x86上面。80年代精簡(jiǎn)指令集與復(fù)雜指令集的學(xué)術(shù)論戰(zhàn),使得業(yè)界普遍相信x86終將被效率更高的RISC所取代。NT支持x86、DEC Alpha、MIPS等多個(gè)架構(gòu)平臺(tái),等于給未來加道保險(xiǎn)。
NT隊(duì)伍不光對(duì)OS/2舊代碼不屑,連IBM設(shè)計(jì)的OS/2 API也看不上。隨著IBM與微軟關(guān)系惡化,NT程序員們乘機(jī)游說Gates,拋棄OS/2 API,用32位的Windows API取而代之。NT雖然先進(jìn)但需要的配置高,所以主打工作站和服務(wù)器市場(chǎng),主流PC市場(chǎng)則交給Windows。兩者之間由Win32 API連接,這樣Win32應(yīng)用兩個(gè)系統(tǒng)都可以運(yùn)行。等將來時(shí)機(jī)成熟,Windows能夠自然過渡到NT上(Windows XP取代Windows 98)。如此一來打消了人們對(duì)Windows前景的顧慮,微軟在路線圖上勝過了IBM。
——Windows對(duì)決OS/2 (下)https://zhuanlan.zhihu.com/p/80631718/
至于說“自由軟件”至今做不到的事情,那可海了去了,別的不消說,開源軟件里就沒有幾個(gè)藝術(shù)水平過關(guān)的,且藝術(shù)水平與其激進(jìn)程度成反比,很多軟件的GUI設(shè)計(jì)都等于沒有,字里行間全寫著“能用就行”。哦對(duì)哦,我忘記無腦崇拜純命令行的人還有不少呢那沒事了。我知道你們都看微軟不爽了,任天堂估計(jì)更是眼中釘肉中刺,可是你們的supertuxkart跟馬車8一比就是依托答辯,僅論畫質(zhì)都簡(jiǎn)直像是從ps2穿越來的,而且這么多年始終如一,笑嘻了。總之,我只有一句話送給自由軟件狂熱信徒:我知道私有軟件的惡心之處,但麻煩走出去看看世界,不要一葉障目,如果你真的想對(duì)抗私有軟件,起碼先認(rèn)真學(xué)習(xí)它們憑什么能占領(lǐng)世界。
另外一方面就是FSF作為一個(gè)產(chǎn)品遍及世界的,影響力大的重要組織,他們的行為卻顯得相當(dāng)幼稚,就像小孩鬧脾氣,急于讓所有人都知道自己有最好的新玩具一樣。舉個(gè)例子,人們?cè)谡務(wù)撻_源操作系統(tǒng)的功績(jī)時(shí),往往都會(huì)用“Linux系統(tǒng)”的字眼,而忽視Linux內(nèi)核之上還有一整個(gè)GNU套件。可以看出FSF對(duì)這件事怨念頗深,我在他們的官網(wǎng)上找到一整版的吐槽,“請(qǐng)叫GNU/Linux,不是Linux Operating System!”說實(shí)話,你說的對(duì),但你這種原地喊的做法,懂的人已經(jīng)懂了,不懂的那幫用錯(cuò)名的人也根本聽不到,這種祥林嫂行為沒有任何意義。當(dāng)然,公開聲明都是冠冕堂皇的,本質(zhì)上都只是背后更復(fù)雜的利益糾葛的折射。Linus拒絕GPL v3事件(感興趣可自行搜索)標(biāo)志著雙方的決裂,我很難不認(rèn)為這有所關(guān)聯(lián);事實(shí)上這件事也暴露出FSF在“傳教”上有多激進(jìn)。我也認(rèn)為設(shè)備硬件鎖妨礙了用戶的自主控制權(quán),所以我會(huì)選擇買能解bl鎖的小米;但是最大的問題不在v3協(xié)議本身,而在制定和推廣協(xié)議的組織上。看過了許多不同的“小圈子”之后,我的最大的感悟就是,有人的地方就有江湖,就有利益和派系斗爭(zhēng),無一例外,而當(dāng)組織起來的是一群腦子很軸,不通人情的程序員時(shí)……你FSF同樣逃不出這個(gè)窠臼,自命清高不可取。
當(dāng)然,像某位“擼linux”一樣急不可耐地狂懟FSF,其行為實(shí)際上和FSF是一路人,我知道你們很急,但你們先別急。客觀而言,我會(huì)尊敬FSF做出的貢獻(xiàn),畢竟日用Linux還是在享用著他們的成果,但就僅此而已了。他們的思想過于激進(jìn),“教徒”純度實(shí)在太高,原批看了都要自愧弗如,所以我的選擇是“敬而遠(yuǎn)之”。
“開放源代碼”從妥協(xié)的第一步開始,處處都有資本的影子
正因FSF實(shí)在過于激進(jìn),產(chǎn)生分裂幾乎就是一種必然??陀^而言,分裂出去的“Open Source”成為了一門顯學(xué),時(shí)至今日,it公司幾乎或多或少地都在涉足開源,乃至很多不搞計(jì)算機(jī)的人都聽說了這個(gè)詞匯(然后覺得“開源”等于免費(fèi),樂)。我上面批判了半天“自由軟件”,讀者想必會(huì)認(rèn)為我站“開源”這派吧?錯(cuò)了,我對(duì)他們也充滿了不屑,因?yàn)橥讌f(xié)的代價(jià),到今天已經(jīng)暴露無遺。
首先必須要弄清一件事,就是“資本為什么愿意搞開源”。記住資本的本性永遠(yuǎn)是逐利的,沒有利益的事情,他們絕不會(huì)干,絕不會(huì)是因?yàn)樗麄儽婚_源的理念打動(dòng)了,這個(gè)因素就算有,那也只是次要的和冠冕堂皇的因素。你也許已經(jīng)注意到了,迄今為止有企業(yè)背景的知名開源項(xiàng)目,大多是基礎(chǔ)項(xiàng)目而不是成品項(xiàng)目,我認(rèn)為這是有原因的。就像我上面說的,我不認(rèn)為“開源”是萬靈藥,但它當(dāng)然證明了自己無可替代的優(yōu)勢(shì),那就是因?yàn)橛纱罅恐驹刚咴诰€工作,更新迭代快,修復(fù)速度快;人們憑熱忱而非工資做事,所以代碼質(zhì)量高且穩(wěn)定;并且所有人都能審計(jì)代碼以確保安全性,不用擔(dān)心被植入什么奇奇怪怪的東西。這些特點(diǎn)在基礎(chǔ)項(xiàng)目上體現(xiàn)的淋漓盡致,而對(duì)公司來說,享用這些好處的代價(jià)幾乎為0,白嫖社區(qū)成果,豈不美哉!但在成品項(xiàng)目層面,這往往是公司的核心支柱,絕不可輕易示人,開源弊大于利;而且也像我上面說的,開源軟件在人機(jī)交互設(shè)計(jì)上拉垮是常態(tài),指望一群只會(huì)悶頭寫代碼的古板直男社區(qū)做這事實(shí)在是不靠譜,還不如雇幾個(gè)專業(yè)的人。
有人或許這時(shí)候要反駁我了,那像Chromium和虛幻引擎這種公司龍頭項(xiàng)目不也是開源的嗎?那我認(rèn)為,對(duì)于這種巨型項(xiàng)目來說,開源與不開源,已經(jīng)沒有多少區(qū)別了。Linux內(nèi)核累積到今天的代碼都已經(jīng)成天書了,而這些巨型項(xiàng)目,其代碼本身就是山岳般的技術(shù)壁壘,人家擺明了告訴你,你有本事就弄懂它,弄得懂算我輸。如果你有能對(duì)它DIY的能力,早就被一堆公司捧成座上賓了,用得著搞開源?比方說很多游戲公司壓根就不敢動(dòng)引擎,升級(jí)了引擎項(xiàng)目會(huì)崩,不升級(jí)又跟進(jìn)不了新功能,特別是嚴(yán)重依賴官方提供的附加功能的項(xiàng)目,除非養(yǎng)得起能對(duì)引擎庖丁解牛甚至自研的團(tuán)隊(duì)。
說白了,當(dāng)今的“開源”,同樣是一門生意。Linux催生了新的工作崗位,自然也催生了各種賣課的(比如“*****就該這么學(xué)”,笑);而能走到聚光燈下的項(xiàng)目,背后都有資本的影子,資本只會(huì)提攜聽話順從,能賺錢的仆人,余下的任其自生自滅。由公司扶持的所謂的“開源項(xiàng)目”,企業(yè)不僅能通過開源閉源版本“雙軌制”等方式吸血,更是能隨時(shí)掌握生殺大權(quán)(說的就是你開源冥燈Oracle)。而很多所謂“投身開源”的技術(shù)大牛,最后也只是把自己的項(xiàng)目做了委身企業(yè)或者跳槽的投名狀,畢竟,誰會(huì)跟飯碗過不去呢。CentOS前腳剛進(jìn)土,后腳人家創(chuàng)始人就另起Rocky Linux爐灶,只是這光怪陸離的現(xiàn)狀的一個(gè)縮影。
我寧可做個(gè)行動(dòng)者
偶然間我翻到兩個(gè)某乎問題,一個(gè)是關(guān)于systemd的,一個(gè)是關(guān)于fork()以及Unix和Windows處理多進(jìn)程的方式的。就我而言,我關(guān)心的不是systemd本身的優(yōu)劣,而是直到今天,開源社區(qū)居然還要為這種問題搞派系斗爭(zhēng),實(shí)在令人失望。不可否認(rèn),人們經(jīng)常需要選個(gè)邊站個(gè)隊(duì),因?yàn)檫@樣讓自己很有安全感,但這樣會(huì)導(dǎo)致偏見和盲信。
命令行操作計(jì)算機(jī)更迅速,所以GUI就一無是處嗎?
fork()這個(gè)設(shè)計(jì)真的一無是處嗎?或者說就一定好嗎?這個(gè)設(shè)計(jì)是不小心的還是故意的?
Unix哲學(xué)真的是需要永遠(yuǎn)固守的東西嗎?但一個(gè)無所不包的程序就真的好嗎?(典型如微信,滑稽)
……
經(jīng)過不少事情后,我越發(fā)開始理解,沒有一種理論是值得崇拜,值得奉為圭臬的,因?yàn)槿魏卫碚摱紵o法解釋世間發(fā)生的全部事情,它遲早會(huì)遇到自己解釋不通的,甚至自相矛盾的時(shí)刻,即使你再試圖給它打補(bǔ)丁也是如此。包括我這篇文章,你要是全信了那你就輸了。FSF離現(xiàn)實(shí)太遠(yuǎn),而“開放源代碼”又太沉溺于世俗,這就是他們的弱點(diǎn)所在。不過試圖在它們二者間尋求調(diào)和,也是錯(cuò)誤之舉,一味調(diào)和只會(huì)像老胡那樣墻頭草,失去行動(dòng)的力量。為了改變世界,選邊站隊(duì)是不可避免的,但是又要保持距離。
就我個(gè)人而言,我用開源軟件,也用閉源軟件,不挑不揀,只要好使且不觸犯我的底線,就是好軟件;但我不相信自由軟件,不相信“開源”,也不相信閉源軟件,先質(zhì)疑再質(zhì)疑,最后保持質(zhì)疑。它們?cè)谖倚闹卸家呀?jīng)破產(chǎn)了,但這恰恰才叫合理。
玻爾在門口掛馬蹄鐵招好運(yùn),別人問他相不相信,他說,“不,我不相信,但別人告訴我這樣真的有效?!?/p>