我们的大团队——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圈子中越来越受欢迎,同时也得到了许多爱好者的积极反馈,让我们的产品能做的更加完善。这也正符合我们的社区理念:建立开放、多元、包容的社区文化,脚踏实地的为开源社区做出每一份贡献。

猜你喜欢

转载自blog.csdn.net/qq_32768743/article/details/85109412