Linux 的成功,為什麼會帶來「寫一個作業系統不難,難的是生態構建」的錯覺?

近年來,「開源」作為一個熱詞,被越來越多的人關注,它甚至走出了IT圈,被寫進「十四五」 規劃裡。與此同時,被譽為「軟體靈魂」的作業系統,在開源浪潮下,迎來了突破性發展。但在另一方面,一直以來,我們經常聽到一種說法:寫一個作業系統並不難,難的是生態的構建。本文試圖從開源的 Linux 作業系統的演進出發,討論開源生態的構建。

作者 | 張家駒 紅帽大中華區首席架構師

責編 | 王子彧

出品 | 《新程式設計師》編輯部

本文節選自新程式設計師 005

本文節選自《新程式設計師 005》

開源的 Linux 作業系統

開源的 Linux 作業系統

「開源」指的是開放源程式碼,即程序的源程式碼對所有人都是公開的,任何人都可以免費閱讀,甚至可以按照一定的規則修改。同時,程序的源程式碼被視為軟體最重要的資產,誰拿到了源程式碼,誰就可以掌握軟體最重要的核心技術。因此,傳統意義上,開源軟體被認為對商業不夠友好,即很難通過開源開發模式在軟體中獲利。那麼,大家可能會有這樣一個疑問或擔憂:如果沒有商業的支撐,開源軟體模式如何得以維繫?因此,「開源商業化」,也是很多專家、學者、企業家、創業者共同關心的話題。

Linux 作業系統,可以認為是迄今為止最成功的開源軟體的典範,長盛不衰。它的發展路徑給我們提供了一個參考實現,即以這種方式的開源軟體是可以發展起來的,並在一定程度上實現商業化,但 Linux 的發展路徑是不是開源軟體發展的最好方式?這種方式在過去 30 年中運行良好,在今後是不是還能一如既往地蓬勃發展?我想這應留給時間去檢驗。

Linux,狹義上,是指由 Linus Torvalds(以下簡稱 Linus) 發起並帶領來自全球的 Linux 社區開發者共同開發的 Linux 核心,它是 Linux 作業系統的核心。大家日常使用的 Linux,往往是指廣義的 Linux,即 Linux 發行版。Linux 發行版是包括 Linux 核心在內的大量開源軟體的集合,核心實現的是作業系統最核心的功能,此外還有很多其他重要功能,如編譯器、圖形化、生產力套件、伺服器端程序等。這些也都是開源軟體,並且由不同開源社區開發。將這些來自不同社區的開源軟體集合在一起,形成有機的整體,對外展現為一個統一的作業系統,這部分工作往往也是通過社區的力量來完成,長期以來被大家所熟知的 Fedora、openSUSE、Debian 等都屬於這一類。

談到這裡,大家可能會發現,當我們談起開源作業系統時,就自然而然地提到了開源社區、開源生態。因為開源軟體最大的一個特點,就是它不是由某一家公司、某一個組織、某一個社區開發的,而是由眾多的公司以及個人和來自不同社區的眾多開發者共同開發的。不同的開源軟體之間,本身就形成了一個生態,我要調用你的 API,同時我又要為其他軟體提供服務。這些不同開源軟體彼此之間的協調,不是由「超級管理者」事先規劃的,而是在發展過程中自發形成的。

為什麼要開源?為什麼要選擇 Linux?

既然開源軟體的開發是一個「鬆散耦合」的關係,即每個項目有各自的發展目標,不同項目之間雖彼此協調,但自主性很強,也沒有統一的管理者進行統籌規劃。選擇開源軟體,是否意味著「不可控」,軟體發展方向、週期、安全性都不可控?那麼,我們為什麼要選擇開源軟體?為什麼要選擇 Linux?

