开源 微软 云计算 Python mysql 程序员 wordpress Ubuntu linux nginx Android google shell php Windows 编程 centos apache java Firefox

Ubuntu放棄戰鬥,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。可以說是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這種生產力的工具最重要的是高效,非常酷炫的特效長時間用,反而會極大幹擾用戶視覺,進而影響用戶對內容的專註力,而且時間長了也很容易引起用戶的視覺疲勞,反而是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自己進行渲染,所以很多畫面撕裂和閃屏的現象從原理上就避免了。

大家可以看一下下面的兩張架構圖來理解兩者的差別:

X-architecture

Wayland-architecture

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難產的重要原因。

Ubuntu Touch

就像每一個程序員都有一個黑客夢一樣,每一個Linux開發者都希望能用上純粹的Linux手機操作系統,特別是Linux技術圈領域,大家更希望有一個面向開發者可玩性更強的Linux手機操作系統。

Mark從2011年宣布開發Ubuntu Touch到2015年第一只搭載Ubuntu的智能手機在歐洲上市,Ubuntu把大多數主力開發都投入到Ubuntu Touch世界上最好的Linux桌面開發團隊把4年的時間浪費在開發一個在PC、手機、平板和電視上擁有強迫癥般統一界面的Unity上,而且希望Ubuntu Touch能夠占領低端的智能手機操作系統市場,或者像Mark說的那樣在Android外給世界另外一個選擇。

這4年的時間,因為主力開發Ubuntu Touch的原因,Ubuntu桌面操作系統從原來的高速創新到鮮有改動,往往版本的發布就是軟件倉庫更新加上壁紙更新就發布新版了,不再像原來一樣,每個版本都來易用性的提升和功能增強。

而且大家都知道,2011年~2015年這幾年正是安卓系統從起步到發展成全球移動操作系統霸主的4年,Ubuntu閉門造車了4年到2015年發布第一臺Ubuntu Touch手機以來,Ubuntu Touch手機在全球銷售慘淡,甚至無人問津。

Ubuntu今天放棄自己開發的Unity重要原因,就是因為Ubuntu耗費了公司所有資源在開發一個用戶根本就不會買的手機操作系統,Ubuntu Touch可以說是Ubuntu最愚蠢的決策:

今天的手機和手機操作系統的發展就像當年 Wintel 的PC時代一樣,芯片和硬件越來越快,硬件的快速叠代更新速度都快於軟件層面的優化速度,就算最低端的手機性能甚至都比十幾年前電腦更快,而手機作為現代消費品來說,用戶更關心的是手機是不是新款的,能否打遊戲,美顏拍照功能是否更好?智能手機時代,大家不再對低端智能手機感興趣,所以“低端智能手機操作系統”本身就是一個偽命題

智能手機作為最方便的通訊和娛樂工具,能否打遊戲和基本應用是大家用一款手機最最最基本的要求了,可Ubuntu Touch不能玩遊戲、不能上QQ和微信,只能打開終端和一些網頁應用,不要說普通用戶,我想就連那些天天嚷嚷 ”我們需要一款Linux手機操作系統“ 的開發者都不會用它

強迫癥般的統一設計:在5寸大屏的手機,整個任務欄切換全部在左側,大家可以試一下,你在正常拿手機的情況下,能否方便的用大拇指去夠最左側的Launcher, 甚至還要在手機左側的頂部和底部上下移動?把手指移動到手機頂部左右移動查看狀態欄(你的手指夠的到頂部嗎?然後再做左右運動?)也做為一個創新設計宣傳,這些反人類的設計是我作為一個產品經理非常無法忍受的,我經常吐槽Ubuntu Touch: Ubuntu Touch的交互設計師平常要不就是把手機放到桌子上設計的(而不是單手體驗一下),要不就是Ubuntu Touch手機是屏幕廠商開的,Ubuntu Touch的很多交互設計都非常容易讓手機從手裏面滑落

