我回到 Rust Nation 了,並正忙著用我(誠然很糟糕的)英語口音嚇唬我十幾歲的女兒。這是一趟很棒的旅程,有許多愉快的對話和一些有趣的觀察。我將試著寫一些關於這些的部落格文章,首先從一些受到 Jon Seager 的閉幕主題演講「Rust Adoption At Scale with Ubuntu」所啟發的想法開始。

我一直在思考,Rust 是否已經「跨越了鴻溝」?如果你不熟悉這個術語,它來自一本對技術採納生命週期進行「科普」介紹的書。

答案當然是取決於你問誰。在我最了解的 Amazon 內部,答案是我們「已經跨越了大部分的距離」:Rust 已穩固地確立為建構大規模資料平面或資源感知代理的正確方法,並且越來越被視為設備和機器人領域低階程式碼的正確選擇——但仍然存在一種揮之不去的觀念,認為 Rust 對「S3(或其他地方)那些時髦的開發者」來說很有用,但對於更一般的開發來說則有點小題大作。

另一方面,在安全關鍵軟體領域,正如 Pete LeVasseur 在最近的 rust-lang 部落格文章中所寫的那樣,Rust 仍在努力尋求立足之地。雖然有一些成功的產品,但大多數產業仍處於「觀望」模式,讓早期採用者鋪平道路。

我至少從閱讀《跨越鴻溝》和其他關於技術採納生命週期的參考資料中得到的最大啟示是「參考客戶」的必要性。當你開始接觸新事物時,你會尋找被新事物吸引的先驅和早期採用者:

早期採用者購買的是某種「變革推動者」。透過成為業界第一個實施這項變革的人,早期採用者期望在競爭中取得領先。——來自《跨越鴻溝》

但隨著你的技術成熟,你必須說服風險承受能力越來越低的人:

早期大眾希望為現有營運購買生產力提升。他們希望盡量減少與舊方法的斷裂。他們想要演進,而不是革命。——來自《跨越鴻溝》

那麼,什麼最能說服人們嘗試新事物呢?答案是看到像他們一樣的人已經成功了。

你可以在 Amazon 的例子和安全關鍵軟體的例子中看到這一點。顯然,在網路服務中使用 Rust 並不意味著它已經準備好用於你汽車的轉向系統。即使在網路服務領域,看到像 S3 這樣的團隊在 Rust 上取得成功,可能會說服其他建構大規模服務的團隊嘗試 Rust,但並不一定能說服一個團隊在他們下一個 CRUD 服務中使用 Rust。坦白說,他們也不應該!他們很可能會遇到障礙。

這一切都在我觀看 Canonical(Ubuntu 背後的公司)工程副總裁 Jon Seager 的主題演講時浮現在腦海中。與 Lars Bergstrom 過去關於 Google 內部 Rust 採用的史詩級主題演講類似,Jon 闡述了 Canonical 採用 Rust 的理由,既有遠見又非常務實。

「有遠見又非常務實」幾乎是我們從早期採用者邁向早期大眾所需的教科書式描述。我們需要那些首先關心交付正確結果,但又對可能幫助他們做得更好的新想法持開放態度的人;那些能夠同時站在鴻溝兩側的人。

Jon 描述了 Canonical 如何將自身開發重點放在少數幾種語言上:Python、C/C++ 和 Go,以及他們最近引入 Rust 並將其作為新基礎性工作的首選語言,取代 C、C++ 和(部分)Python。

Jon 談到他認為 Ubuntu 的職責是透過支持記憶體安全基礎性工具的建構來「回饋社會」。Jon 所謂的支持,既包括財務方面——Canonical 正在贊助 Trifecta Tech Foundation 開發 sudo-rs 和 ntpd-rs,並贊助 uutils org 的 coreutils 工作——也包括聲譽方面。Ubuntu 可以承擔新事物的風險,證明其有效性,然後讓其他人受益。

還記得《跨越鴻溝》一書如何描述早期大眾嗎?他們「希望盡量減少與舊方法的斷裂」。還有什麼比擁有可以融入他們現有工作流程的「即插即用」工具更好的方法呢?

新的採用帶來了新的觀點。週四晚上,我參加了 Ernest Kissiedu 組織的晚宴。Jon Seager 和來自不同產業的其他幾位 Rust 採用者也在場,還有幾位來自 Rust Foundation 和開源專案的人員。

Ernest 請他們坦率地談談對 Rust 的看法。Jon 提出了一個引人深思的評論,認為我們需要重新審視關於擁有小型標準函式庫的政策。他不是第一個這麼說的人,我們已經聽了多年——我認為他說得對!雖然我認為答案不只是提供一個大型標準函式庫。事實上,這恰好可以引導到(我希望將是)我的下一篇部落格文章,內容是關於我稱之為「電池組」的專案。

更廣泛的觀點是,從針對「先驅」和「早期採用者」轉向針對「早期大眾」有時會涉及一些令人不舒服的改變:

任何兩個採納區段之間的過渡通常都極其尷尬,因為你必須在最習慣舊方法的時候採用新策略。[...] 如果高科技公司在成功地向遠見者推銷後,忽略了改變其銷售說辭,情況可能會進一步複雜化。[...] 公司可能說的是「最先進的」,而務實主義者想聽到的是「行業標準」。——《跨越鴻溝》(強調為我所加)