先講一個小故事。最近幾年 Rust 語言比較火,大家知道,傳統的 C/C++ 語言在開發時,很容易造成記憶體洩漏,而 Rust 則被認為是更安全的語言,且適合底層開發,所以用 Rust 編寫底層程序(如作業系統),也被學界和業界所追捧,Rust 也開始進入 Linux 核心。作為程式設計師的我們,可能天然想到是 Rust 會取代 C 成為 Linux 核心主要語言?在最近 Linus 接受的採訪中,Linus 也提到Rust 進入 Linux 才剛剛開始,同時著重強調了 C 語言的種種優點。我在這裡不想陷入任何孰優孰劣的「語言之爭」, 因為那將是一個「哲學問題」。但是,這似乎從側面反映了開發者的喜好很重要,開發者的技能積累以及既有程序程式碼積累到一定程度,想要徹頭徹尾改變或者從頭再來其實很難,裡面有太多前人智慧的結晶。作業系統內部極其複雜,你可能會有很多好的想法,但實現它們並不是一蹴而就的,而 Linux 已經在那裡。

因此,選擇開源,是因為開源是一個寶藏。選擇 Linux, 是因為在三十多年的積累當中,Linux 已經演變為穩定的作業系統和強大的生態,具備穩定的核心,擁有眾多的硬體及應用支持、快速的迭代能力。

開源加速創新,通過開源的方式,全世界聰明的頭腦都可以參與其中貢獻自己的想法和程式碼,這種討論和貢獻是完全開放的。我們常常發現針對某一個具體的問題,開源的方式往往要經過多輪的討論、測試、驗證,程式碼才能最終進入到開源項目的主線,經常經歷一年半載, 甚至更長的時間,相比之下閉源軟體可能只需要幾周時間,一個想法就可以被合入主線。那為什麼還說開源加速創新呢?當有更多雙眼睛在看你的程式碼,那麼它潛在的問題、架構合理性、安全性等問題,就可以更早地被暴露,問題也可以更快得到解決。雖然看似某一個特性,它的合入速度是慢的,但有更多雙眼睛去看,就會發現更多的問題,迸發出更多新奇的想法、湧現出更多的程式碼實現,因此開源方式的創新速度要快於一個閉源開發的小團隊的。所謂「獨行快,眾行遠」,就是這個道理。

當然,開源只是一種開發模式,並不是唯一的。很多優秀的軟體(包括作業系統軟體)都是閉源的。閉源軟體,更加受控於其開發商,有確定的產品規劃路線圖,有更多的「確定性」,對於商業更加「友好」。因此,如果開發一個作業系統,選擇閉源或開源路線,都有各自的優勢。當你有很多獨特的見解和想法,在某個領域有重大的發明創造,並不想把裡面的核心技術公開,因此選擇閉源的方式,獲取商業價值,這完全是被尊重和鼓勵的,也是尊重智慧財產權的一個表現。反過來,如果你覺得開源世界裡有更多的創新、更多好的技術、成熟的技術是你所需要的,可以避免你在很多地方重新造輪子,那麼你選擇開源的技術路線,也是不錯的選擇。特別是在作業系統領域,涉及的技術點很廣泛,很多看似不經意的、習以為常的功能實現,實則凝結了前人很多心血,因此選擇開源,更容易站在巨人的肩膀上進行創新。

Linux 作業系統的演進

Linux 作業系統的演進

如前所述,廣義的 Linux 作業系統,是指以 Linux 核心為核心的 Linux 發行版,發行版的存在是因為 Linux 作業系統的所有元件不是由一個社區開發,需要博採眾家之長。因此,Linux 發行版是一個「集成項目」,我們必須承認,創新的源頭在上游社區,如 Linux、GCC、GNOME 這些上游。來自發行版的創新,也要儘可能地貢獻到上游社區,這樣不僅對開源項目的發展有利,對於發行版本身也有利——歷史上曾經有幾百個 Linux 發行版,但能夠被大家所熟知並廣泛使用的卻屈指可數,往往做得比較成功的發行版都遵循著「上游優先」的原則。

所謂「上游優先」,就是當你打算在自己的發行版或產品中做程式碼更改時,先把最佳化後的程式碼提交到對應開源項目的上游,上游接受你的更改後,再把它加到自己的發行版或產品中。

相信有些讀者一定會有這樣的疑惑:這種方式在實踐中根本不可行!

