1. 程式人生 > >我們的大團隊——deepin 15.6 研發心得

我們的大團隊——deepin 15.6 研發心得

注意:本文原文在 簡書 - 我們的大團隊——deepin 15.6 研發心得,作者的簡書ID是Evablingbling,我稍微作了修改。
自2017年11月深度作業系統15.5版本釋出以來,deepin團隊似乎又“銷聲匿跡”了,於是乎粉絲們對下個版本期待又不絕於耳的響起了……

自從新的版本計劃公佈以來,就不斷有粉絲在幫我們“倒計時”,直到日期到了今年公曆三月的dead line……再按以前的套路拖到了農曆三月……再到現在……可是因為有商業專案及其它安排,計劃總是趕不上變化,好在經過漫長的等待,我們跨過了計劃中的15.5.1修訂版,直接迎來了一個全新的大版本——deepin 15.6。

15.6繼承於deepin15.5,並在其之上進行了大量的改進。主要的變動有:新的系統歡迎介面、新的啟動器小視窗模式、登入介面的過濾動畫及添加了控制中心的側邊欄和更多的設定項等。另外,15.6搭載了新版的幫助手冊2.0和最近剛剛釋出的檔案管理器1.7版本,以提供豐富的新特性和更好的使用者體驗。

15.6是一個怎樣的版本?

新功能介紹

deepin的老使用者可能會感到非常親切——在好幾個版本以前,我們是有一個“新使用者引導”介面的,後來由於舊桌面的執行效率問題,我們使用Qt/C++重寫了所有元件,由於重要的事情太多了,這個比較邊緣化的功能便被一直擱置了。現在,我們造了個更棒的“輪子”來接替它:在每次建立新使用者時,將有一個小應用自動執行,來幫助你瞭解深度桌面環境,並引導您完成第一次的桌面定製。
在這裡插入圖片描述

接下來我們說說新的視窗化啟動器介面。之前有人說,deepin的“小Launcher”不就是“大Launcher”縮小了一點嘛,沒有一點新意。還有許多人希望在啟動器上新增使用者頭像、新增最常用應用列表等等功能,這次,我們參考了許多建議,重新設計實現了新的視窗化啟動器介面。
在這裡插入圖片描述

隨著DDE、深度系列原生應用及其它上游軟體包的更新,帶來了更豐富的功能與更好的穩定性提升,更多的詳細更新內容,可以參考發行註記。

一個“靠譜”的版本

相信我,這話可不是簡單的自賣自誇。首先,從更新內容來看,並沒有太多的功能性修改。我們在這個版本中更多注重的是內在的變化,包括效能、使用者體驗及最重要的穩定性提升。其次,基於這次的更新內容,我們移植並製作了x86專業版、龍芯專業版、申威專業版等多個商業版本。這裡列舉的每個硬體平臺的每個版本,我們都進行了數輪的“全量測試”——每次的全量測試都包含數千個測試用例。可以說現在的程式碼是在當前支援的硬體平臺上做到了最廣泛的平臺相容、從多種硬體機型環境和各個角度都經歷了大量的測試。所謂慢工出細活,相信在經歷瞭如此全面的測試考驗之後,15.6的質量絕對能讓您滿意。

一個“值得”的版本

從最近幾個版本以來,無論是在深度論壇還是WHLUG,甚至於我們自己,都開始打趣說deepin重新定義了日曆。我們成功的一次次把預定的釋出日期從公曆拖到了農曆,再到如今連農曆這個梗都保守不住了。

那麼,一再的跳票,我們在“糾結”什麼?

大約在一兩個月前,我們開始開發一個試驗性功能——視窗分屏。實現這個功能並不簡單,它不僅需要視窗管理器去支援,還要考慮不同的圖形框架、不同的視窗屬性,甚至要測試分屏後再進行復雜的視窗切換或最大/最小化切換等各種奇怪的使用者操作(請不要驚訝,真的有使用者會這樣用),可以說功能的邊界條件極其複雜。經過幾個工作日的頭腦風暴,然後開發、測試,我們達成了初步的決定——這個功能不在15.6中添加了。

這是一個糾結的決定,甚至PM在我們的第一個內部測試ISO凍結之後仍然安慰說:“要不我們就釋出這個功能吧,我自己用著感覺已經很好用了。”

天吶,能得到PM的肯定是每個研發工程師的願望!

不過QA也向我發話了:“分屏時gtk視窗不相容的問題和視窗抖動的問題解決了嗎?”

“還沒有。”

“那就不能釋出!”