Ubuntu Touch不論從公司戰略、產品時機、應用生態還是交互設計各方面來看都是非常愚蠢和非常失敗的產品,而這一切都要怪罪於Mark本人開發者的產品思維和一意孤行,白白浪費了世界頂尖開發者的精力和理想。

FlatPak vs Snap

Linux桌面發展到今天依然無法和微軟以及蘋果系統本身競爭的一個重要原因就是,Linux系統軟件包之間的依賴問題,系統和應用之間的緊耦合,應用和應用之間的依賴庫緊耦合,只要底層庫升級了,系統升級有可能會把應用升級掛,一個應用升級很有可能會導致另外一個應用無法使用。

如果把系統所有的軟件包和應用的依賴打印出來,你會發現整個桌面Linux操作系統就像一張巨大的錯綜復雜的蜘蛛網,蜘蛛網的任何一環壞掉都會引起系統和應用不穩定甚至無法使用的問題,同時應用廠商為了開源社區的諸多底層庫升級疲於奔命, 最後的結果是,Linux操作系統在底層5萬個軟件包,2000多個應用,700個精品應用的時候,就已經非常非常的不穩定了,如果有一天Linux平臺有上十萬個應用的時候,系統和應用一定是崩潰的,因為任何底層的技術革新都會帶來應用廠商的應用會失效或者因為API不兼容最後無法運行。

所以,為了迎接將來Linux操作系統應用生態爆發的那一天,Linux操作系統必須像微軟和蘋果那樣,在系統和應用之間構建一條抽象API層,有點類似微軟的 Win32 API和.Net 的意思,只要應用遵守中間層的運行時API和接口以及應用之間做到互相隔離開,應用升級就不會影響到其他應用,系統底層做再多規模的底層庫革新,只要革新完以後保證中間層調用接口不要變,系統的升級就完全不會影響到應用的穩定。

舉一個最簡單的例子,微軟從Windows XP開始,操作系統底層技術一直在變,但是你會發現十幾年前應用廠商為Windows XP開發的應用依然可以在Windows 10最新的操作系統上運行,這種類型的兼容性才是桌面應用生態賴以生存的重要技術保障。

而Gnome開發的FlatPak和Ubuntu開發的Snap就是為了解決應用之間的隔離而生的技術,這兩個技術都通過Linux內核的cgroups技術,FlatPak是通過OsTree來解決應用多版本的問題。通過把應用之間隔離在沙盒之內,保證不同應用之間或者應用不同版本之間完全在文件系統上進行隔離,這樣就徹底解決應用之間升級互相影響的問題,而且這兩種技術通過引入應用程序運行時的runtime接口,保證了系統和應用之間有一個穩定的接口,從側面也保證了系統和應用之間的依賴分離。

FlatPak和Snap都能解決Linux系統依賴的問題,FlatPak的目標是解決Linux桌面現有應用的問題,Snap則是為了解決Ubuntu Touch而生的。

聽說Mark希望Snap不但能夠運行在Linux上,還能運行到別的操作系統上。在我看來這也是一個錯誤的選擇,微軟和蘋果找就有相關的成熟技術,根本不需要snap, 反而是Linux才需要這樣的技術,希望 Ubuntu 能夠把 snap 的技術發展壯大,有利於Linux操作系統的應用生態。

Gnome是一個比Unity更差的選擇

從Ubuntu放棄Unity的那一刻起,Ubuntu已經放棄桌面了。很多不了解桌面環境開發的用戶會覺得Ubuntu不是回歸Gnome了嗎?應該是開源社區的好事啊?

桌面操作系統的用戶體驗和交互細節息息相關的就是桌面環境,而Gnome3桌面環境從各方面來說都不是面向普通用戶的高質量產品。

核心開發者更關心技術折騰, 不再關心產品質量和API兼容性

