Wayland 真的毀掉一切了嗎?
「Wayland 毀掉一切!」有些人已經看過了這篇 Probonopd 批評 Wayland 的略有名氣的文章。Probonopd 是 AppImage 開發者的核心者之一,他批評 Wayland 並非 X11 的直接替代品。他在 GitHub 上創建了一個 新的倉庫,再次吸引了公眾的目光,他希望為目前 Wayland 原生應用無法使用的功能創建協議。而這些功能是 Wayland 標準協議有意缺失的,但缺乏標準化意味著它們無法成為應用開發者可信賴的平台組成部分。
儘管開發者圈子裡有人對此一笑置之,乃至嘲笑,但對於普通人來說,「Wayland 毀掉一切!」這句指責可能戳中要害,或者至少看起來有幾分道理。因為從某種角度,Probonopd 是對的:Wayland 確實破壞了所有直接依賴 X11 功能的事物!
只是這種角度是錯誤的。
試想,如果我說:「Linux 讓 Photoshop 無法工作,你還是應該堅持使用 Windows!」你該如何回應呢?你可能會說:「等等,問題的關鍵是 Photoshop 不支持 Linux!」你說得對,這是一個微妙且重要的區別,它將責任放在了正確的位置。因為即使是 Linux,也無法「不破壞」 Photoshop;相反,Adobe 需要為其產品進行移植,只不過他們還沒有做罷了。
對於 X11 和 Wayland,情況也同樣適用。Wayland 並不是為了取代 X11 而設計的,就像 Linux 不是為了取代 Windows 而設計的一樣。當我們從一個操作系統轉到另一個時,有必要調整我們的期望,認清可能需要的改變。
儘管 Wayland 並非設計為 X11 的直接替代品,但它最終肯定會取代 X11。但這意味著它從一開始就打算比 X11 做得更少,而這是正確的。
X11 是個糟糕的平台
在那些古老的日子裡,X11 是個完整的開發平台。以 X11 為目標的應用程序可以使用 X11,通過內建的小部件工具包來進行 UI 繪製;藉助自帶的列印伺服器列印文件;進行屏幕錄屏;設定全局快捷鍵等等。這一切都遠在我接觸技術之前,但我感覺到,X11 要麼是在最初就被設定為面嚮應用開發者的開發平台,要麼在早期階段迅速演變成了這樣一個平台。
然而,情況並沒有如預期那樣發展。即使是以當時的標準而言,其內置的 UI 工具包看起來也很醜陋。那些請求同一資源的應用可能會互相衝突,破壞彼此的功能,除非卸載其中一個應用程序,否則根本無法修復。像列印這樣的特性漸漸沒落,因為將這樣的功能放在窗口管理器里就是個錯誤,而後續的維護者也缺少必要的專業知識或興趣去維護它。諸如此類,不一而足。
像 Qt 和 GTK 這樣的 UI 工具包迅速崛起,以更適合用戶和便於應用開發者定位的方式,接管了大多數此類應用平台程序的中間件職能。我們這裡說的是九十年代中期,那已是相當久遠的時代了。
(當然,這樣說可能有些不公平;人們抱怨 Wayland 缺少的其實並不是列印伺服器。實際上,更多的是關於應用能否設置自定義窗口圖標,以及移動自身的窗口。這些都是非常困難的情況;Wayland 上沒有這些功能,理由就是這些功能在 X11 中被濫用,導致了難以解決的問題。要將這些功能移植到 Wayland 並非易事,涉及很多的權衡決定。)
Linux 並非一個平台
然而,UI 工具包的興起無疑導致了應用程序的格局變得支離破碎。現在,FOSS 應用程序開發者不再為一個目標(X11)進行開發,而是為 Qt、GTK 或其他工具進行開發,從而我們看到了了大量的「KDE 應用」 和 「GNOME 應用」。是的,這些應用可能在其他平台里也能運行,但很明顯,它們是在哪個平台和工具包上開發的,在哪個平台和工具包上運行效果最好。在其他平台運行時,它們可能看起來感覺很奇怪,或者某些功能可能不好用或根本無法使用。
這就是我們今天的現狀。沒有人會專門去編寫一個 「X11 應用」;他們的應用可能會採用 X11 的某些特性,但這只是因為沒有更好的替代方案,而實際上,在應用的 99.9% 的功能實現中,他們會選擇 Qt、GTK、KDE Frameworks 或者其他相似工具。
這給我們帶來了一個潛在的棘手問題: Linux 也不是一個真正的平台,在成為一個平台方面它並不比 X11 更成功。因為幾乎沒人會專門編寫一個「Linux 應用」;直接調用原始的 Linux 內核系統通常是沒必要的,因為無論你使用的是什麼 UI 工具包,都會封裝這些功能,並且將其抽象到工具包所支持的所有各種平台上。這樣一來,工具包就能確保這些功能在 Linux 平台也都能順利工作。
真正的平台
那麼,對於跨桌面的互操作性而言,所有希望都已經破滅了嗎?不,實際上現在的前景比以往任何時候都要美好!因為如今事實上出現了一個新興的平台;如果你需要,它可以將各種應用工具包都抽象化。我說的是 Portals、PipeWire,以及 Wayland 協議。
Probonopd 認為這些都是附加組件,不應該在系統上運行,但我認為他的這種觀點並不站得住腳。提供全面功能的單體窗口伺服器模式在幾十年前就被證明是失敗的。取而代之的是庫和 API,每個 FOSS 開發者都可以合理預期在現代系統運行這些。
門戶系統提供了一種標準化的方法,用於展示平台原生的打開或保存對話框、發送通知、以其他應用打開文檔、列印文檔、拍攝截圖、錄製屏幕、處理拖放操作、查看用戶當前主題是亮色還是暗色,等等。在很多功能的實現上,門戶系統都倚賴於 PipeWire,因此你可以預期 PipeWire 也會被安裝。同時,你也可以期待大部分 Wayland 合成器 — 尤其是兩個最重要的合成器 KWin 和 Mutter — 支持幾乎所有公開標準化的 Wayland 協議。
我認為這就是平台:Portals + Wayland + PipeWire。很明顯,並沒有一個好記的名字來囊括這一切。? 或許我們可以叫它 PW 2。不過,如果你的應用程序以這些平台為目標,那麼它幾乎可以在所有現代 Linux 系統上運行。並且,Qt 和 GTK 這兩個大型的 FOSS 工具包都為此提供了全面的支持。所以,使用你喜歡的任何 UI 工具包都可。
為何是現在?
我們最近聽到越來越多關於這個話題的討論,因為這個轉型正在加速發展。X11 的維護者已經宣布終止對其的維護,而 Plasma 則開始默認採用 Wayland,GNOME 也是如此。Fedora 甚至完全放棄了對 X11 的支持。
我們現在正處於這樣一個階段,那些以前從未考慮過這個問題的人開始思考,並意識到他們的特定使用場景所需的所有組件都還沒有到位。可這其實是好事!他們的意見被聽取了,變化就有可能發生。我希望這一切能早點發生,但我們也要承認現實,我們還在路上,最近圍繞遠程控制、色彩管理、繪圖板以及窗口布局等方面的提案和工作非常頻繁。可能會有一個尷尬的階段在等我們,直到所有需要的部分都到位。對於那些由於關鍵遺漏而備受困擾的人,我建議他們繼續使用 X11,直至問題解決。沒人會去阻止你(嗯,除了 Fedora,所以如果你確實無法適應,那就不要用 Fedora ?)。探索新事物應該是充滿樂趣的,如果不是這樣,那就轉換一個角度再嘗試吧。
結語
在這個語境下,「毀掉一切」或許可以更準確地表達為「還沒完全移植所有事物」。這種移植是必要的,因為 Wayland 設計的目標聚焦於未來,而未來並不完全兼容我們過去所做的一切,因為事實證明,其中很多東西已經沒有意義了。對於那些有意義的東西,我們已經提供了一個兼容層(XWayland),同時,任何需要深度系統集成的部分,一般都有一個解決的路徑(如 Portal、Wayland 協議以及 PipeWire)或者正在積極的研發中。整個世界,都在發生變化!
(題圖:DA/d5a50347-47e0-472f-833b-58203196a743)
via: https://pointieststick.com/2023/12/26/does-wayland-really-break-everything/
作者:Nate Graham 譯者:ChatGPT 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive