Ghostty:迎來 1.0 之際的回顧
原文由 Mitchell Hashimoto 于 發布,訂閱此部落格
這不是一篇版本發布公告。Ghostty 1.0 已經推出。你可以在 Ghostty 官網上下載並閱讀相關資訊。這篇文章是我對這個專案的個人回顧。
Ghostty 1.0 正式推出了。
如果兩年前有人告訴我,我會發布一款終端機模擬器,我一定不會相信。我一直很喜歡終端機,整個職涯都在打造以終端機為核心的軟體。但終端機不是早就被解決的問題嗎?對吧?當時我是這麼想的。
我在 2022 年展開這個專案,純粹是想玩玩 Zig、做些圖形程式設計,並加深對終端機的理解。我從沒打算要發布它。我不覺得這個領域還有什麼創新的空間。我以為花幾個月學點東西後就會轉向別的事情。
但隨著開發的深入,我看待其他終端機的角度也變了。我看到了我不喜歡的取捨,看到了我想要的功能,看到了可以提升的效能,也看到了停滯不前。市面上已經有許多非常棒的終端機,如果適合你,就應該繼續用。但我想要的東西不太一樣,也覺得或許有人跟我有同樣的想法。
於是 Ghostty 誕生了。它不完美、尚未完成,也不適合所有人。但它是我的作品。它反映了我的價值觀,以及我對終端機應有樣貌的想像。
若想進一步了解 Ghostty 與其他終端機的不同之處,以及我對這個專案的願景,請閱讀Ghostty 1.0 is coming這篇文章。
私密測試階段
Ghostty 最具爭議的部分就是私密測試。唉,私密測試啊。我遠遠低估了它對這個專案帶來的影響,無論是好的還是壞的。
私密測試:好的一面
首先,為什麼要做私密測試?最主要的原因是為了控管我個人的時間與精力。我在第一個孩子出生前不久才開始公開分享這個專案。我有發布軟體的經驗,深知隨之而來的壓力。我想避免那種壓力,好專心陪伴家人。我覺得可以精選一小群感興趣的使用者來控制問題的數量,等我覺得狀況許可時再逐步擴大使用者規模。
次要但遠沒那麼重要的原因是,我覺得終端機模擬器比起大多數軟體,更是非成即敗的東西。你不能推出一個只能模擬 Vim 所需一半功能的終端機模擬器。在功能低於某個門檻之前,你也無法用漸進式改良的方式來完善終端機模擬器。我希望確保第一次公開發布就能達到那個門檻,讓大家一拿到就能立刻投入使用、發揮生產力。
在這兩個層面上,私密測試取得了巨大的成功(遠超我的預期)。我得以控管自己的時間與精力,專注在家人身上。在女兒出生後的第一年裡,我每天早上叫她起床,在她每次清醒的時間陪她玩,帶她去每一次的門診,不錯過每一個重要的里程碑1。
而測試社群真的非常棒。他們很有耐心、善解人意,也樂於幫忙。他們找出錯誤、提供回饋,讓 Ghostty 變得比沒有他們時好上太多。我對他們的感謝難以言表。
私密測試:不好的一面
其他的一切,都是私密測試帶來的非預期後果。熱度、無法加入者的挫折感、某些人感受到的菁英主義等等。
我沒有預料到會有這麼大的關注熱度。有些人覺得我這樣說是在說謊,但我沒有。我還不至於天真到以為私密測試和限量體驗原則上不會製造話題。但我真的沒想到會有這麼多人對一款終端機模擬器感興趣。我以為自己只是在為小眾族群打造無聊的軟體,不會有什麼熱度!
但我錯了,而且後果是真實的。有人因為無法加入而感到沮喪,有人覺得被排除在外,也有人覺得我是在刻意營造話題、虛偽造假。等候名單的人數膨脹到超出我願意開放的範圍(考量到我先前說過的優先事項)。
對此我感到抱歉。我只能說,這並非我的本意。我盡量加快了測試邀請的速度,試著讓盡可能多的人加入,在我能承受的範圍內(其實還稍微超出了一點)。測試結束時,我們在當時擁有 28,000 人的 Discord 社群中,開放了約 5,000 名使用者。這個開放比例未達我理想中想讓大家參與的程度,但已經超過我能負荷的數量。
好消息是,Ghostty 現在已經公開,所有人都能使用了!我希望我們能把私密測試的負面影響拋在身後,一起專注於未來。
熱度帶來的另一個負面影響,是大家期待 Ghostty 會帶來革命性的改變。這既是也不是。Ghostty 擁有與其他終端機不同的目標與取捨。對於追求這些特性的人來說,Ghostty 帶來一股新鮮空氣,做到了其他終端機做不到的事。但對其他人而言,它就只是一個終端機而已。這樣也沒關係。我希望你能找到適合自己的終端機,我也從不宣稱 Ghostty 是終端機的終極解答。
技術架構
Ghostty 採用了非傳統的技術架構與架構設計:以Zig 作為核心,並為圖形介面撰寫平台原生的程式碼。關於技術架構的更多細節,可以參考我最初介紹 Ghostty 的那場演講。
兩年後的今天,我對這套技術架構非常滿意。我認為這對這個專案來說是正確的選擇,更進一步說,我覺得這種架構對許多專案而言都可能是正確的選擇2。
使用 Zig 開發絕對是一大樂事。我每天寫 Zig 都感到樂趣無窮,而且這份樂趣兩年來絲毫未減。它的建構系統非常出色,社群也很棒,核心維護者更是才華洋溢。大家都知道我對 Zig 的熱情,而我也以實際行動支持,贊助了 Zig Software Foundation。
以 Zig 撰寫的共享核心加上平台原生圖形介面的分工方式,也獲得了成功。我得以毫不費力地將平台原生的體驗整合進 Ghostty,同時仍保有超過 90% 的程式碼共用。
測試社群在參與專案貢獻上也毫無障礙。我認為這顯示出,儘管 Zig 是個新穎、小眾的語言,它對新貢獻者而言依然容易上手、能夠快速發揮生產力。這對專案的未來來說是個好消息。
一個意料之外的社群
圍繞著 Ghostty 形成的社群,既出乎意料又令人驚艷。
具體來說,我指的是私密測試的社群。由於無法取得軟體,公開社群有點像是蠻荒西部、缺乏秩序。但私密社群則有明確的焦點與目標,參與其中是一件很愉快的事。
Ghostty 社群是一群熱愛終端機的人(當然!),同時也熱衷於效能、設計、軟體品質,堅持把事情做對而且是為了正確的理由而做。這是一群相處起來愉快、合作起來融洽的人。我很享受認識大家的過程,也很期待繼續與他們共事。
對我個人而言,會說它是意料之外,也是因為社群中大多數人對我的作品都是全新的。很多人沒有基礎架構領域的背景,因此對我過去的成果並不熟悉。能夠建立一個全新的社群很有趣,也讓我想起職涯早期圍繞著第一個開源專案建立社群的那段時光。
1.0 之後的未來
Ghostty 1.0 已經推出,但對我來說這個專案還遠遠沒有結束。甚至 1.0 的完整度都還不如我期望的那樣!但我必須在某個地方畫下一條線,而我認為 1.0 的成果已經非常棒。
短期內,我想繼續專注於「成為現有最優秀的終端機」這個目標。我想補齊那些沒趕上 1.0 的功能,並修復仍然存在的錯誤。我想確保 Ghostty 所建立的基礎是穩固的,足以支撐未來的創新。
在中短期內(2025 年之內),我想將重心轉向發布一個穩定且獨立的libghostty,讓其他專案可以用它來打造自己的終端機模擬器前端。我認為 libghostty 是這個專案中最具潛力的部分,對於 Ghostty 能在技術社群中帶來的長遠影響最為關鍵。
但無論目標為何,Ghostty 對我而言始終是一個熱情所在的專案。我投入這個專案是因為它很有趣,我也想確保我和社群都不會忘記這一點。
致謝
我相信這世上沒有任何事是靠一個人就能完成的。Ghostty 或許是我獨自開始的,但絕不是靠我一個人完成的,一路上我要感謝的人太多了。
Ghostty 測試社群帶來的影響怎麼強調都不為過。我在這篇文章裡已經提過,但 Ghostty 能有今天如此豐富的功能與精緻的完成度,都要歸功於測試社群對細節的關注與回饋。我由衷感謝每一位參與測試、幫助 Ghostty 成為現在這個樣子的朋友。
Discord 的管理員們值得特別致謝。他們非常努力地維持秩序,讓社群專注在正確的事情上。我每天都能看到他們為了營造一個讓我能專心開發、讓測試社群能蓬勃發展的環境所付出的努力。我們不到 10 位管理員要照顧 30,000 人,在這樣的情況下,他們的表現非常出色3。
最後,也是最重要的,我想感謝我的太太。我們是新手爸媽,一邊照顧新生兒、一邊還想擠出時間做 side project,絕非易事(即使有私密測試的安排)。她幫我找到投入 Ghostty 的時間,也耐心地聽我喋喋不休地談論字型渲染(然後聽到睡著)。
希望你會喜歡 Ghostty 1.0,並能感受到其中投入的熱愛與用心。我很期待看到我們接下來會走向何方!
註解
隨機一篇部落格
留言
登入後參與討論