Gnome好的地方是開發了封裝了大量基於GObject的庫,外部開發者能夠快速基於這些GObject庫來開發程序。

但是從開發者的技術選型來說,比如最開始做vala, gnome Shell的時候做 GJS/JavaScript, 到最近討論用rust, 這些都可以看出Gnome3的開發者更關註的是實現桌面環境後臺的編程語言和技術是否是最酷最新的,追求這個世界上最先進的技術是每個開發者的源動力,但是Linux桌面這十幾年之所以發展停止不前的重要原因是:用戶喜歡一個開箱即用、美觀和穩定的桌面系統,用戶不關心實現這些的後臺技術是否是最屌的。對於真正理想的研發團隊,或者真正的頂尖開發者來說,編程語言和最新的開發庫只是工具和程序表達方式而已,只要編程能力高,什麽程序都是可以開發的。

而Linux社區的開發者,大多數開發者本身都是喜歡折騰最新技術的,因為最新的技術對於開發者來說可以學到很多新的知識,他們在新的編程語言和新的技術基礎之上能夠做出自己的東西,讓自己更有價值和快樂,而這些都是非常自然的地方。但是我們應該考慮在先進技術的同時,面向真正的桌面用戶做出穩定可靠的產品。

Gnome3即使面向開發者都是極度不友好的,整個桌面環境就完全在一個JavaScript的環境中,中間沒有任何整體的API設計和插件接口,Gnome3的插件作者都是通過 Gnome Shell 調試器追蹤到一個JavaScript的Object對象,通過屬性鏈的方式魔改很多對象的屬性方式,最後來開發出 Gnome3 的插件。不通過插件API接口,而是通過對象的屬性來編寫的插件,導致只要 Gnome3 的核心代碼一改變,或者屬性鏈中的任一一個變量發生了變化,Gnome3插件就失效了,目前Gnome3在線插件的頁面也只有20%的插件能夠在最新版的Gnome3環境中安裝運行。

Gtk+已經無力和Qt抗衡

我個人作為Gtk+骨灰粉,也是Gtk2hs的核心開發者,對Gtk+ 2000多個API以及很多GObject庫(比如vte,webkit,poppler等)都非常熟悉。但是自從Gnome3弄傷心以後(我曾經寫了12個Gnome3插件,1萬多行代碼都因為Gnome3各種亂改API後升級失效),我對Gtk+的信心也隨之大大降低。

特別是Gtk+3這個被Gtk+/Gnome開發者盛贊的版本,除了添加了一下 Overlay 的控件和CSS屬性功能外,再沒有大的功能改進。反觀Qt, 從Qt4時代的各有千秋到Qt5的大幅度提升質量和功能,包括最新的QML大大提升了圖形應用程序的開發(雖然QML對顯卡兼容性還是有點問題)。

Gtk+的很多API至今多有很多隱藏的小技巧,需要多年的踏坑經驗才能完全掌握,而Qt本身的API設計要優秀的多。

Gnome3 不是一個產品質量的桌面環境

Gnome3 並不是一個產品質量的桌面環境:

JavaScript本身不適合作為桌面環境這種常駐程序的開發語言,不論在執行速度,特別是在內存的控制上非常容易導致長時間運行不關機,內存越用越多的情況

Gnome3除了窗口管理器mutter是單獨一個進程外,所有的桌面模塊(任務欄、頂部條、啟動器、工作區)都是在同一個進程中運行,這樣就導致只要有任何插件發生錯誤,整個桌面環境的所有模塊都會連帶崩潰而無法使用

Gnome3的整個設計理念都是面向平板的,比如托盤區域默認隱藏,任務欄要戳一下熱點才能顯示,啟動器圖標過於巨大等,這些設計都會嚴重的影響PC日常使用的習慣和易用性

所以Gnome3與其說是不如Unity桌面環境(我相信Ubuntu的Mark也知道),還不如說Ubuntu徹底放棄在桌面上的創新和主力研發,徹底向微軟投降了。

