Ubuntu放棄Unity,極大打擊Linux必勝信心
這幾天看到 Ubuntu 放棄 Unity 和 Mir 開發,轉向 Gnome 作為默認桌面環境的新聞,作為一個Linux十幾年的老兵和Linux桌面的開發者,內心頗感良多。
Ubuntu 做為全世界Linux界的桌面先驅者和創新者,突然宣布放棄自己多年開發的Unity, 相當于在桌面領域,直接放棄了戰斗向微軟投降,不僅僅是Linux桌面的悲哀,更是對于全球Linux黑客堅信Linux必勝信心的極大打擊。

曾經的Ubuntu粉絲
我還記得2006~2007年,那時候我還在成都寫手機游戲,當時年少輕狂的我,一直幻想自己要做最牛掰的開發者,就像科幻電影里面的黑客一樣,無所不能。那時候雖然Windows玩的很溜,但是一直都在核心技術外徘徊,不知道如何達到個人目標。
上學的時候玩過 RedHat 6.0, 也裝過 KDE/Gnome 的桌面環境,但是系統中的各種問題,比如無法使用輸入法、中文字體配置很差,甚至因為顯卡驅動的原因都無法正常開機,所以Linux對于當年的我來說,就像神話一樣,只有頂級黑客才能玩的轉的系統。
直到后面用了 Ubuntu 6.10 和 Ubuntu 7.04, 當時的Ubuntu可以說是非常驚艷,原來RedHat和SUSE在桌面端的各種細節問題一掃而光,裝上系統以后就可以直接用,而且還可以非常容易的安裝應用軟件來深入學習Linux??梢哉f是Ubuntu帶領我真正的入門了Linux, 經過很多年的深入學習Linux, 到后來在Linux上開發Emacs和Haskell相關的項目,直至后面創業做 deepin 操作系統。
從我個人來說,對Ubuntu系統以及背后的開發者都是懷著無比的敬畏和崇拜。
我看這么多年 Ubuntu 的發展
Ubuntu從當年最佳的Linux桌面操作系統到今天宣布放棄自己研發的Unity桌面,已經有13年歷史了,在我看來主要有以下幾個階段:
最初的驚艷
Ubuntu最初的發展目標就是把原來Linux系統需要手動操作的基本配置,比如字體、輸入法和顯卡驅動等問題內置到操作系統中,用戶不用安裝系統后還需要跟亂碼、中文輸入以及顯示等問題斗智斗勇, 可以說那個時代的Ubuntu是解決了當時Linux普及的幾個重要問題,把Linux系統從當時只有開發者才能玩轉的高手系統普及到普通的電腦愛好者就可以折騰使用。
酷炫的Compiz管理器
我相信很多Linux愛好者都驚嘆于當年 Compiz 這個3D窗口管理器能夠達到的酷炫效果,比如3D旋轉桌面、拖動窗口的果凍效果、一把火燒掉窗口的效果… 特別是同時代的Windows系統都還是非常原始的2D效果,甚至XP的窗口連窗口陰影都還沒有的時候。當時的Linux系統的,特別是Compiz吸引大部分用戶去嘗試Linux系統,即使最后大家僅僅只是因為好奇或是玩玩,也大大增強了Linux系統的曝光率。
從另外一方面,Linux從當年Compiz發展十年以后,反而是那些簡單特效甚至沒有特效的Linux系統得到最高的用戶量,原因我覺得主要有兩個:
- PC這種生產力的工具最重要的是高效,非??犰诺奶匦чL時間用,反而會極大干擾用戶視覺,進而影響用戶對內容的專注力,而且時間長了也很容易引起用戶的視覺疲勞,反而是Mac那種恰到好處的輕微動畫讓用戶感到優雅和舒服, 這方面Linux發行版 Elementary OS 做的要好很多
- 任何操作系統需要長久留住用戶,還是需要靠優秀的人機交互設計和豐富的應用來留住用戶,操作系統只有給用戶帶來真實的價值,讓用戶工作更高效和生活更快樂,用戶才會長期堅持下去,光靠酷炫的動畫吸引,用戶一旦視覺疲勞以后,最終還是會放棄Linux, 因為一個操作系統不能解決用戶日常遇到的各種問題,在用戶心中最多就是一個好玩的玩具而已
Gnome3 vs Unity
在 2011 年底, Gnome 發布了它最新的 Gnome3 系統, 當時 Gnome3 以酷炫的特效加上 JavaScript 的插件體系而吸引了開源社區開發者的興趣,特別是 Gnome3 內置 GJS 引擎,可以直接在桌面環境中編寫 JavaScript 插件后直接 reload 即可更新桌面環境的功能和視覺效果,還有吊炸天的 inspector 特性,可以直接通過鼠標點擊界面后定位到對應的代碼位置,再加上 GJS 可以從屏幕頂部打開一個類似 quake terminal 的下拉調試環境,在調試環境中直接像腳本語言那樣實時列出任何對象的屬性和方法,立即改立即生效。
上面這些開發者特性,在那時候 Google 滿天吹噓 Html5/JavaScript 的美好未來的大環境下,對于開發者有極大的誘惑力,很多開發者都奔著 Gnome3 這些類似 Web 的開發方式而去,并貢獻了大量好玩的插件。
在 Gnome3 之前, Ubuntu 一直都在用 Gnome2 桌面環境,其實 Gnome3 在 2011 年發布之前已經規劃了2年,從當時的宣傳來說是下一代桌面環境,2009, 2010年Gnome3還在社區發布了大量吊炸天的預覽視頻。作為當時桌面系統先鋒的 Ubuntu 也非常期待能用上 Gnome3。 而無奈 Gnome3 一次又一次跳票,最后Ubuntu實在等不及了,就在 Gnome2 桌面環境后臺服務的基礎之上,開發了自己的 Unity UI。
當時社區也因為 Unity 和 Gnome3 的很多設計理念類似譴責Ubuntu在進行分裂行為。
Unity 產品的特點主要定位在幾點:
- HUD 的左上角搜索設計,快速搜索應用和很多插件提供的搜索結果,這一點和 Gnome3 的Launcher插件體系非常像,通過插件,可以搜索除應用外的更多搜索結果(比如天氣、在線視頻、計算器結果等)
- 任務欄固定在左邊,對寬屏更加優化,相對于程序員有更多的縱向空間
- 全局菜單,通過合并頂部欄和窗口標題欄,進一步節省縱向空間
我個人并不喜歡這些面向開發人員(而不是面向普通用戶)的設計,但是撇開個人的主觀設計喜好外,我認為Unity 是相對于 Gnome3 更成熟的產品,Unity 的很多改動都是針對 PC 桌面系統的真實痛點來改進的,特別是一些程序員的用戶很喜歡 Unity 諸多設計。而不是像 Gnome3 那樣一味的追求平板用戶體驗,極大降低了PC桌面用戶的習慣和易用性, Gnome3的槽點我后面詳細說。
不論從商業公司的獨立性發展考慮還是產品質量負責的角度,我都是非常支持 Ubuntu 當時獨立開發自己Unity 桌面環境的行為,Unity 確實在隨后的幾年證明了自己的產品質量和設計細節都比 Gnome3 要好很多。
Wayland vs Mir
在 Gnome3 和 Unity 發展的同時,Intel的雇員 Kristian H?gsberg 正在領導開發新的顯示服務器。Wayland相對于古老的X11來說最大的提升是,Gtk/Qt 這些圖形庫進行圖形繪制時,不用像X11那樣發送繪制消息到XServer來進行繪制,而是由Client自己進行圖形繪制,Wayland只用擔任圖層混合器的作用。這樣不但減少了X Client和X Server之間不必要的通訊,而且因為由Client自己進行渲染,所以很多畫面撕裂和閃屏的現象從原理上就避免了。
大家可以看一下下面的兩張架構圖來理解兩者的差別:


