國產(chǎn)操作系統(tǒng)不僅僅是換皮膚
我覺得很多國人對國產(chǎn)操作系統(tǒng)上有誤會,“這不就是在linux系統(tǒng)上換一個皮膚嘛”,這種評論我聽到的最多。所以我覺得有必要給對國產(chǎn)操作系統(tǒng)有誤會的人做個科普。讓大家了解這么多年我們在國產(chǎn)操作系統(tǒng)上做了哪些工作。
本文引用地址:http://2s4d.com/article/202008/417124.htm什么是桌面操作系統(tǒng)?
桌面操作系統(tǒng)就是大家平常電腦里面用的操作系統(tǒng)。 桌面操作系統(tǒng)應該是所有操作系統(tǒng)類型中最為復雜、研發(fā)技術難度最高的一種操作系統(tǒng)了。 世界上非常優(yōu)秀的桌面操作系統(tǒng)有微軟的Windows和蘋果的Mac OS,其他的Linux桌面操作系統(tǒng),比如Fedora、Suse、Ubuntu包括我們自己的deepin操作系統(tǒng),雖然這十幾年取得了長足的進步,但是相對于Windows和Mac OS,不論技術先進性、交互設計還是產(chǎn)品質量方面都還有非常大的差距。
桌面操作系統(tǒng)都有哪些部分組成?
一個普通用戶使用的桌面操作系統(tǒng)的組成部分主要包括:
內核、驅動以及固件:主要用于驅動硬件可以正常工作,除了CPU、內存、磁盤外,最主要的是要廣泛兼容不同的網(wǎng)卡、顯卡、聲卡和外設等硬件設備。
軟件倉庫及眾多開發(fā)庫:如果沒有開源社區(qū)眾多大神打包好的軟件倉庫和各種開發(fā)庫,要基于Linux來開發(fā)一個操作系統(tǒng)甭說開源愛好者,甚至就是一個中型公司都很難做起來,可以說開源軟件倉庫從本質上改變了操作系統(tǒng)和開源軟件的開發(fā)模式,豐富的軟件倉庫使開源開發(fā)者、組織和公司能夠使用最新技術的同時開發(fā)成本也降低了很多。
桌面環(huán)境:就是大家平常一開機就用到的桌面、任務欄和開始菜單等,可以說一個高質量和交互設計極佳的桌面環(huán)境可以極大降低用戶使用新的桌面操作系統(tǒng)的門檻。
應用商店:對于用戶來說,絕對不僅僅是一個好玩的桌面環(huán)境就能留下的,沒有好的應用商店帶來的海量應用和方便易用的安裝操作,普通用戶用幾天就會放棄,可以說應用商店是留住普通用戶的最基本要求。
預裝應用:在國內來看,至少需要解決QQ、Office、網(wǎng)銀和一系列方便易用的多媒體應用才能算是一個好用的桌面操作系統(tǒng)。目前國產(chǎn)操作系統(tǒng)可以兼容很多windows軟件,若是有迫切的需要,可以去官網(wǎng)提交自己的需求來加速適配。
什么是桌面環(huán)境?
桌面環(huán)境簡單來說,就是在內核和X Server之上,寫一批程序讓用戶登錄后就可以直覺性、流暢的使用桌面、任務欄、開始菜單、文件操作和系統(tǒng)設置。
這里對X server做個科普,X server是Linux系統(tǒng)里面圖形接口服務器的簡稱。
Windows系統(tǒng)的界面是這個系統(tǒng)不可分割的一部分,各種窗口操作界面顯示都是由系統(tǒng)核心直接管理的,
而Linux的圖形界面并不是系統(tǒng)的必要組成部分,它可以在無界面的條件下運行。當需要Linux提供界面的時候,系統(tǒng)就會建立一個或者數(shù)個X server,通過X協(xié)議跟窗口管理器交互,由獨立于系統(tǒng)的應用程序來產(chǎn)生窗口,狀態(tài)欄,按鈕之類的交互界面。
比較常見的Linux界面操作環(huán)境有KDE和GNOME,為它們提供系統(tǒng)支持的就是X server,而并非Linux核心。
總結一下linux圖形界面層次關系:
linux本身-->X服務器<-[通過X協(xié)議交談]->窗口管理器(綜合桌面環(huán)境)-->X應用程序。
這個世界上從功能完整性和產(chǎn)品質量來看主要有四個桌面環(huán)境:
RedHat主導開發(fā)的Gnome, Gnome2的穩(wěn)定性和性能都非常好,包括后面的Mint桌面都是衍生于Gnome2。
Suse主導開發(fā)的KDE:可以說功能最為豐富的桌面環(huán)境,包括產(chǎn)品質量以及性能每年都在飛速進步。
Ubuntu主導開發(fā)的Unity: Unity身上還是可以看到很多Gnome2的影子,產(chǎn)品質量和性能都不錯,Ubuntu自己獨立開發(fā)了Mir、Unity桌面環(huán)境和一些全局菜單等獨特特性。
Deepin主導開發(fā)的DDE: 作為DDE的開發(fā)者,客觀的評價,產(chǎn)品質量、設計視覺都符合中國人的習慣,很多地方的交互設計細節(jié)要比其他桌面環(huán)境做的更加精致和簡單,主要面向開箱即用的非技術型用戶,從功能設計上并不適合技術高手和那些本來就喜歡折騰的技術型用戶
其他輕量型的桌面環(huán)境,比如LXDE、XFCE、Enlightenment雖然性能極佳,但是從桌面環(huán)境的功能完整性和交互設計的精致性上都不夠,比較適合有一定技術深度,追求性能和自己配置多于開箱即用的技術型用戶。
剩下的就是一堆平鋪類窗口管理器,比如大家熟知的:awesome, i3, xmonad, dwm, stumpwm等等,這些窗口管理器型的桌面環(huán)境有300多個,我曾經(jīng)為了研究所有桌面環(huán)境的特性,把這些窗口管理器都用過,最喜歡的是xmonad。這類窗口管理器的可以把個人的工作環(huán)境內存和性能消耗降到極低,而且可定制性極強,甚至可以通過編程來打造自己獨一無二的工作環(huán)境。這類窗口管理器型的桌面環(huán)境比較適合開發(fā)人員和黑客,當然也不乏國內一大批裝X用戶。
桌面環(huán)境和那些換主題的工作差別在哪里?
可以說,桌面操作系統(tǒng)的核心技術和產(chǎn)品功力都聚焦在桌面環(huán)境上。 只有掌握了桌面環(huán)境這個古老而又深奧的核心技術,才能說在桌面操作系統(tǒng)上可以任意修改和改進,才能給用戶帶來更好的用戶體驗。
因為桌面環(huán)境強調的是從上至下全棧技術攻克,不論技術深度、技術全面性和代碼工程量來說都是巨大的,開發(fā)一個功能完備的桌面環(huán)境需要20+人以上的團隊工作最少2年以上才能打造出來,而且桌面環(huán)境的技術核心全部都依賴一批古老的協(xié)議,比如:x11、xcb、composite等基礎技術,互聯(lián)網(wǎng)上幾乎沒有文檔教你怎么一步一步的構建桌面環(huán)境,現(xiàn)成的桌面環(huán)境因為發(fā)展多年,代碼已經(jīng)非常復雜,最多只能從核心代碼片段有所學習。一個人要自上而下框架式的學習桌面環(huán)境核心技術并實現(xiàn)一套功能完備的桌面環(huán)境幾乎不可能。
所以,大部分的Linux發(fā)行版都是基于Gnome、KDE改的,大多數(shù)都是在網(wǎng)上找一批主題(Gtk+主題、圖標主題、光標主題、窗口邊框主題、DM主題、鎖屏主題)再配上一張好看的壁紙就可以做一套自己DIY的桌面環(huán)境。很多Linux社區(qū)的用戶說,你看我自己都可以做桌面環(huán)境,甚至很多國內的Linux發(fā)行版廠商也是拿著社區(qū)的桌面環(huán)境然后換一套皮膚就去騙政府的錢,說自己是自主研發(fā)的操作系統(tǒng)。
既然換套主題也可以很好,那么桌面環(huán)境和那些換主題的工作差別在哪里? 在我看來,主要在幾個方面:
核心技術能力:如果沒有掌握桌面環(huán)境的核心技術,所有的修改能力僅僅限于修改主題、logo、字符串替換的能力
產(chǎn)品質量無法保障:特別是有很多隱蔽性的bug,如果不掌握核心技術,連問題發(fā)生的原因都不知道,更不用提怎么解決
設計細節(jié):如果大家仔細看那些只是套用主題的桌面環(huán)境,就會發(fā)現(xiàn)外面看著還可以,但是很多按鈕的顏色、留白以及控件的對齊都是有問題的,甚至是粗糙的,為什么?這是由GTK+的主題設計導致的,GTK+強調的是一套原生控件打天下,但是面對無窮的應用和需求,不是所有的交互都能靠一套控件才能滿足的,在大多數(shù)Linux社區(qū)開發(fā)者不具備控件自繪的能力前提下,大多數(shù)開發(fā)者都選擇套用不合適的控件和控件主題去拼裝,而GTK+主題的作者不可能在制作主題的時候測試所有軟件,而且從GTK+先天限制也做不到,最后導致不論怎么套用主題,各種軟件拼裝在一起,就像各種質量參差不齊的補丁拼在一起一樣的,大多數(shù)開源社區(qū)開發(fā)者被虐很多年可以忍受粗糙的設計細節(jié),但是對于普通用戶來說,這種拼裝的設計細節(jié)就像拿著當年的諾基亞和現(xiàn)在的iPhone7放一塊的感覺那么強烈。
統(tǒng)一的操作接口:比如右鍵菜單、文件打開對話框、認證對話框等等,只有從深層次統(tǒng)一這些底層接口,才不會看到不同風格的右鍵菜單、文件打開對話框、認證對話框,這些都對于統(tǒng)一的桌面操作系統(tǒng)體驗非常重要,想一想如果你自己買的iPhone各處都粗糙不一樣,你會不會砸了它?但是為啥這么多開源愛好者就能忍受這些粗糙的東西?(因為自己沒有花錢,花了錢你看他不把客服電話打爆...)
一個完整的桌面系統(tǒng)從技術剖面看,從下到上主要分這幾層:
內核驅動層:前面已經(jīng)說了,主要是保障硬件的基本功能和兼容性,所有的Linux發(fā)行版都大同小異,差別就是內核補丁集不一樣,或者集成的驅動和固件多少的差異
顯示服務層:從內核引導到plymouth(我們俗稱的開機動畫)后,只要你見到登錄界面輸入密碼的時候,這時候X Server已經(jīng)起來了, X Server簡單來理解就是Linux系統(tǒng)中掌握著繪制圖形界面生殺大權的“天神”,所有程序要繪制圖形的時候都要發(fā)送消息到 X Server, X Server才會給你畫出來。同時X Server也是事件輸入(鍵盤鼠標)輸出(顯示器)的抽象層,開發(fā)者可以不用考慮底層驅動和顯卡驅動細節(jié),直接就可以使用X11/XCB的API進行應用開發(fā),只不過更多的開發(fā)者是使用Gtk+/Qt這些在X11/XCB更上層的API進行應用開發(fā)
顯示管理器:簡單的理解就是你看到的登錄界面提示你輸入密碼的那個地方
資源管理器:這一層主要由一系列的底層守護程序來監(jiān)控硬件的狀態(tài),并匯報給上層的桌面環(huán)境和應用進一步操作,比如常見的就有網(wǎng)絡、電源、磁盤、藍牙、聲音、鍵盤、打印等
桌面環(huán)境: 以深度桌面環(huán)境為例,主要包括桌面環(huán)境后臺服務和守護進程、桌面環(huán)境對外提供圖形開發(fā)工具庫、二進制工具、DBus API服務和桌面環(huán)境UI界面層幾個部分組成的,后面我會詳細講每一個細節(jié)
應用商店:主要提供系統(tǒng)的軟件安裝、卸載、升級等操作,保證用戶可以安全易用的進行軟件管理,同時提供了商店的評論和評分等功能
應用程序:主要包括深度開發(fā)的系列應用、合作開發(fā)的國內應用、Android應用、Windows應用和網(wǎng)頁應用,開發(fā)者在linux系統(tǒng)中內置了Android RAT,因此,可以直接運行Android應用。
為什么開源的輪子不能用?
深度造了那么多輪子,為什么不用社區(qū)的?
社區(qū)技術大拿很多,但是技術強大的同時能把一個應用的UI和交互細節(jié)做好的開發(fā)者鮮有 社區(qū)大部分軟件都是面向開發(fā)者,功能確實強大,但是對于小白用戶來說太復雜了 深度希望十年之內解決linux桌面的問題,我們內部每天幾百個commit的快速迭代,社區(qū)主導開發(fā)完了花都謝了 希望做出來再吹牛,不想天天在社區(qū)打嘴炮。
十幾年開源社區(qū)為什么做不好桌面?
主要用戶群體是開發(fā)者,大多數(shù)開發(fā)者喜歡黑客般的各種功能堆在一起,而普通用戶只需要簡單易用的產(chǎn)品 太過于碎片化:大家不齊心,每個人都造半成品互相打壓,沒有形成合力,最后社區(qū)除了大量的半成品,并沒有多少應用能夠比Windows軟件更好(真正能和Windows平臺堪比的應用不超過50個) 鄙視小白的氛圍不好,技術稍微好一點的人就打擊小白用戶,大量真正的桌面小白用戶走了以后,最后導致大家都不關心桌面的細節(jié)體驗 做的太少,說的太多,有行動,10年就是翻天覆地變化,而不是大家時間長了都失望了。
開源社區(qū)擅長什么?
開源社區(qū)適合做遠程協(xié)助,碎片化的事情,比如文檔和翻譯,深度社區(qū)全世界的翻譯貢獻者就超過300多名: https://www.transifex.com/linuxdeepin/public/ , 曾經(jīng)創(chuàng)造西班牙語一星期就翻譯完整個系統(tǒng)的奇跡
開源社區(qū)適合吐槽, 我說的是客觀的吐槽,https://bbs.deepin.org/ 各種用戶幫助開發(fā)團隊發(fā)現(xiàn)更多測試版的bug和非常非常好的反饋建議 開源社區(qū)適合打包移植, https://www.deepin.org/dde/desktop-transplantation/ 目前深度桌面已經(jīng)移植到 Arch, Manjaro, SparkyLinux, openSuse, Ubuntu, Gentoo, Fedora 等發(fā)行版
國內技術圈偏見
我在開源社區(qū)十幾年看到國內技術圈很多偏見,最主要的有幾個:
拿著自己的平鋪式窗口管理器裝X,鄙視小白用戶:其實玩過的人都知道,就是一些配置,花一些耐心和毅力就能搞定,這些只能證明你比較能折騰,但折騰并不代表你的學識淵博和能力高超,更不是鄙視和嘲笑別人的資本
認為只有玩內核才是技術高手: 不懂linux的人這樣認為,很多開發(fā)者也這樣認為,真正開發(fā)內核的開發(fā)者都知道,內核開發(fā)和應用開發(fā)和其他任何開發(fā)都一樣,唯一的不同就是更難調試,更復雜。不是只會內核開發(fā)的開發(fā)者才是最厲害的人,很多內核的開發(fā)都要和應用以及現(xiàn)實場景配合才有意義。更不是自己會編譯內核就開始了不起了
認為做UI和桌面環(huán)境很容易: 其實很多嘲笑做UI的人,即使是一些開發(fā)者,我相信大部分人連XCB以及窗口移動,甚至窗口陰影都繪制不出來,在國內看到太多拿著無知當權威的噴子了,希望這些人長大以后學會謙虛。其實大家都是看著功成名就來評判的,蘋果應該是這個世界上折騰UI細節(jié)最多的公司,但是沒有人說蘋果只會UI,為什么?國人就喜歡打壓還沒有成功的公司,然后跟風吹捧成功的公司和產(chǎn)品
Linux就是應該折騰: Linux早期的折騰對于開發(fā)者來說是非常有幫助的,但是人都有會老,都會累的那一天(要不是為什么達拉斯黑客大會那么多大牛最后用Mac, 是因為他們折騰沒有你多嗎?),一旦折騰完Linux就應該花更多時間去學習新的知識或享受生活, 而不是一直都在折騰,然后鄙視不會折騰的人。
通過上面的科普,大家還有認為國產(chǎn)系統(tǒng)僅僅是換膚那樣簡單的事情嗎?我認為大家應該尊重每一位技術開發(fā)者,但是真的對于那些完全不基于調查,只是簡簡單單基于對國內開發(fā)團隊鄙視而輕言下結論的人感到痛心,希望國人基于事實支持好的產(chǎn)品和團隊,停止一切不實的攻擊。
以上部分內容來源作者:ManateeLazyCat
評論