開源社區 vs 商業產品

從最初的RedHat放棄桌面系統,Suse和微軟深入合作,2016年Ubuntu移植Bash到Win10, 到如今Ubuntu放棄Unity和Mir後,這麽多年,大家在開源事業上努力奮鬥,但是從最開始的鬥誌昂然到如今的放棄,為什麽開源的桌面系統做不好呢?

我個人也在帶領團隊開發deepin操作系統,這麽多年開發Linux桌面操作系統的經歷,我個人對於開源社區和商業產品的理解有幾點:

Geek是這個世界的革命先鋒,但不能以Geek理念做產品

電腦極客在以飛快的速度在改變世界,正是有這些非常聰明的極客和開源黑客,全世界的科技發展,特別是開源技術的在最近十年獲得了極大的發展。

電腦極客在所有人的類型是非常稀少的,這些全世界1%的人用各自的聰明才智推動開源運動的發展,包括Ubuntu的CEO Mark本人也是極客中的極客,曾經的Debian開發者,在推動Ubuntu初期解決了很多Linux桌面易用性的問題。

電腦極客與其說是一種職業,還不如說是一種生活方式,電腦極客希望全世界都像電腦運行那樣:剛正不阿、完美、統一的美,沒有一絲一毫的例外情況,所有的結果都應該在預計和期望範圍。

但是不能用極客的思維去做產品,因為這個世界本質就是混沌的、有各種各樣缺陷、更強調社會習慣和協作,而普通用戶組成的非電腦社會,更多人只在乎這個社會都在怎麽使用電腦?大家在流行使用什麽?他們更在於電影明星在用什麽,模仿各種潮流,而不在於一個程序員內心在想什麽。

Ubuntu最開始推崇Unity,是從產品質量和公司的掌控力出發的,開源社區指責的分裂我覺得是不客觀的。但是後面為了統一PC、手機、平板、電視的整個操作界面,所有界面都基於左側任務欄+頂部任務欄+搜索導向的Unity啟動器來設計的,從極客愛好者來看,這是一種從程序代碼到總體實現的一種統一,一種認為世界會贊賞的方式來構建Ubuntu系統。

反觀我們自己作為一個普通人,我們會怎麽對待這幾樣設備?

PC: 作為生產力工具,比如要寫一個文檔,寫段代碼,做一個復雜的表格和圖像時,PC絕對是生產力的代表,但是因為PC大多數都需要一個人在固定的地方長時間的工作,所以現在PC不是淪落了,而是專註於工作環境的計算平臺,所以PC感覺給人很嚴肅很累,而人做為一個天性懶惰的動物,大多數人是盡量幹完工作就離開PC的,但是無論如何,PC作為整個社會的生產力工具,確實必不可少

手機:手機作為大家最順手的工具、玩遊戲、聊天、瀏覽頁面等,可以說是現代人的第三只手,大部分時間都離不開手機這種移動計算設備

平板:一種非常輕量的電腦,不需要過多的知識,不需要看著密密麻麻的的鍵盤,只用直覺化的操作即可

電視:我能想到的最佳狀態就是,躺在沙發上,拿著遙控板,看電影,上下左右確定,這就是最常用的操作

我們認真的總結,即可發現這幾個設備的常用交互方式:

PC:  鼠標+鍵盤
手機: 大拇指
平板: 食指
電視: 遙控板
所以電腦極客經常問的一句話 “為什麽不做手機操作系統?”,更多的時候是在問 “為什麽不能像PC那樣把別的計算平臺做的更加賦予生產力?”,所以當初Ubuntu Touch追求的 “同一套Unity界面,讓不同的計算平臺用統一套界面和交互設計來滿足”,這本身就是一個偽命題,或者說是電腦極客自己的一廂情願。