第一,如果我把開發的所有新特性都先提交到開源項目的上游,那自家的產品將如何構建差異化競爭力,進而在激烈的市場競爭中獲利?第二,我向上游提交程式碼,上游不接受怎麼辦?那我是否就沒辦法規劃我的產品都有哪些特性,也沒辦法控制產品什麼時候上市。的確,正因為有這兩方面的困難,很多 Linux 發行版或者面向企業級應用的發行版就無疾而終了。甚至有很多人研究後得出這樣的結論:開源的終點是閉源,或者只有 Open Core 的模式才可以生存,即最終還是要靠不開源的部分在商業競爭中獲利。

然而,Linux 發行版的發展,並不是靠所謂的 Open Core 模式,而是 100% 開源的模式。下面以紅帽系的 Fedora、 CentOS、RHEL 為例,談一下 Linux 發行版的演進。

整體上,紅帽系 Linux 的發展,可分為三個階段:

  • Fedora Linux 階段

Fedora Linux 是前面提到的由眾多上游社區項目構成的 「集成項目」,它最貼近上游,主要的工作是集成,確保由開源項目集成後的作業系統是可用的。當然,這個集成包含了集成前項目的篩選和集成後簡單的測試。Fedora 被認為是開源創新的大舞臺,它上面的軟體包多且全,這一定程度上也促進了開源生態的繁榮。因此,Fedora 吸引越來越多的開源項目加入其中。同時,紅帽也基於Fedora 開發追求穩定以及具有商業支持的企業級 Linux 發行版 RHEL。值得注意的是,具備商業支持並不意味著閉源,紅帽在企業級作業系統中的所有增強也都回饋到對應的上游社區,並且任何人都可以免費得到紅帽企業級 Linux 的源程式碼。通過 Fedora 和 RHEL 兩條線,紅帽既滿足了開源創新的需求,同時也滿足了企業要求穩定可靠的需要。

  • CentOS Linux 階段

CentOS Linux 被人們所熟知是因為它作為 RHEL 的復刻版被大量地使用,正如它的名字—Community Enterprise Operating System,完全來源於社區,完全免費,同時又具備企業級的穩定性,自然受到大家的青睞。但一個很多人沒太關注的事實是,隨著虛擬化、雲端運算的興起,很多開發者、雲廠商,基於Linux 的生態做了大量的工作,如基於 KVM 虛擬化的最佳化、軟體定義網路、軟體定義儲存,以及雲端運算 OpenStack 等。以這些雲廠商為代表的新一代開發者,逐漸傾向於選擇一個穩定的作業系統作為基礎,在其上做各種創新。因此,CentOS Linux 成為一個被開發者廣泛使用的作業系統平臺。紅帽為迎合這部分需求,從2014年開始,將 CentOS Linux 演變為不僅僅是包含復刻 RHEL 的部分,也具備虛擬化、雲端運算等項目的上游社區的軟體包,如紅帽 OpenStack 的社區版 RDO 就被包含在 CentOS Linux 中。這一舉動有助於更好地培育 CentOS 生態,使其進入如火如荼的雲端運算領域。

  • CentOS Stream 階段

隨著企業業務雲化及數字化轉型的深入,雲原生、DevOps、敏捷開發、敏捷集成等成為 IT 業務轉型的重點。作業系統作為支撐 IT 業務的基石,也面臨著同樣的挑戰,即作業系統需要快速地迭代開發,同時迭代的結果在滿足穩定可靠的同時,要儘可能快地給到社區開發者、生態合作伙伴。這實際上對企業級作業系統的研發測試流程提出了更高的要求,CentOS Stream 就是在這樣的背景下應運而生的。那麼,CentOS Stream 可以給生態開發者帶來哪些好處呢?一個重要的好處就是,以前你只能看到最終的結果,而現在,你可以看到整個開發過 程。這個開發過程不是不穩定的中間過程,而是經過了所有企業級質量保證測試的成果物,確保你可以更快拿到 RHEL 中的補丁

綜上, Linux 發行版的發展並不是越來越走向封閉,反而是越來越開放。

開源生態構建與商業變現的關係

開源生態構建與商業變現的關係

