首頁 遊戲資訊 山上的樹:開源軟體的過去現...

山上的樹:開源軟體的過去現在未來

引子 – 脆弱 (?) 的開源軟體

近日 doom-emacs 的作者 Henrik Lissner 在消失了近半年後於 doom-emacs 的 Discord 頻道發言說:

山上的樹:開源軟體的過去現在未來

大意是:

暫時拋開 doom-emacs 是什麼這一點,Henrik 提到了一個很有意思的詞:Bus Factor。

維基百科對於這個詞的解釋是:

Bus Factor 巴士係數是軟體開發中關於軟體項目成員之間消息與能力集中、未被共享的衡量指標,也有些人稱作「貨車係數」、「卡車係數」。一個項目或項目至少失去若干關鍵成員的參與(「被巴士撞了」,指代職業和生活方式變動、婚育、意外傷亡等任意導致缺席的緣由)即導致項目陷入混亂、癱瘓而無法存續時,這些成員的數量即為巴士係數。

對關鍵成員的詮釋為「對項目不可或缺」,即其掌握的項目消息(例如設計、源碼、知識)並不被眾多其他成員所熟悉、共享。在一個巴士係數很高的項目中,就算某個人突然不參與工作,也會有很多其他個人掌握相關的項目消息而足以接替他的位置。

而低 Bus Factor 其實是許多開源軟體的通病,如果你常年逛 Github,應該會發現許多具有較高 Star 數量的項目因為無人維護而遭到了廢棄。

最極端的例子是在 2022 年初知名開源工具 Faker.js 的作者 Marak 故意破壞了 GitHub 上的這個開源庫,將項目所有代碼清空,並在 commit 中留下「endgame」字樣,以至於在當天,全世界各地的前端工程師上班的時候迷惑地發現自己的項目不能正常工作並且出現了一大段亂碼。

山上的樹:開源軟體的過去現在未來

此外,他開發的另一個庫 colors.js 也受到了影響。這兩個開源軟體庫都是前端工程中舉足輕重的基礎,其中 colorjs 僅僅在 npm 上,每周下載量就超過 2000 萬次(你可以理解為只要搞前端基本都會用到)。

Marak 老兄在 2020 年曾經面臨過公寓失火導致自己無家可歸的窘境,他從開源項目中獲得的贊助不足以支撐他的日常開支。他的生活愈發困窘。以至於在 2022 年初他做了這個令人深感遺憾的無奈決定。

