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