這幾個計算平臺不論從使用場景、用戶交互習慣還是用戶對這些計算設備的期望都完全不同,當初微軟融合電腦和平板本身,都已經讓喜歡PC的用戶大大不爽,最後迫使微軟停止融合的設計,改回最初的PC操作設計。而Ubuntu所有計算平臺的操作融合更是錯的非常離譜,當第一代Ubuntu Touch手機推出市場後,先不論應用的稀缺,光是操作系統就和主流的 “看到圖標就點,返回就按Home鍵” 的主流手機操作系統截然不同,最後慘淡收場。

所以,極客本身是世界革命的科技先鋒,但是不能用極客思維去做產品,因為極客畢竟還是這個世界上的非常少數的人,極客思維本身無法代表更為廣泛的普通用戶。

底層技術的革新需要采用溫水煮青蛙的方式,而不是激進的踏進沙漠去構建大海

很多人經常問我 “deepin什麽時候用wayland?” ,我首先想回答的是 “合適的時候就會用”,但是我更想回答的是 ”deepin只會推動穩定的技術和產品給用戶,而不是拿用戶當小白鼠”。

Wayland和Mir本身都是非常革新的顯示技術,我相信也是Linux未來顯示技術的主流,但是作為現階段來說,Wayland依然不是一個穩定的產品級方案:

1、顯卡廠商原來都是基於X11的libGL進行驅動編寫的,雖然現在很多顯卡廠商也在往Wayland遷移,但是整體的顯卡驅動兼容性還不如X11, 直接的問題就是,一旦用了Wayland後,桌面系統會相對於X11更容易遇到花屏和無法登入圖形界面的情況

2、Wayland本身就是對於X11協議是一種顛覆,大量的現有Linux程序依然是Gtk+2/Qt4開發的,這些應用程序依然無法在Wayland運行,而新的Gtk+3/Qt5雖然都已經對Wayland進行了支持,但是這類應用還非常少,導致移植到Wayland會有大量的應用程序無法使用,雖然有XWayland項目,但應用兼容性和重寫的問題短期之內還不會有很大的改善

3、在X86這種CPU性能過剩的平臺,Wayland的性能提升並不明顯,最起碼普通用戶無法察覺這種性能提升,我認為Wayland現階段更適合那種能夠完全控制顯卡和應用本身,並且對渲染性能特別敏感的計算平臺,不適合PC這種開放式的高性能計算平臺

在顯卡廠商逐漸支持Wayland改善顯卡驅動的情況下,在Linux桌面,我覺得應該大力把桌面環境已經應用遷移到Gtk+3/Qt5的圖形庫上,等有一天顯卡廠商驅動兼容性足夠好以後,通過修改窗口管理器和移植應用的方式,直接把上層的桌面環境和應用軟件整體遷移到Wayland上。

當遷移完成後,用戶在顯卡驅動以及應用方面完全感受不到差異的時候,才能說是負責任和持續的遷移方案。而不是很多開源社區的用戶說的先遷移到Wayland上去再說,這樣會導致使用Wayland的時候,讓用戶同時面臨顯卡驅動和更加匱乏的應用生態問題。

如果打個比方,整個開源社區是整個世界,革新技術是革命領袖的話。任何一個Linux桌面系統從X11遷移到Wayland更應該考慮策略和漸進的替換方式,而不是一腳踏進沙漠以後要構建整個海洋。任何一項革新的技術除了技術先進性一定要考慮革命時期的群眾基礎,只有在革新的時候解決用戶的問題,得到用戶支持,這樣的技術革新才能完成底層核心技術的切換,否則就和當年Intel/HP大力推崇的安騰CPU,雖然各種技術先進,但是因為不兼容現有操作系統和應用,最後不得已而拋棄。

安卓生態時代,不要做Linux手機操作系統,這不僅僅只是一個技術問題

Linux桌面面對的是微軟的生態帝國,如果拼盡全力,可能還有1%的成功可能性。而Linux手機操作系統面對安卓的時候,會死的一點都不剩的。