擴展一下,針對這個事件的有太多不同的看法了:

  • 有人認為如果你不想大公司白嫖他的作品,就應該使用 GPL 乃至 AGPL 這樣的傳染性的 copyleft License 而不是使用 MIT License,MIT 這個 License 從一開始就授權給了所有人隨意使用你的代碼的權力。只是假如用了 GPL 的話整個項目還有沒有如今的影響力就另說了(商業公司商業產品一般會在發布前組織法務來審查項目中的開源依賴以確定沒有 GPL License 的依賴,否則全都得跟著開源)。
  • 還有人認為項目發展至今,有無數開源貢獻者為項目貢獻代碼,已經是整個開源社區的共同創作了,你沒有權力把大家的努力變成 shit
  • 支持 Marak 的聲音也有,比如說有人說這些吸血蟲吸我們的血太久了,至少你讓他們感受到疼痛了!
  • 還有一些人也從 License 的角度出發,雖然大家的確貢獻了代碼,但是糾結 License 的話,這本就是 Marak 的個人項目,MIT License 在授予了所有權利之後也相應的免除了作者任何額外的義務,所以 Marak 從法理上講完全有權利這麼做。
  • 山上的樹:開源軟體的過去現在未來

    雲基礎設施的供應鏈現狀:XKCD 2347

    類似的令人惋惜的事情還有不少,比如 Fakerjs 事件的主角 Marak 就提到了 Aaron Hillel Swartz,一位天才程式設計師,參與了初代 RSS 的開發,參與成立了 Reddit,他提倡知識開源,積極反對網際網路盜版法案,為此他知行合一, 透過學院給予的訪客帳戶,大規模系統性地下載 JSTOR 上的學術期刊並公開給大眾訪問。美國聯邦檢察官隨後對他提起兩項網絡詐騙和十一項違反《電腦欺詐和濫用法》行為的訴訟, 他拒絕了聯邦檢察官提議其在聯邦監獄服刑6個月的認罪協商,兩天後,他被發現死在其於紐約布魯克林區的公寓內,自縊而死。

    山上的樹:開源軟體的過去現在未來

    回溯歷史,開源精神和開源軟體可能是這個時代最不可思議的事情之一了:

    一方面,開源軟體運動自由軟體運動,本身就不可思議,一群知識分子主動拆掉自己的專業護城河,很多情況下都是在反商業邏輯地踐行著「人人為我,我為人人」的天下大同理念,為了什麼呢?因為世界本該如此,為了整個社會的繁榮昌盛,因為這麼做很酷,也因為編寫軟體本身給其作者就能帶來無窮的樂趣——我自己畢業的時候也在想:哇,寫代碼還能 being payed,我的生活也太美好啦!

    另一方面從事實上講,不夸張地說,開源軟體支撐起了當今整個軟體行業,軟體行業被開源徹底地改變了,以至於 MIT 計算機系著名的的開學第一課 6.001 – 著名的 SICP(Structure and Interpretation of Computer Program) 現在都已經停課,教授 GJS 說:「現代軟體工程由於變得過於復雜,使得其相比於工程更像是科學,因為沒人需要從頭開始構建大型系統了——也很少有人有這個能力了」。

    你可能會感嘆說,事情變成今天這樣,一群理想主義者有如此遭遇,真是理想的幻滅啊!

    但事實真的如此嗎?

    開源軟體的動力學

    理想主義雖好,但理想必須要根植於現實才能生根發芽。讓我們請出布迪厄的「場域-資本-習性」社會學理論,來更好地解釋這一切。

    [(習性) (資本)] + 場域 = 社會實踐

    簡單來說,把某種特定的主題的由人創造和構建的社會空間(場域)當作一種遊戲,而我們每個人都是玩家。

    身為玩家,盡管在經驗層面上講我們常常覺得我們是自由的行動者,但我們每天所做出的各種決定有往往是基於可預見的、規定的行為以及他者的態度,也即在和這個遊戲本身互動的過程中形成的一種慣用策略——一種習慣(習性)。

    在這種習慣的影響下根據我們當前的地位(資本)依照遊戲的規則規則和我們所採用的策略來進行博弈和鬥爭,以占取這個遊戲中更有有利的地位;

    以上的整套主客觀一體的有機體就構成了(經由不專業的我總結的極簡版的)布迪厄的社會科學世界觀。

    從遊戲的比喻中回到現實世界,同樣,沒有任何一個人可以在不為了某種利益去行動,而這個行動的目標大機率是希望能夠增加自己所持有的資本。

    山上的樹:開源軟體的過去現在未來

    你可能會覺得,如果這樣講的話,那麼我們在生產、實踐、生活中所見到的利他行為、在藝術、科學等領域的奉獻精神,以及這篇文章所講的開源精神又該作何解釋呢?

    按照布迪厄的定義,資本不僅僅是經濟資本,還應該有包含文化資本、科學資本等資本在內的符號資本。意識到有不同形態的資本之後,布迪厄不認為社會的生產生活實踐中存在任何無功利性的行為,他以一種類似博弈論的視角認為人的所有行為都是基於對於某種利益的計算為出發點的,為了攫取某種形態的資本而已——如果不是我們所認為的一般意義上的經濟資本的話。

    在不同的場域內,不同的資本起著主導作用——簡單來說學術圈,就是科學資本,藝術和文化領域自然是文化資本,而不同的場域內的不同資本存在著某種匯率,所以我們可以經常看到一些政治或者文化精英通過發揮自己的影響力來攫取經濟資本,反之亦然。

    這里我希望盪開一筆,布迪厄理論的進步性在我看來,就是所有的場域都是由人類創造的,而不是涌現於人類社會中的,它解釋了許多現象為何如此,同時也暗示了一些看似根深蒂固的思想觀念和社會現象不必然如此,也就是說,這里不存在某種純粹應然的「天理」,如此一來,就有了推翻並進步的可能性,歷史沒有終結。

    山上的樹:開源軟體的過去現在未來

    回到主題,在這套理論框架下看待開源精神,就可以被解釋為:在開源軟體場域內,黑客們(請注意,黑客 Hackers,喜歡通過智力和創造性方法挑戰難題的人,絕非駭客 Crackers,計算機犯罪者,中文網際網路常常將這兩者混淆,造成了黑客一詞的污名化)為了諸如「聲譽」等文化資本的積累,來為這個世界貢獻開原始碼。

    這其實和農業社會出現之前,我們的祖先所生活的小型狩獵採集群體中常常出現的一種禮物文化一脈相承。在大自然豐富的物產饋贈之下,社會關系由這種禮物文化所支撐,部落酋長們常常會公開地進行一些慈善行為。正如《大教堂與集市》這本著名的黑客文化文集中說的那樣:在開源軟體這個場域內,沒有非常稀缺的「生存必需品」,早期的軟體是自由共享的,這種物質充裕導致了成功的唯一標準就是同儕中的聲譽。

    但黑客文化和軟體終究沒有止步於一個物產豐富的小圈子,不同於馮·諾伊曼教授的預言「這個世界只需要大概 5 台計算機就夠了」,如今,軟體的確在吞噬整個世界,這很好,說明在人類的生產生活實踐中軟體發揮了無可替代巨大作用。另一方面,在資本主義的作用之下,軟體行業對於其他行業的滲透也必然導致場域的交疊和融合,從而使得這個行業必然要在某種程度上服從資本主義世界的邏輯——當計算機技術和軟體行業從一群不愁吃喝的美國中產階級黑客的小圈子文化中走向整個世界,成為人類生產生活實踐中不可或缺的一部分時,開源精神的原始內核必將遭到挑戰。

    因此,開源軟體勢必要從最初那種烏托邦式的,只屬於少部分技術精英的田園牧歌走向大眾,開始擁抱支撐著這個世界 70 億人的資本主義和商業邏輯。

    無數的歷史已經說明生產關繫到另一種生產關系的變化必然伴隨著陣痛,但作為歷史唯物主義者,我們不認為從古希臘城邦的雅典式民主一路走向資本主義是開歷史的倒車,相反,這是一種極大的進步。

    開源軟體的現狀及其典型商業模式

    自從曾經的微軟以它臭名昭著的 「擁抱,擴展,滅絕」 戰略絞殺了當時的明星軟體 Netscape 贏得了瀏覽器大戰後 Netscape 瀏覽器以 Mozilla Firefox(就是今天的火狐)的名義重生,同時帶來了開源運動起,到開源廠商 RedHat 於 1999 年成功上市,再到如今的 Microsoft Love Linux,以開源軟體驅動的創業公司層出不窮,我認為可以說至少到今天為止,即使擁抱了它所「鄙夷」的資本主義商業邏輯,開源運動離失敗二字也相差十萬八千里。

    山上的樹:開源軟體的過去現在未來

    然而開源軟體的確已經分化出兩種不同的形態:

    第一種是原初的,由黑客從自身需求出發,編寫軟體並開源給更多其他黑客一同共建的烏托邦式的第一代開源軟體,像是 Vim、Emacs、Python、Linux、PostgresQL 這類經過時間的沉澱,留存到今天的鼎鼎大名的這類開源軟體基本上已經成為了開源軟體的符號標識為人們所敬仰和歌頌。

    我接觸 Emacs 就是因為覺得 Notion 實在太好用了,好用到開始審視自己的文檔工具,進而催生了一個問題:我真的要把這些可能伴隨我一生的筆記數據託管給這個雖然紅極一時但是大機率沒有我活得長的商業公司嗎?然後轉而有意地考察並使用了 Emacs 的 Org-mode 來進行筆記的寫作和任務的管理,然後發現對我來說 Ord-mode 比 Notion 不知道高到哪里去了;但是這種需求相比之下還是太小了,人類對於軟體的需求更多是更快、更好、更便宜地解決當下遇到的問題,所以誕生了第二種開源軟體。

    第二種是新生的,有商業邏輯驅動,除了踐行「人人為我我為人人」的大同理念以外,將開源作為一種戰略考量和市場策略的開源軟體(和它們背後的商業公司),像是如今的 MongoDB、ElasticSearch、Akka、RedHat、Ubuntu、GitLab、HashiCorp stack 等等,例子數不勝數,到今天圍繞著開源軟體也形成了數套經過驗證的切實可行的商業模式,如今的創業者甚至不需要說服熟悉開源的 VC 為什麼開源創業有可能成功。

    山上的樹:開源軟體的過去現在未來

    舉例來說:

    圍繞著上游核心開源軟體做發行版或者解決方案,售賣 License 或者軟體訂閱服務,換取運維層面的方面或者軟體可用性保障,這方面的例子有 Ubuntu、RedHat 之於 Linux,各家公有雲的 Kubenetes 容器服務,各家公有雲的資料庫服務(搞得 MongoDB 被白嫖到修改開源協議來禁止商業競爭)。

    基礎功能免費開源,高級的商業團隊特性閉源收費,這方面的例子有 GitLab、InfluxDB、Grafana、Envd/Modelz,HashiCorp Stack。

    圍繞著 Linux、Kubernetes、PostgresQL、Prometheus 這種復雜的大型開源軟體做咨詢服務的。

    開源的商業模式能夠走通的原因在於軟體源碼並不等於圍繞著這個軟體的所有知識:包括軟體的設計思想、架構演化的歷史、以及最重要的穩定運行的運維知識;這些對於需要穩定運行在上面的上層應用而言非常重要的知識往往只掌握在核心的開發者手中,就構成了商業化的基本邏輯。

    舉個例子,一家主營業務不是公有雲各類服務的企業因為需要使用雲伺服器、資料庫、容器服務等技術就自己從頭搭建機房開始手搓一套雲基礎設施而不用 AWS 或者阿里雲之類的公有雲服務,這顯然是不現實的。

    你可能會問,既然業務不同,也不關心源碼,那麼是不是開源軟體還有什麼要緊?

    在這些領域內如果有商業公司想要通過售賣自家的閉源軟體,比如說一套兼容了 POSIX 接口協議的作業系統,那麼他們必將受到這樣的質疑:你的軟體相比於經過了 30 年檢驗的 Linux 到底好在哪里?我們發現在現在,根本沒有企業試圖去和 Linux 競爭,相反大家都只會去做差異化的部分。

    對於開源軟體乃至軟體行業的這樣的變化,我感到十分興奮。

    為什麼這麼說呢?

    尾聲 – 人民史觀 vs 英雄史觀

    在文章開頭提到的 Henrik 無疑是那個群星璀璨的烏托邦時代在今天的繼承者,是絕對意義上的英雄,是 Henrik 編寫的 doomemacs 讓我這個 Vimer 在 Emacs 的世界中有了立足之地,甚至獲得了比 Notion 還好不少的文檔編寫體驗;是 Henrik 引領我發現了神奇的 NixOS,從此徹底告別無止境的系統配置和痛苦回滾。

    雖然針對這次的 Bus Factor 的小小風波 Henrik 表示他絕對不會放棄 Doomemacs,也承諾說會給社區一個交代。但或遲或早,英雄總會遲暮,到了那個時候,追隨著英雄的腳步的我們該如何呢?

    山上的樹:開源軟體的過去現在未來

    就文檔領域而言,從 emacs / org-mode 的繁榮社區中,站起來了 LogSeq 這樣的好用的文檔工具和創業公司(種子輪 4.1M$),在 Notion 的陰影下也誕生了開源的 AFFiNE(Pre-A 輪上千萬美元融資)這樣的明星團隊。

    類似的事情如今在軟體行業的各個領域都層出不窮,而這一切都是一代代開源軟體和理想主義者前輩為如今的世界鋪下的堅實基礎設施,這個行業的巨頭幾乎已經無法像二十年前那樣輕松地就能壟斷一整個行業。我相信,基礎設施的進一步完善,在未來將會打破社會精細化分工這一虛假的神諭,每個人都可以自由地運用這些工具做點什麼有趣的事情。

    英雄雖然會遲暮,但不同於歷史上的一些其他悲劇,開源軟體場域內的人民沒有背叛英雄,相反,他們沿著英雄們開創的路真正地改變並改造了這個世界,如今,開源軟體曾經的「敵人」微軟,也成為了開源軟體和開源運動的踐行者。

    開源軟體從大學的象牙塔走向資本的擁抱是歷史的必然,而開源精神的理想沒有隨著這種轉變而磨滅,相反,它催生出一個人們不把全部希望寄託在英雄身上的嶄新世界。希望我們的理想都能像開源軟體般在堅實的土地上生根發芽,伴著世界的污泥,從中吸取養料,茁壯成長,長成一棵參天大樹。

    全文完,感謝您的觀看,有疑問或者還想深入聊聊的話歡迎來找我討論

    參考

    TBD(我之後一個個找來寫上 TAT,現在的話文章中對於任何資料感興趣的話可以直接問我)

    來源:機核