Wayland 因為要徹底從技術架構上顛覆Linux幾十年X11的渲染方式,不論從架構設計還是代碼實現上都會非常復雜,不但要開發協議本身,還需要開發適合Wayland的混合器和窗口管理器,最后導致Wayland 1.0穩定版一再跳票。
而Ubuntu在獨立開發Unity桌面環境的同時,也仿造了Wayland的架構開發了自己的Mir顯示服務器,除了等不及Wayland穩定之外,更重要的是Ubuntu要為了它的下一步宏偉計劃 ”Ubuntu Touch” ,按照Mark的設想,Mir不僅僅要像Wayland那樣從原理上提升Linux圖形渲染效率,而且Mir還得擔負起手機和電腦融合的使命,可以讓Ubuntu Touch的手機在插上顯示器底座時,手機的應用通過Mir的支持,可以直接在外接顯示器上顯示手機應用窗口,最終達到“當你手機放到底座時就是電腦,拿走就是手機”的設想。
不論Wayland還是Mir,雖然底層架構都非常先進,但是為了兼容現有的X11程序,它們分別開發了 XWayland 和 XMir 用于在新的顯示服務器協議上支持現有的大多數 X11 程序(主要是Gtk2/Qt3/Qt4開發的大多數應用)。
具有諷刺意味的是,Wayland和Mir本來就是要解決 X11 那種不適合現代PC場景繁瑣的通訊協議,甚至很多開發者為了技術的潔癖都在大力安利 Wayland/Mir ,但是最后 XWayland 和 XMir 本身的兼容實現卻比 X11 的實現更加“惡心”和繁瑣,包括Mir的開發者最后都放棄 XMir 的開發。
正是因為Wayland/Mir這樣的技術無法徹底解決和大部分原本就基于X11協議而開發的應用的兼容性問題,最后導致基于Wayland/Mir開發的桌面系統從 ”解決渲染性能問題“ 轉變到 “無法運行很多現有Linux應用” 這一個更加讓用戶難以接受的結果。這也是后面基于Mir開發的新版Unity難產的重要原因。