前面以 Linux 發行版的演進為例,分享了開源生態的構建,更多的是從開發者生態的角度去討論。然而,一個可持續發展的開源生態,必須能夠讓該生態裡的不同玩家都從中獲益。一個以開源為生的企業,必須能夠通過開源實現商業變現。因此,對於想要投入開源的企業來說,首先要想清楚幾件事情:我在這個生態裡的角色,是使用者、開發者還是維護者?開源是我實現其他業務目標的一個途徑、助力,還是我要以開源為生?作為一家制造業或零售業中的企業,為什麼要投入開源,以及成立開源項目辦公室

我們發現,很多企業對於開源感興趣,很大程度是源於他們使用了大量的開源軟體,儘管開源軟體是開放源程式碼的,對於他們來講卻是一個黑盒子,使用開源軟體的潛在風險完全難以評估,因此試圖通過投入開源的方式實現開源治理,保障業務的安全平穩運行。還有一部分企業是通過開源的方式實現自己在其他方面的業務目標,比如開源作為一種營銷方式,但自己的核心競爭力是閉源的,或是通過其他方式盈利的;或者自己是開源生態的合作伙伴,如眾多的硬體廠商、閉源軟體廠商等。

無論什麼角色、出於什麼目的,只要是在繁榮開源生態,社區都是歡迎的。只是對於不以開源為主業的企業來說,要考慮在開源方面的投入方式以及投入產出比,是階段性投入還是長期投入,是完全自己做還是選擇第三方的服務,想清楚這些問題很重要。行業中存在的一個常見的問題是前期沒有想清楚投入開源可以為自己帶來哪些業務價值,因而最終沒能達到自己的預期效果。

還有一部分以開源為生的企業,在激烈的市場競爭和生存壓力下,必須承認,這種模式不可能輕鬆盈利。靠政策性扶植、基金會捐贈等方式,短期內可能有一定效果,長期卻很難形成真正的市場競爭力。我們不妨從另一個角度看待這個問題,海量的開源軟體,海量的企業在使用,而絕大多數企業對於開源軟體裡的技術細節知之甚少,因此基於「不確定」的開源軟體為企業提供有價值、「確定」的服務,賦能企業,幫助企業用好開源, 一定存在很大的市場需求。所以這部分以開源為生的企業,也是可以實現商業變現的。那麼,這部分企業為什麼要投身於開源生態的構建呢?如果只做產品或服務而不去貢獻,不可以嗎?事實上,開源是一個大舞臺,只有這個社區的生態繁榮了,這個社區的所有玩家,包括自己,才會從中受益。

結語

結語

開源軟體已成為企業 IT 的重要組成部分,本文從被業界廣泛使用的開源 Linux作業系統出發,闡述了開源生態構建的重要性,並且它與企業實現自身的業務價值或商業變現並不矛盾。最後,我想引用最近看到的一段哈佛大學校長對2022屆畢業生的寄語來結束這篇文章:「在你們離開校園走上社會之後,學會為他人留一個‘位置’,確保你們受到的良好教育,不僅豐盈了自己的靈魂,更能惠及這世界上的大多數人。「

作者簡介:

張家駒,紅帽大中華區首席架構師(Chief Architect for Greater China)。熱衷於開源軟體及開源社區,對 Linux 作業系統、分散式、儲存及高可用性、虛擬化、雲端運算等有近 20 年的產品研發、架構設計及團隊管理經驗,曾在知名外企及國內 ICT 領導企業擔任首席架構師、技術總監、中國區技術負責人等職。

相關文章

吳峰光殺進 Linux 核心

吳峰光殺進 Linux 核心

【編者按】吳峰光,Linux 核心守護者,學生時代被同學戲稱為「老神仙」,兩耳不聞窗外事,一心只搞 Linux。吳峰光的 Linux 核心之...

狠甩macOS,2022年成Linux桌面元年!

狠甩macOS,2022年成Linux桌面元年!

【CSDN 編者按】開源熱潮一直席捲全球,諸多網際網路大廠也在爭相擁抱開源,Linux 作為一款開源作業系統也愈發受到開發者的喜愛。在今年年...