從入職大廠到後來誤入歧途,從洗心革面到以一己之力全職開發一款作業系統,又到果斷辭職全身心投入到瀏覽器計畫上,勢要為自己開發一款作業系統、跨平台 Web 瀏覽器的 Andreas Kling 正在開啟人生的下一篇章。
整理 | 蘇宓
出品 | CSDN(ID:CSDNnews)
這位名為 Andreas Kling 的程式設計師, 自 2019 年每次更新自己的最新動態時,似乎都能登上國外科技網站的熱榜,成為眾人關註的焦點。
不是因為他堪比 Linux 之父 Linux Torvalds 那樣有名,也不是因為他是來自某大廠的高管,更不是因為他研發的某樣工具直接改變了世界,其實嚴格來看,他只是 一名普通的程式設計師。
近日,他在職業生涯中又做了一個大膽的決定,辭去自己親手建立的 SerenityOS 作業系統計畫的 BDFL (終身仁慈獨裁者,Benevolent Dictator For Life,是少數開源軟體開發者所擁有的頭銜,他們通常是某一計畫的創始人,並在該計畫社群出現爭議時擁有最終的決定權) 職務,把自己研發的瀏覽器計畫 Ladybird 從作業系統中分叉出去,讓其成為一個真正的跨平台瀏覽器。
這也讓人好奇,為什麽 Andreas Kling 的一舉一動就能受到如此高的關註度,我們不妨從他過往的經歷中一探究竟。
:一位從大廠離職、到誤入歧途、迷途知返的程式設計師
Andreas Kling, 是一位來自瑞典的程式設計師。在他的自述中,他用了「 終身編程愛好者、有誌成為通才 」來描述自己。
在外人看來,作為一個程式設計師, 他本來有 非常好的發展前景,畢竟 曾任職於蘋果(2011-2017 年)、諾基亞(2009-2011 年)等大廠,主要負責基於 WebKit 的 Web 瀏覽器開發工作,非常擅長使用 C++。「現在的你,很有可能正在使用一個因為我而速度稍快的瀏覽器閱讀本文」, 他在部落格介紹頁寫道。
不過,遺憾的是,從蘋果離職後不久的 Andreas Kling 誤入歧途,直到 2018 年 10 月,他 從當地一家戒毒所完成了為期 3 個月的康復計劃。
出來之後, Andreas Kling 失業了。他與家人住在一起,無所事事。由於沒有藥物或其他惡習可以打發時間,他覺得日子太過漫長了。
起初, Andreas Kling 努力尋找一些事情來打發時間。他在學校待過一段時間,發現那裏並不適合自己。
「完成藥物成癮康復計劃幾個月後,我的心態非常開放,想要挑戰自己,找到提升自己的方法。 毒品讓我的生活充滿了秘密和謊言,但那樣的生活已經結束了。雖然我不確定下一步該怎麽做,但我對秘密已經厭倦,以至於我想不出還有什麽可以改變的。
我需要一些東西來打發空閑時間,同時學習如何過上正常的生活,而事實證明,構建一個新的作業系統是一項恰到好處的任務 」, Andreas Kling 說。
這也是 SerenityOS( 「寧靜」作業系統 )作業系統的由來, Andreas Kling 希望借助 「寧靜的禱告」, 或許能幫助自己更加堅信未來要走的路 。
6 個月,開發出一款作業系統的原型
Andreas Kling 對開發 SerenityOS 的 目標是——「構建一個完整的桌面作業系統,最終用作我的日常驅動程式」。
結合其 個人最喜歡的兩種電腦模式 ,即 20 世紀 90 年代的 GUI 和 21 世紀末 Unix 的簡潔命令列, Andreas Kling 將 SerenityOS 開發成一款適用於 x86 電腦的圖形類 UNIX 作業系統。
在開發過程中, Andreas Kling 表示:「在蘋果公司任職的時候,我真的很喜歡他們大部份軟體都是在同一個「屋檐」下制作的感覺。這不僅使所有的軟體可以超緊密整合,還可以給開發者更大的創作空間。我想我可以嘗試把同樣的感覺帶到開源世界,所以我決定 SerenityOS 不會是一個個拼湊起來的軟體包,我們正在建立自己的一切,包括從內核到 Web 瀏覽器,以及兩者之間的一切。」
在此之下, 透過不斷地叠代, Andreas Kling 僅用了半年的時間,研發出了 SerenityOS 的 Demo。
2018 年 10 月 10 日 , 經過六個月的獨立工作之後, Andreas Kling 將其釋出到網上,並邀請其他人參與,這也是他在 GitHub 上首次送出了程式碼 (https://github.com/SerenityOS/serenity) 。
與此同時,Andreas Kling 為了讓自己更加忙碌,也為了記錄,他開始制作 YouTube 視訊來記錄計畫開發的進度。
Andreas Kling 表示,「當時,我還在獨自從事這個計畫,我認為視訊可能是一種引人入勝的形式。最初的視訊都是簡單的編程課程,充滿了笨拙。我犯了很多錯誤,在糾正錯誤時含糊不清。隨著時間的推移,我進步了,並且開始每月制作 SerenityOS 更新視訊——這一傳統至今仍在延續。」
直至今日,Andreas Kling 在 YouTube 上視訊量達到了 1056 個,擁有 4.58 萬的訂閱者。
而 SerenityOS 從由 Andreas Kling 一個人全職參與的計畫發展到數百人合作開發的開源社群。在 GitHub 上, SerenityOS 計畫從 0 獲得了 29.1k Star,Fork 數量達 3.1k。
就 SerenityOS 的功能而言,其也從一個用 C 語言編寫而成的小 x86 內核起步,逐漸能夠在虛擬機器中執行、擁有 GUI、生成多個「guitest」行程、增加桌布支持、使用 ping 命令、構建一個 IRC 客戶端、實作了一個貪吃食的遊戲、編譯小的 C 程式......
時下,Andreas Kling 刪除了 32 位 x86 埠,使 SerenityOS 成為僅限 64 位的作業系統。還增加了對更多流行媒體格式的支持,如 VP9、WebP、JPEG、JPEG XL、TinyVG。此外,還能在 SerenityOS 上玩【超級馬利奧 64】。
更值得一提的是,Andreas Kling 做到了其最初的承諾, 會從內核到 Web 瀏覽器,構建 SerenityOS 所需的一切。他 於 2022 年推出了一個名為 Ladybird Web 開源瀏覽器(https://github.com/SerenityOS/ladybird),進一步增加 SerenityOS 系統的完善性。
不止於此, Ladybird Web 瀏覽器的一大特性是跨平台,這也意味著 Andreas Kling 等人的開發將跳出 SerenityOS 的桎梏。
跳出 SerenityOS 的桎梏, 一個新的跨平台瀏覽器計畫 Ladybird 誕生
提及 Ladybird Web 瀏覽器的開發,在 Andreas Kling 最初設想中,Ladybird 是作為 SerenityOS 系統的 LibWeb 和 LibJS 瀏覽器引擎偵錯工具,它讓人們可以更輕松地在 Linux 上工作。
LibWeb 和 JavaScript 引擎 LibJS 是 Andreas Kling 分別於 2019 年、 2020 年開發的引擎。
隨著 Ladybird 功能不斷完善,兩個月過去之後,Andreas Kling 發現自己在大部份瀏覽器開發工作中都在使用 Ladybird。
於是,本著「建造一些有朝一日可能對更多人有用的東西」的想法,他開始將 Ladybird 定位改為一款「跨平台瀏覽器」。
Andreas Kling 表示,瀏覽器和庫都是用 C++ 編寫的,主要技術棧包括:
Ladybird:索引標籤式瀏覽器 GUI 應用程式
LibWeb:Web 引擎,多種標準:HTML、DOM、CSS、SVG……
LibJS:ECMAScript 語言、執行時庫、垃圾收集器
LibGfx:2D 圖形、文本渲染、影像格式(PNG、JPG、GIF 等)
LibRegex:正規表式引擎
LibXML:XML 解析器
LibWasm:WebAssembly 解析器和直譯器
LibUnicode:Unicode 支持庫
LibTextCodec:文本編碼轉換庫
LibMarkdown:Markdown 解析器
LibCore:其他支持功能(I/O、日期時間、MIME 數據……)
Qt:跨平台 GUI 和網路
LibWeb 有一個 Platform 層,Ladybird 在這層為事件迴圈、計時器、系統字型設定等註入 Qt 支持程式碼。Ladybird 使用 Qt 進行聯網,因為多行程的 RequestServer 系統在 SerenityOS 之外還沒有使用。同時,Ladybird 是單行程的,「所有這些都是暫時的,並且會隨著時間而改變。」
Ladybird 在 2-clause BSD 授權下是免費的,「沒有人可以購買該計畫,但你可以透過參與開發來改進瀏覽器」。
那時 Andreas Kling 表示,「我將「真正獨立的跨平台瀏覽器」添加到我的個人目標列表中。這也是對任何可能有興趣開發全新瀏覽器的人的邀請。」
隨著對 Ladybird 的投入,這一計畫可以 在 Linux、macOS、Windows (WSL) 和 Android 上執行,同時 也獲得了不少業界人士對 於這款瀏覽器開發的資金支持,包括來自 Shopify 的 100,000 美元贊助、兩筆匿名的 100,000 美元捐款以及來自德國公司 ohne-makler.net 的 10,000 美元贊助。
兩年之後的今天,從作業系統到瀏覽器
也就是從這時起, Andreas Kling 幾乎把全部精力都放在了 Ladybird 上。
「時光飛逝,現在我已經不記得上次在 SerenityOS 中從事與 Ladybird 無關的工作是什麽時候了」, Andreas Kling 說。
他表示, 到目前為止, SerenityOS 計畫及其社群一直處於兩個團體共享所有資源和基礎設施的狀態:
一個群體主要關心構建桌面作業系統。
另一個群體主要關心構建跨平台的網路瀏覽器。
過去,興趣之間有足夠多的重合,因此分享一切是有意義的,但大家對這兩個計畫的共同興趣已經逐漸減少。
現在 Andreas Kling 想要做出一些改變,「 為了簡化 Ladybird 的開發,我將它從 SerenityOS 中分叉出來,形成一個新的、獨立的頂級計畫。
我熱愛 SerenityOS,也熱愛圍繞它形成的社群。我不想再因為分心而成為 BDFL 而阻礙它的發展。這也是我決定辭職的原因。 從即日起,SerenityOS 現在由其維護者小組負責。他們是一群可愛的人,我相信他們會好好照顧它的 。
對我來說這是一個困難且情緒化的決定,但我相信這將為兩個計畫帶來更好的未來。 」
那麽,這對於 Ladybird 來說意味著什麽?
Andreas Kling 表示:
Ladybird 開發現在在 GitHub 上的一個新儲存庫中進行(https://github.com/LadybirdWebBrowser/ladybird)。
日常交流轉移到新的Ladybird Discord 伺服器(https://discord.gg/nvfjVJ4Svh)。
Ladybird 現在主要針對 Linux 和 macOS 平台而發。不再以 SerenityOS 為目標。
與 SerenityOS 不同的是,Ladybird 將采用寬松的 NIH 政策(而不是「禁止第三方程式碼!」),並將利用更大的 OSS 生態系。
那麽,這對 SerenityOS 意味著什麽?實則:
對於構建 Web 瀏覽器的過度關註將從該計畫中消失。
「與朋友一起破解有趣的軟體」再次成為主要焦點。
接下來會發生什麽取決於社群!
Andreas Kling 進一步解釋道,「 在有人問之前,我先說明一下,這次改變背後沒有什麽特別之處。我只是意識到兩個大計畫太長時間都擠在一個地方,讓人感到很不舒服,而我所做的我相信會讓所有參與的人生活得更好。
我要衷心感謝所有與我一起參與這些計畫的人。你們都幫助我保持清醒,這是我一生中最美好的時光!現在,我將 SerenityOS 交給你們,讓你們自己動手。
我對這兩個計畫的未來感到興奮,現在我們都可以更好地專註於我們的主要興趣!」
寫在最後
對於 Andreas Kling 最新選擇讓瀏覽器計畫從作業系統 SerenityOS 中「單飛」的做法,有人理解:
我完全尊重這些理由,它們合乎邏輯,說得也很好。但希望人們對 SerenityOS 的興趣不會因此而減弱。Kling 非常善於透過他的 YouTube 視訊吸引人們的興趣,在視訊中他會深入討論錯誤修復和功能開發。
當然,對於開放網路來說,瀏覽器是最有潛力的,甚至是迫切需要的,但我還是希望有一天能每天使用 SerenityOS。它的美學和整體架構讓我夢想成真。
Windows 正在迅速衰落,而 Linux 缺乏整體元素,因此擁有一款能夠將最偉大的視覺設計語言(20 世紀 90 年代中後期的界面指南)與強大的 Unix shell 相結合的產品將為桌面計算帶來巨大的好處。(是的,OSX 擁有出色的現代使用者體驗,具有 Unix 基礎,但不是開源軟體,也不是大眾可以承受的)。
另一方面,有人對其放棄 SerenityOS 管理同樣感到惋惜,甚至擔心「SerenityOS 現在有點註定要失敗了?說實話,我從未見過這種舉動會有好結果。即使沒有參與,擁有原創者坐陣計畫,也會對計畫的受歡迎程度大有裨益。」
不過,在 Andreas Kling 個人看來,透過放棄 SerenityOS 作為目標,Ladybird 瀏覽器可以自由使用目前無法在 SerenityOS 上執行的第三方庫。這意味著 SerenityOS 無論如何都無法在這種新狀態下整合 Ladybird,因為 SerenityOS 有嚴格的「禁止第三方程式碼」政策。
「隨著時間的推移,我也期待看到 Ladybird 未來會作為 SerenityOS 的一個埠重新回歸」, Andreas Kling 說。
來源: https://awesomekling.substack.com/p/forking-ladybird-and-stepping-down-serenityos
https://awesomekling.github.io/Ladybird-a-new-cross-platform-browser-project/
推薦閱讀: