昨天寫國產操作系統的文章,頭條推薦量突破10萬,這證明國人對國產操作系統還是很關注的。有很多人也私信給我各種技術問題,其中能解答的我也有回覆。也有很多問題因為超出我知識的盲區,無法做出解答,非常抱歉。
本來今天要推QT5的研究文章,但通過昨天的議論,我覺得很多國人對國產操作系統上有誤會,“這不就是在linux系統上換一個皮膚嘛”,這種評論我聽到的最多。所以我覺得有必要給對國產操作系統有誤會的人做個科普。讓大家瞭解這麼多年我們在國產操作系統上做了哪些工作。
什麼是桌面操作系統?
桌面操作系統就是大家平常電腦裡面用的操作系統。 桌面操作系統應該是所有操作系統類型中最為複雜、研發技術難度最高的一種操作系統了。 世界上非常優秀的桌面操作系統有微軟的Windows和蘋果的Mac OS,其他的Linux桌面操作系統,比如Fedora、Suse、Ubuntu包括我們自己的deepin操作系統,雖然這十幾年取得了長足的進步,但是相對於Windows和Mac OS,不論技術先進性、交互設計還是產品質量方面都還有非常大的差距。
桌面操作系統都有哪些部分組成?
一個普通用戶使用的桌面操作系統的組成部分主要包括:
內核、驅動以及固件:主要用於驅動硬件可以正常工作,除了CPU、內存、磁盤外,最主要的是要廣泛兼容不同的網卡、顯卡、聲卡和外設等硬件設備。軟件倉庫及眾多開發庫:如果沒有開源社區眾多大神打包好的軟件倉庫和各種開發庫,什麼是桌面環境?
桌面環境簡單來說,就是在內核和X Server之上,寫一批程序讓用戶登錄後就可以直覺性、流暢的使用桌面、任務欄、開始菜單、文件操作和系統設置。
這裡對X server做個科普,X server是Linux系統裡面圖形接口服務器的簡稱。
Windows系統的界面是這個系統不可分割的一部分,各種窗口操作界面顯示都是由系統核心直接管理的,
而Linux的圖形界面並不是系統的必要組成部分,它可以在無界面的條件下運行。當需要Linux提供界面的時候,系統就會建立一個或者數個X server,通過X協議跟窗口管理器交互,由獨立於系統的應用程序來產生窗口,狀態欄,按鈕之類的交互界面。
比較常見的Linux界面操作環境有KDE和GNOME,為它們提供系統支持的就是X server,而並非Linux核心。
總結一下linux圖形界面層次關係:
linux本身-->X服務器窗口管理器(綜合桌面環境)-->X應用程序。
這個世界上從功能完整性和產品質量來看主要有四個桌面環境:
RedHat主導開發的Gnome, Gnome2的穩定性和性能都非常好,包括後面的Mint桌面都是衍生於Gnome2。Suse主導開發的KDE:可以說功能最為豐富的桌面環境,包括產品質量以及性能每年都在飛速進步。Ubuntu主導開發的Unity: Unity身上還是可以看到很多Gnome2的影子,產品質量和性能都不錯,Ubuntu自己獨立開發了Mir、Unity桌面環境和一些全局菜單等獨特特性。Deepin主導開發的DDE: 作為DDE的開發者,客觀的評價,產品質量、設計視覺都符合中國人的習慣,很多地方的交互設計細節要比其他桌面環境做的更加精緻和簡單,主要面向開箱即用的非技術型用戶,從功能設計上並不適合技術高手和那些本來就喜歡折騰的技術型用戶其他輕量型的桌面環境,比如LXDE、XFCE、Enlightenment雖然性能極佳,但是從桌面環境的功能完整性和交互設計的精緻性上都不夠,比較適合有一定技術深度,追求性能和自己配置多於開箱即用的技術型用戶。
剩下的就是一堆平鋪類窗口管理器,比如大家熟知的:awesome, i3, xmonad, dwm, stumpwm等等,這些窗口管理器型的桌面環境有300多個,我曾經為了研究所有桌面環境的特性,把這些窗口管理器都用過,最喜歡的是xmonad。這類窗口管理器的可以把個人的工作環境內存和性能消耗降到極低,而且可定製性極強,甚至可以通過編程來打造自己獨一無二的工作環境。這類窗口管理器型的桌面環境比較適合開發人員和黑客,當然也不乏國內一大批裝X用戶。
桌面環境和那些換主題的工作差別在哪裡?
可以說,桌面操作系統的核心技術和產品功力都聚焦在桌面環境上。 只有掌握了桌面環境這個古老而又深奧的核心技術,才能說在桌面操作系統上可以任意修改和改進,才能給用戶帶來更好的用戶體驗。
因為桌面環境強調的是從上至下全棧技術攻克,不論技術深度、技術全面性和代碼工程量來說都是巨大的,開發一個功能完備的桌面環境需要20+人以上的團隊工作最少2年以上才能打造出來,而且桌面環境的技術核心全部都依賴一批古老的協議,比如:x11、xcb、composite等基礎技術,互聯網上幾乎沒有文檔教你怎麼一步一步的構建桌面環境,現成的桌面環境因為發展多年,代碼已經非常複雜,最多隻能從核心代碼片段有所學習。一個人要自上而下框架式的學習桌面環境核心技術並實現一套功能完備的桌面環境幾乎不可能。
所以,大部分的Linux發行版都是基於Gnome、KDE改的,大多數都是在網上找一批主題(Gtk+主題、圖標主題、光標主題、窗口邊框主題、DM主題、鎖屏主題)再配上一張好看的壁紙就可以做一套自己DIY的桌面環境。很多Linux社區的用戶說,你看我自己都可以做桌面環境,甚至很多國內的Linux發行版廠商也是拿著社區的桌面環境然後換一套皮膚就去騙政府的錢,說自己是自主研發的操作系統。
既然換套主題也可以很好,那麼桌面環境和那些換主題的工作差別在哪裡? 在我看來,主要在幾個方面:
核心技術能力:如果沒有掌握桌面環境的核心技術,所有的修改能力僅僅限於修改主題、logo、字符串替換的能力產品質量無法保障:特別是有很多隱蔽性的bug,如果不掌握核心技術,連問題發生的原因都不知道,更不用提怎麼解決設計細節:如果大家仔細看那些只是套用主題的桌面環境,就會發現外面看著還可以,但是很多按鈕的顏色、留白以及控件的對齊都是有問題的,甚至是粗糙的一個完整的桌面系統從技術剖面看,從下到上主要分這幾層:
為什麼開源的輪子不能用?
深度造了那麼多輪子,為什麼不用社區的?
社區技術大拿很多,但是技術強大的同時能把一個應用的UI和交互細節做好的開發者鮮有 社區大部分軟件都是面向開發者,功能確實強大,但是對於小白用戶來說太複雜了 深度希望十年之內解決linux桌面的問題,我們內部每天幾百個commit的快速迭代,社區主導開發完了花都謝了 希望做出來再吹牛,不想天天在社區打嘴炮。
十幾年開源社區為什麼做不好桌面?
主要用戶群體是開發者,大多數開發者喜歡黑客般的各種功能堆在一起,而普通用戶只需要簡單易用的產品 太過於碎片化:大家不齊心,每個人都造半成品互相打壓,沒有形成合力,最後社區除了大量的半成品,並沒有多少應用能夠比Windows軟件更好(真正能和Windows平臺堪比的應用不超過50個) 鄙視小白的氛圍不好,技術稍微好一點的人就打擊小白用戶,大量真正的桌面小白用戶走了以後,最後導致大家都不關心桌面的細節體驗 做的太少,說的太多,有行動,10年就是翻天覆地變化,而不是大家時間長了都失望了。
開源社區擅長什麼?
開源社區適合做遠程協助,碎片化的事情,比如文檔和翻譯,深度社區全世界的翻譯貢獻者就超過300多名: https://www.transifex.com/linuxdeepin/public/ , 曾經創造西班牙語一星期就翻譯完整個系統的奇蹟
開源社區適合吐槽, 我說的是客觀的吐槽,https://bbs.deepin.org/ 各種用戶幫助開發團隊發現更多測試版的bug和非常非常好的反饋建議 開源社區適合打包移植, https://www.deepin.org/dde/desktop-transplantation/ 目前深度桌面已經移植到 Arch, Manjaro, SparkyLinux, openSuse, Ubuntu, Gentoo, Fedora 等發行版
國內技術圈偏見
我在開源社區十幾年看到國內技術圈很多偏見,最主要的有幾個:
拿著自己的平鋪式窗口管理器裝X,鄙視小白用戶:其實玩過的人都知道,就是一些配置,花一些耐心和毅力就能搞定,這些只能證明你比較能折騰,但折騰並不代表你的學識淵博和能力高超,更不是鄙視和嘲笑別人的資本認為只有玩內核才是技術高手: 不懂linux的人這樣認為,很多開發者也這樣認為,真正開發內核的開發者都知道,內核開發和應用開發和其他任何開發都一樣,唯一的不同就是更難調試,更復雜通過上面的科普,大家還有認為國產系統僅僅是換膚那樣簡單的事情嗎?我認為大家應該尊重每一位技術開發者,但是真的對於那些完全不基於調查,只是簡簡單單基於對國內開發團隊鄙視而輕言下結論的人感到痛心,希望國人基於事實支持好的產品和團隊,停止一切不實的攻擊。
以上部分內容來源作者:ManateeLazyCat
鏈接:https://www.jianshu.com/p/e871723f9460