不同方向的負責人之間的爭論從來沒有停止過。但從另一個方面來看,能夠歷經重重檢測,最終出現在新特性列表的功能,都是被產品所關注、被測試所信任、經過研發工程師反覆調試出來的閃光點。雖然由於在不同平臺上的多方驗證,或是反覆的需求討論、驗證及修改花費了比預定更多的時間,但這種經過迭代開發並仔細打磨出的產品,值得等待與體驗!
在這裡插入圖片描述

15.6的構建歷程

從開發者到小團隊

15.6專案的工作起始很早,那時還沒有明確版本號及各種釋出規劃。只知道我們現在有一些麻煩需要處理:上個版本中使用者報告的bug、需求文件中需要完善及新開發的各種需求、還有更要命的——這個版本我們要同時交付專業版。這意味著要進行全平臺的支援,即所有的硬體環境及各個定製版本都要通過測試。
在這裡插入圖片描述

起初負責15.6工作時,第一個工作狀態的改變是Firefox告訴我的,在我最經常訪問的網站那一欄,第一位悄悄的變成了Tower。以前這裡一直是cr.deepin.io或者github這些“程式碼交友網站”的地盤,而我也是這些網站的紅人。但在Tower中,我成了一個妥妥的背鍋俠——以前無論是負責工作列、控制中心或是啟動器的開發,只要我能證明bug與自己的元件沒有問題,這口鍋可以瀟灑並隨意的甩出去。這些bug由誰來處理,who care?而現在,我的主要任務就是接住大家手中甩出的鍋,並一一的為它們安排好一個去處——雖然多數是我的後背上。

也因此,在起初一段時間內,個人的工作狀態是非常手忙腳亂的。甚至有時會感覺自己記憶力在退化,總是丟三落四。有時會有一些奇怪的想法,比如在專案的關鍵節點前夕,我時不時會臆想,如果時間過的再慢一點,我可以一口氣把這些bug全部修完。但當遇到知識範圍之外的嚴重問題無法解決時,又會暴露出一種力所不能及的恐慌。現在來看,這是典型的“強者思維”,蠻幹而不講團隊協作。好在經過不斷的適應,現在我們的團隊協作已經非常默契。

現在的我幾乎成了一個“萬金油”角色。只要遇到了問題,無論桌面還是系統,無論前端後端,我都可以扯上兩句,但如果要徹底解決某些問題,對不起,請等我搬救兵來。開發組長的一個任務就是要讓每個同事做它最擅長的工作,要把每個問題交由最適合的人處理,以此來保證團隊總體上的高效率。而自己,則要跳出原來技術方向的侷限,多瞭解各個技術棧,多熟悉各個專案的設計。

合理安排的能力在我看來是一個組長的最大價值。無論哪個崗位,自己的時間沒有安排好,可能影響還比較小。而如果一個管理人員對任務安排不均、或是方向上把握不準,那整個團隊的執行效率都要下降。一項任務交給不同的人處理,由於對此專案的瞭解程度不同,可能時間上會相差很多。即使選到了處理它的最佳人選,如何保證你的想法及認識能完美的表達給別人——最好再由他吸收理解並提升到更好,是很難但又很重要的。

從小團隊到大團隊

作業系統從來都不是幾個人湊個團隊努努力就一蹴而就的,這恐怕在Linux發行版上尤其明顯。成百上千個發行版,無數個大小專案及其分支,海量等級的原始碼,不是任何一個單一的組織可以全部管理得過來的。團隊協作不僅僅發生在團隊內部和公司內的各個小團隊之間,與整個生態環境中其它開發者的交流和同步也非常重要。可以說,任何一款Linux發行版,背後都是靠全世界Linux開發者與愛好者組成的一個龐大團隊的不斷貢獻。

然而,在各個發行版、各個桌面環境中,都有自己的設計語言。為了達成這些設計目標,修改其它開發者、其它組織的專案程式碼是不可避免的。在15.6的研發中,我們也修改了許多開源專案以更好的支援和相容DDE桌面環境。但如果直接fork一份程式碼單幹(我們一般稱之為“魔改”),雖然解了近渴,但時間一久,會隨著上游程式碼的更新,自己的維護量越來越大。通過向上遊積極的推送這些修改,不僅能夠減小我們自己基礎倉庫的維護工作量,同時由於上游的程式碼最終會被所有的發行版更新,使得DDE不僅能在deepin下良好工作,在其它所有發行版中相容性都能得到一定提升。

最後的總結

通過積極參與並推動上下游互動,不僅使得deepin、DDE在Linux圈子中越來越受歡迎,同時也得到了許多愛好者的積極反饋,讓我們的產品能做的更加完善。這也正符合我們的社群理念:建立開放、多元、包容的社群文化,腳踏實地的為開源社群做出每一份貢獻。