為什麽會這麽說?因為微軟花了幾十年構建的生態帝國,是靠當時微軟在PC行業的勢,當時的時勢加上微軟自身的努力(只有做過操作系統生態的團隊才能理解微軟當年有多苦逼)做到今天的地步的。做操作系統系統這種承上啟下+白菜錢白粉心的企業一般都是前期是孫子後期是爺的命,前期遇到硬件應用和各種各樣奇怪的問題,操作系統廠商各種背鍋(為啥別的操作系統沒有這個問題?)幹各種不是操作系統應該幹的活,以一己之力推動整個生態的發展。而現在PC的所有生態和需求都已經定型了,微軟不會鳥你,也沒有各種不懂的媒體跟風幹擾你(他們最多就說PC是夕陽產業,哈哈),你和你的團隊只需要一點一點的努力,用十倍於微軟苦逼的努力,只要在某些行業和開源社區做出成績,就會有用戶認同你,PC再夕陽大家也不可能離開它,因為生產力是整個社會最基本的動力,大家都用手機和平板辦公,整個社會的生產力就會成倍的降低,所以大家離不開PC,我經常會諷刺那些說PC沒用,平板才是未來的朋友: “你用平板寫代碼或者你們公司的財務用平板給你算工資,我就願意相信你” 。

移動終端本身就是面向普通老百姓的新一代計算設備,在這個行業,所有的人,所有的企業都在圍繞安卓構建新的應用,面臨一個日新月異更新換代的行業,對於操作系統廠商來說,這些不是機會,而是你無法挑戰安卓系統的巨大阻礙,而且每天都會更大,因為有更多的開發者和開發廠商自己掏錢投入安卓陣營。人類社會是一個以跟風和模仿為基調的動物群體,當你做的和大多數人都不一樣,各種人就會幹擾你,導致你無法專心做好操作系統,而且面對一個不斷發展的生態,整個行業的切換成本是你現在無法撼動安卓的重要原因,因為安卓構建的不光光是操作系統本身,構建更多的是日益越大的行業投入和切換成本。

反觀PC行業,在真正有下一代生產力計算平臺出現之前(安卓只是娛樂平臺),PC依然是整個社會生產力的核心,大家不可能離開PC,PC也不會像很多沒有思考能力的人期望的那樣消失殆盡。任何PC操作系統廠商只要一步一步的花費數十年的時間,終有一天會構建龐大的桌面應用生態,在生產力上和開放源代碼上給這個社會帶來更多的價值,其實Mac系統本身就是一個很好的例子。

PC操作系統不是未來,但是PC操作系統是現代還不可或缺的計算平臺,而且PC操作系統是全世界對軟件工程要求最高的挑戰。當一個團隊具備實力能夠完整構建像微軟那樣的PC操作系統能力和知識積累後,這個團隊的實力能夠在下一代計算平臺掌握絕對的控制力。

大家熟知的勵誌故事就是:蘋果在PC被微軟打爆以後,用iPhone讓微軟再也爬不起來。

包格式只對系統核心有用,對於應用廠商毫無意義

我一直認為包格式是服務器操作系統和桌面操作系統系統核心才需要的東西,因為具有依賴關系的包特別適合構建相互關聯的操作系統底層核心庫,只要你升級一下核心庫,整個操作系統的核心技術就升級了,不用擔心冗余和更新問題。

但是包格式對於應用廠商無意義,操作系統站在應用廠商的出發點最應該考慮的是提供一套接口抽象層和應用隔離機制,抽象接口層的目的是分離系統和應用,應用隔離機制的目的是隔離應用之間在文件系統上的依賴。

只有這樣,才能真正構建一個Linux桌面的生態:

抽象層做好以後,操作系統可以在保持接口不變的同時,隨意革新操作系統核心技術,而不用擔心操作系統升級以後,應用程序無法運行的問題