不是每個人都會記得,但在 2016 年,有一個名為 Rust Platform 的提案。這個想法是引入一些 crate 並將它們認證為一種「擴展標準函式庫」。人們對此非常反感。畢竟,他們說,為什麼不直接將依賴項添加到你的 Cargo.toml 中呢?這很容易。說實話,他們當時是對的。

我認為 Rust Platform 是早期採用者不適合的東西的一個好例子,早期採用者想要最新的東西,並且不介意尋找最好的 crate,但這可能非常適合早期大眾。

總之,我這篇文章不是要爭論這個或那個,而是要強調我們必須對適應新情況的既有智慧持開放態度。過去,我們試圖將 Rust 引入業界的意識——我們已經成功了。

我們現在面臨的任務不同:我們需要讓 Rust 成為最佳選擇,不僅在「它可能成為什麼」方面,而且在「它實際上是什麼」方面——有時這兩者是相互矛盾的。

晚宴稍後,談話像往常一樣轉向了金錢。Rust 採用的增長也帶來了對 Rust 專案及其生態系統日益增長的需求。我們如何將這些聯繫起來?這是我一直在思考的一個大問題,我在寫這段話時意識到我還有很多關於這個主題的部落格文章要寫,但讓我列出一些在這次晚宴和其他近期場合出現的有趣觀點。

首先,提供支持的方式不僅僅是金錢。對於 Canonical 來說,作為一個徹頭徹尾的開源組織,我最希望的是在我們的組織之間建立更牢固的關係。對於 Rust for Linux 開發者來說,早期 Rust 維護者會優先處理並修復 RfL 開發者的錯誤,但越來越多的 RfL 開發者正在自己修復問題,Rust 維護者則擔任導師。這太棒了!

其次,我看到一種關於金錢的有趣趨勢在幾個地方出現。我們經常認為公司會投資於它們所依賴的開源依賴項。但還有另一種完全不同的資金來源,而且可能更容易利用,那就是關注那些正在考慮 Rust 但尚未採用的公司。

對於那些「潛在」採用者來說,組織中經常有一些個人正在努力爭取採用 Rust——這些人是早期採用者,是對事物發展有遠見的人,但他們正在向他們的早期大眾公司推銷。為了做到這一點,他們通常有一份「基本要求」功能的清單需要支持;更重要的是,他們通常可以獲得一些預算來實現這些目標。

這在我與 Foundation 的銀級會員目錄 Alexandru Radovici 交談時出現,他說許多安全關鍵公司有錢想花在彌補 Rust 的各種差距上,但他們不知道如何花。Jon 對 Trifecta Tech 和 uutils org 的投資具有相同的性質:他正在尋找彌補阻礙 Ubuntu 更多使用 Rust 的差距。

嗯,首先,你應該觀看 Jon 的演講。「Brilliant」,正如英國人所說。

但我的另一個重要想法是,現在是 Rust 的關鍵時刻。我們顯然正在從遠見者和早期採用者向務實的大眾過渡,我們需要注意,這樣做可能需要我們改變一些我們一直以來做事的方式。我喜歡《跨越鴻溝》中的這段話:

要成功地向務實主義者行銷,你不必成為其中一員——只需了解他們的價值觀並努力為他們服務。要更仔細地審視這些價值觀,如果遠見者的目標是向前邁出一大步,那麼務實主義者的目標是實現百分比的提升——循序漸進、可衡量、可預測的進步。[...] 要向務實主義者行銷,你需要有耐心。你需要熟悉主導他們特定業務的問題。你需要出現在他們參加的行業特定會議和貿易展上。

重讀《跨越鴻溝》作為撰寫這篇部落格文章的一部分,確實幫助我釐清了 Rust 的現狀——總的來說,我認為我們仍在跨越鴻溝,但我們已經在路上了。我認為我們現在看到的是一個持續的趨勢,即我們擁有符合早期採用者「遠見者」形象的 Rust 擁護者,他們在符合務實主義者、早期大眾形象的公司中成功地倡導 Rust。

我認為開源是一個進行這種行銷的絕佳平台。與公司不同,我們不必自己做所有事情。我們必須利用開源「幫助那些自助的人」這一事實——找到那些能夠真正從 Rust 中受益的產業中的遠見者,將他們引入 Rust 的軌道,然後(最重要!)支持和賦予他們力量,讓他們能夠根據自己的需求調整 Rust。

最後一點聽起來可能很明顯,但它比聽起來要難。當你身處開源環境中時,它似乎是一個友好的地方,每個人都受到歡迎。但現實是,它可能是一個充滿小圈子和「口頭傳統」的地方,是「每個人都知道」的。[...] 帶著想法來的人可能會因為用了錯誤的詞而被否定。他們很容易將一個隨機貢獻者(或者可能只是一個網路釣魚者……)的「充滿激情的」評論誤認為是專案領導層的官方說法。一次粗魯的回應就足以讓一個人卻步。

那麼,什麼最終最能幫助 Rust 成功呢?開源中的同理心。讓我們走出去,找出 Rust 在哪裡可以幫助人們,並讓它發生。令人興奮的時代!