工程趣聞 2026 年 5 月 6 日

2026-05-06 — IBM 與 Tab 鍵之爭、Oasis Linux 靜態連結 musl 最小化發行版

primary=https://devblogs.microsoft.com/oldnewthing/20260505-00/?p=112298 primary=https://git.sr.ht/~mcf/oasis

Tab 鍵之爭:IBM 與 Microsoft 在 OS/2 時代的組織結構衝突

The Old New Thing (Raymond Chen) · 2026-05-05

Raymond Chen 在最新一篇《The Old New Thing》文章中,回顧了 1980 年代末 Microsoft 與 IBM 在 OS/2 共同開發期間,一場圍繞對話框欄位間鍵盤導航應使用哪個按鍵的組織衝突——最終以 Tab 鍵勝出告終,但過程揭示了兩家公司截然不同的工程決策文化。

爭議起點

微軟工程師選定 Tab 鍵作為 OS/2 對話框中欄位間移動的標準按鍵,這在 Windows 設計上早有先例。IBM 方面的技術人員對此提出異議,認為這不是合適的選擇,並要求對方取得更高層級的授權確認。

組織結構的對比

IBM 的工程師按照其企業文化,將問題層層上報,最終觸達一位在組織層級上比前線工程師高出約七層的副總裁。這位 IBM VP 明確表態「絕對反對」將 Tab 鍵用於此目的,並要求 Microsoft 提出同等級別的確認。

Microsoft 的回應揭示了兩種工程文化的根本差異。當 IBM 最初向 Microsoft 工程師的直屬主管確認時,後者的回應是:「你們在 Boca(IBM 的佛羅里達辦公室)的原因,就是讓你們自己做這些決定,而不需要我待在那裡。」——這句話後來以外交語言轉述為「Microsoft 支持使用 Tab 鍵。」

當 IBM VP 要求 Microsoft 也提供 VP 層級的書面確認時,微軟工程師幽默地回覆:「Bill Gates 的母親對 Tab 鍵不感興趣。」暗示 Microsoft 不會為這種技術決策動用最高層級的管理資源。

結果與意涵

Tab 鍵最終留了下來,成為所有現代 GUI 對話框的標準。這段歷史並非只是趣聞——它是兩種企業工程文化的縮影:IBM 的共識驅動、層級確認模式,對比Microsoft 的分散式工程師自治模式。OS/2 合作後來因為種種文化與技術摩擦而告終,Tab 鍵事件不過是其中一個小小的預兆。

原始來源:The Old New Thing — A dispute over the TAB key highlights a mismatch between Microsoft and IBM organizational structures


Oasis Linux:以靜態連結 musl 與 s6 init 建構的最小化 Linux 發行版

sourcehut / ~mcf/oasis · 2026-05-06

Oasis Linux 本週在 Lobsters 討論板引發 67 分的高度關注,這是一個由 Michael Forney 維護的個人 Linux 發行版專案,以靜態連結的 musl libcs6 init 系統取代 systemd,並將所有套件靜態編譯為單一可執行檔。

設計原則

Oasis 的核心哲學是最小化動態依賴。所有使用者空間工具(userspace tools)均以靜態連結方式針對 musl libc 編譯,這意味著每個執行檔在執行時不需要載入任何共享函式庫(shared library)。這種設計的實際效果包括:

  • 不存在因動態連結器(dynamic linker)版本不符導致的執行環境問題
  • 可以直接複製單一執行檔到任何 Linux 系統執行,無需依賴容器或 chroot
  • 攻擊面(attack surface)縮減,因為沒有共享函式庫路徑可被挾持
  • 二進位檔案大小增加,但現代儲存空間不再是瓶頸

init 系統與服務管理

Oasis 使用 s6 作為 PID 1 與服務監管器(service supervisor),s6 是 Laurent Bercot 設計的 supervision suite,遵循 daemontools 的設計哲學。服務定義以目錄結構表示,每個服務包含 run(前景執行腳本)與可選的 finish(結束後回呼)腳本。

相較於 systemd 的單元文件(unit file)體系,s6 的設計極為精簡:核心功能由數個小型 C 程式組成,每個程式只做一件事。這符合 Unix 哲學,也使整個 init 系統在安全審計上遠比 systemd 容易。

工具鏈選擇

Oasis 使用 LLVM/Clang 作為預設編譯器工具鏈,搭配 lld 連結器,而非 GCC/binutils。套件管理使用自製的簡單系統,不追求與任何主流發行版的相容性,定位為個人使用與技術探索,而非通用生產發行版。

原始來源:sourcehut — ~mcf/oasisLobsters 討論串


End of article
0
Would love your thoughts, please comment.x
()
x