應用隔離機制做好以後,應用廠商的不同版本和不同應用廠商的應用之間不會互相影響

開發者不用再寫完軟件還要考慮構建不同發行版的打包格式,這也是阻礙軟件無法在所有Linux發行版運行的重要原因

這樣做的目的是讓徹底解放操作系統廠商,操作系統廠商的開發人員可以把所有精力放在核心技術的開發和應用開發接口的維護上,而不用每天除了開發操作系統還需要打包各種應用軟件包。

應用的質量和功能應該由應用廠商自己維護,而不是丟鍋給操作系統開發人員,應用的好壞本質山應該通過用戶評價和經濟刺激讓應用廠商自己維護,如果應用長期沒有作者維護,用戶自然會拋棄應用的,進行自然淘汰,就像Windows上的應用,哪個作者更努力做的鞥好,用戶就會越多。

而不是像現在Linux發行版的打包人員,固定的幾十個人面對著成千上萬的應用軟件打包工作,不論從工作量還是持續發展來說,這種分擔工作量的組織方式本來就是不合理的,如果每個應用都需要操作系統開發人員來維護,固定人數和固定時間面對無窮的應用時,勢必會導致精力不夠,甚至核心的系統開發者不再給開源社區做貢獻時,他維護的應用的更新和質量就會下降,最後損害的還是用戶。

所以應用隔離的技術不僅僅只是技術上模仿微軟和蘋果,而是從社會的生產力上徹底解決工作分擔組織的問題,只有把應用的維護工作丟給應用開發者這些直接利益關系者才能持續的推動整個生態的前進,而不僅僅通過開源精神和信仰把所有的維護負擔都丟給Linux發行版的開發者。

Linux桌面的未來在哪裏?

說了這麽多,Linux桌面的未來在哪裏?

實話實說,我不知道,我要是知道的話,deepin早已經打敗微軟了,哈哈哈

但是從我這麽多年開發桌面系統的精力,我總結了幾條經驗:

PC不需要革命性創新,只需滿足桌面用戶長期的習慣+微創新, 大多數Linux發行版自嗨式的折騰後,用戶告訴我們他們最需要的PC操作系統就是那些盡量滿足他們PC操作習慣的系統,如果有一些局部的微創新能夠形成自己的特色就很好了

大力發展應用生態才是王道: Linux精品應用還在千這個量級,不論自己研發,還是和應用廠商合作開發,抑或通過商業來刺激應用廠商自己開發,才會有越來越多的用戶和行業去使用Linux操作系統,Linux桌面要成功,這是最最重要的一個一點,而不僅僅是拿開源作者或學生業余寫的軟件當做產品去忽悠現代這些越來越挑剔的桌面用戶

Linux桌面需要更深入的去解決普通用戶的問題: 需要針對Linux桌面用戶的痛點進行更深入的解決,除了上面說的應用外,比如顯卡驅動、打印機驅動以及行業應用都是非常必要和重要的

更多的用戶基數才能引爆Linux桌面生態: Ubuntu聚集了大多數Linux開發者,真正的Linux桌面成熟,需要面對更為廣闊的普通用戶需求,只有解決了10%以上用戶的需求(蘋果Mac系統也就這個占有率),Linux桌面才能自豪的說終於成功了

Linux桌面是世界上最大的軟件工程挑戰, 也是所有Linux愛好者的希望

Linux桌面以及桌面應用生態的構建是世界上最大的軟件工程挑戰,幾十年各種偉大的開源公司和開源社區在為這個目標努力,我相信只要持續努力,最終可以從希望變成理想成真的。

Ubuntu今天放棄戰鬥了,非常可惜一面Linux桌面的旗幟倒下了。

做為依然奮鬥在Linux桌面事業的開發者,想跟未來的開源開發者說一句話:

累了就休息一下,但千萬不要放棄!

延伸阅读

评论