![]()
Linux開發者喜歡重新發明輪子,這已經不是什么秘密。就像房間里的大象一樣顯而易見。
實際上,Linux本身以及構建它的GNU工具都是對現有專有工具的自由開源重新創造。但盡管經過超過三十年的持續開發,Linux只有一個版本,GNU工具的替代品也很少。有些領域能夠保持統一。
然而,有些領域卻失敗得相當慘烈。讓我們看看在FOSS桌面中一個更嚴重的例子:任何終端用戶操作系統最可見的部分——桌面環境。
正如我們之前詳細討論過的,當今FOSS中絕大多數桌面環境都共享相同的設計,這是一個源自Windows的設計。近20年前,微軟曾威脅要就此提起訴訟。雖然最終沒有發生,但并不是因為微軟缺乏證據:正如我們在2013年詳細說明的,跡象非常明顯。訴訟沒有發生是因為不清楚應該起訴誰,或者是否可以起訴任何人的免費社區驅動努力。
我們所說的類似Windows是什么意思?具體來說,是類似Windows 95——因為從那以后的每個Windows版本都繼承了相同的核心設計。當Windows 95迎來20周年時,The Register給予了它一個小小的致敬,你可以在那里看到核心設計。屏幕一整個長邊上有一個面板,從左到右閱讀,首先是應用程序啟動按鈕,然后是打開窗口的一排按鈕,接著是一個帶有時鐘的凹陷"系統托盤",通常還有一些通知圖標。其中一些用作揚聲器音量等功能的控件。啟動器按鈕打開分層視圖,頂層有主要應用程序和系統控制功能,加上包含輔助功能的文件夾。
基于圖標的文件管理器,每個窗口中有一個可選的左窗格,包含目錄層次結構的可展開樹。在此之前,文件管理器最流行的布局是經典的Norton Commander風格,現在稱為Orthodox File Manager。甚至Windows 3的文件管理器也是這樣工作的。
Windows 95中用戶界面功能的組合是獨特的。在它之前沒有任何東西具有所有這些功能。充其量,有一些斷開連接的功能模糊地相似,比如RISC OS的圖標欄或NeXTstep的Dock。但是從1995年開始發明的幾乎所有東西都具有這種確切的組合。
按照21世紀的標準,Windows 95是微小的。第一個版本只適合13張軟盤。對于那些不記得磁盤的人來說,它不到25 MB。
原始的Windows資源管理器是200 KB的代碼。雖然很小,但它是一個杰作,它重新定義了計算機用戶界面,這種情況直到22年后的iPhone才再次發生。
在我們看來,它至今還沒有被超越。這就是為什么這么多團隊和產品都復制了核心設計。
原始資源管理器的設計不僅在視覺上簡單:至少一些底層實現也是如此。例如,在Windows 3.x和NT.x中,程序管理器只支持單級層次結構。應用程序必須保存在組中,存儲在.GRP文件格式中,這些不能嵌套。相反,資源管理器引入了快捷方式文件,開始菜單存儲在簡單的目錄樹中:圖標是快捷方式,子菜單是子目錄。Linux自然有自己的版本,這相當復雜。
Linux上有數量驚人的Windows風格桌面——這主要也適用于BSD。它們大多數用C實現,并且大多數使用各種版本的Gtk工具包來制作小部件:菜單、對話框、按鈕等。
按大致年齡順序,今天仍在維護的有Xfce;MATE,這是GNOME 2的分支;LXDE;Linux Mint的Cinnamon;以及用以GNOME為中心的Vala語言實現的Budgie。
GNOME在第3版中重新發明了自己,變成了非常不像Windows的東西,但它仍然提供GNOME Classic和GNOME Flashback,這兩者都具有更像GNOME-2的桌面布局。Cinnamon桌面最初是一組稱為MSGE的自定義,但變成了一個完整的分支,偶爾會重新基于上游GNOME Shell的較新版本。Zorin OS桌面仍然使用多個擴展的方法,而不是分叉代碼。
LXDE在主要開發者轉向LXQt后,已經安靜了幾年,但最近有一些更新。即便如此,許多發行版仍然提供LXDE,Raspberry Pi OS仍然使用一些LXDE組件。它的繼任者LXQt,像KDE Plasma一樣,使用Qt工具包而不是Gtk,用C++代替C。繼續的KDE 3.5分支Trinity Desktop也是如此。
在西方很少見到但在東半球更常見的是另外兩個類似Windows的桌面。Uniontech的發行版使用深度桌面環境,麒麟系列發行版使用UKUI。一個或兩個在從Arch到Ubuntu的各種其他發行版中也可用,兩者似乎都包含Gtk和Qt組件的混合。
到目前為止有13個。現在我們深入到黑暗森林...
雖然它可以做更多,但Enlightenment共享相同的默認布局,繼續的分支E16和Moksha也是如此。所有這些都使用它們自己版本的Enlightenment Foundation Libraries而不是Gtk。
Equinox桌面環境EDE使用FLTK而不是Gtk。由于FLTK再次積極開發,也許EDE應該更新了。XPde使用Kylix,Delphi的Linux版本,而不是C,但它也早已死亡。Lumina是用C++和Qt為FreeBSD構建的,但近年來也在Linux上運行。同樣極簡的是ChromeOS桌面Aura。
IceWM重新積極開發,JWM(Joe's Window Manager)也是如此。甚至FVWM95幾年前也得到了更新。公平地說,這些是窗口管理器,不是桌面,但它們仍然共享熟悉的任務欄和開始菜單設計,并在當前的發行版中使用,如antiX和Damn Small Linux。
現在我們達到了23個。我們可以挖得更深,但我們希望現在已經說明了這一點。這里有幾種不同的語言(但遠少于23種),以及幾種不同的圖形工具包(但再次,遠少于20種)。這是花費在重新發明然后維護軸端圓形物體基本概念上的巨大努力。
但這里的基本概念實際上是相當簡單的。窗口管理器無法匹配Windows 95資源管理器的功能,沒有一個桌面捕獲了原版的簡單優雅。Windows 95讓你把任務欄放在任何屏幕邊緣,但你只得到一個,你不能改變它的長度,或重新排列或調整其內容的大小,更不用說改變它們的方向。多行是你唯一的選擇。
今天,我懷疑很少有FOSS開發者記得Elvis或Stevie。它們是早期另外兩個領先的FOSS Vi克隆——你知道,19世紀末。
想象一下,如果我們有23個不同的Vi克隆,而不是Vim,每個發行版都包含其中大部分,因為它們的愛好者仍在爭論哪個更好。想象一下,如果它們每個都有自己的配置文件格式,并且不能導入其他的。想象一下,除了核心的1970年代用戶界面之外,它們都使用不同的按鍵。所有都有自己的語法高亮例程、自己的腳本語言、自己的插件等等。
除了純粹的混亂,它們中的任何一個似乎都不太可能獲得Vim的功能嗎?
沒有辦法將所有不同的類似Windows的Linux桌面合并為一個,甚至只是三個或四個。沒有有用的方法將用C編寫的大型程序與用C++或Vala編寫的程序結合,或將使用Gtk構建的程序與用Qt構建的程序結合。
但它們可以協作合作。
記住Unix哲學的基礎:
編寫做一件事并且做得很好的程序。編寫協同工作的程序。編寫處理文本流的程序,因為這是一個通用接口。
1995年的設計很簡單。桌面的組件——任務欄、文件管理器、文本編輯器等——不需要交換大量豐富、復雜的消息。
用戶應該可以自由地——例如——將MATE面板與Xfce窗口管理器、Cinnamon文件管理器和Budgie開始菜單一起使用。
所有都可以共享通用設置格式。所有都應該能夠讀取相同的配置文件,并理解三十年前建立的相同核心最低公分母功能,比如主面板在哪里。我們當時不需要重新排列面板項目,現在也不需要:重新排列泰坦尼克號上的甲板椅是一個毫無意義、浪費行動的諺語。
近兩打不同的類似Windows的用戶界面代表程序員努力、技能和時間的巨大浪費。數百人,也許數千人,幾十年來努力工作...但都在不同的項目上,意味著它們都沒有達到偉大。例如,看看KDE Plasma的36個啟動器菜單。
距離KDE首次發布已經27年了,我懷疑微軟從那時起一直在笑著賺錢。FOSS世界可以做得更好,是時候開始嘗試了。
Q&A
Q1:Linux為什么有這么多類似Windows的桌面環境?
A:Linux開發者傾向于重新發明輪子,幾乎所有FOSS桌面環境都復制了Windows 95的核心設計:屏幕邊緣的面板、應用程序啟動按鈕、任務欄和系統托盤的組合。因為這個設計在1995年是獨特且成功的,所以被廣泛復制,導致出現了23個以上的類似實現。
Q2:這些不同的Linux桌面環境能否合并成一個?
A:無法直接合并。因為它們使用不同的編程語言(C、C++、Vala等)和不同的圖形工具包(Gtk、Qt等)。用C編寫的程序無法與用C++或Vala編寫的程序有效結合,使用Gtk構建的程序也無法與用Qt構建的程序合并。
Q3:如何解決Linux桌面環境碎片化問題?
A:雖然無法合并,但可以通過協作來改善。遵循Unix哲學,讓不同組件能夠協同工作,比如允許用戶混合使用MATE面板、Xfce窗口管理器和Cinnamon文件管理器。所有桌面應該共享通用設置格式,能讀取相同配置文件,理解核心基礎功能。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.