15.8研发心得

不早也不晚,2018年11月15日 deepin 15.8 如期发布。这虽然是个好消息,但是没有了延期的梗,我竟然不知道这篇研发心得应该如何开头……😓

开头这件事情总是很难,因为要做到一些以前没有做到的事情,就要求能将自己的水平提高哪怕那么一点点;同时,开头也不宜于高调,高调的开头太容易造成虎头蛇尾以致不能坚持的局面。在我的价值观里,与其浪费时间和精力在不能坚持的事情上,还不如什么都不做。所以很多事情我都不愿意开头,就像写这篇研发心得一样。

尬聊

不过,幸运的是我们对发布系统这件事情倒是充满着热情,以至于我们能在每一次系统发布的“轮回”里,都无所畏惧地开头并且坚持如一。比如 15.4 的毛玻璃效果、15.5 的高分屏、15.6 的应用深色主题、15.7的性能优化等等等等……当然,这次的主角 15.8 也不输从前。

新特性介绍

15.8 中新的变动着实不少,但是从一个研发的角度来看,我觉得最重要的变化应该是组织系统开发和发布的人发生了变化。之所以说这个比较重要,是因为 deepin 的前辈们把接力棒交到我这里,我终于可以把它顺利地转交到合适的人手中了,这句话的言外之意是什么呢?就是大家以后如果遇到什么 bug,进门左转找 @zccrs 😂。

说明了以上信息,就可放心地介绍这次的新功能了。不过说实话,这次的新功能都相当直观,用不着我费什么口舌,再加上本次研发心得的重点不在此,所以大部分的新功能请看 系统发布新闻,这里只说两个我最喜欢的点吧。

第一个要说的,是15.8 的新功能里面最让人惊喜的 Dock时尚模式 的托盘插件 的设计调整:

Dock的新托盘

为什么呢?这主要是因为以我的聪明才智,都一直认为时尚模式的托盘是一个无解的问题:系统托盘占用大量空间,应用托盘使用不方便……除非引入类似 macOS 的 topbar (估计很多人也是这么想的,所以都默默地在商店里面安装了 deepin-topbar吧)。事实上,当时我们讨论解决方案的时候也是差不多一样的状态,每个人都欲言又止,显然是还没说出口的方案就被自己推翻了,然而就在这个时候,设计师默默地上了一副设计图,把所有的应用托盘也放大成了与应用图标无异的大小。

我:!?!?!?(黑人脸

我刚要扔臭鸡蛋,设计师咔嚓又上传了一张图,仿佛在说 “蛋下留人~” 而转机就这样发生了,我看到设计图,就如大家在15.8看到的Dock时尚模式一样,托盘问题竟然被 almost 完美地解决了——在最后的关键时刻设计师保住了自己的颜面。

怎么说呢,这基本上是我在深度继看到一个开发同事用钥匙给电脑开机感到由衷地佩服以来,再一次罕见地(尤其是被设计师?😈)觉得世界观被刷新的一次体验了。

另外一个要提的是一个很小的点,不过现在想起来都会有一种吃了广告中的德芙的感觉——丝滑。是什么呢?如果你现在使用 deepin 浏览这篇文章,应该能看到我特地在文章开头、上一段和中间甩锅那一段,几乎到处都贴了 emoji 表情:

getemoji

整篇文章不再有黑乎乎的表情——这简直是使用Linux写技术博客的 Blogger 的福音啊。如果你也想在文字编辑的时候输入开爱的 emoji 表情,可以打开 https://getemoji.com/ ,只需 copy&paste,瞬间让你拥有进入 21 世纪互联网的赶脚。

至于这个新特性为什么没有写到更新注记里面,是低调,是彩蛋,还是忘了写?咳咳,有点赶时间,继续往下写了 🙄🙄🙄 。

开放和透明

上面说了发系统的接力棒已经成功交(shuai)接(guo)给别人了,那我去干啥了呢?总得做点啥吧,要不被开了就不好玩儿了嘛😱。

我这段时间做得其实就是开放和透明。

在中国说起开源,应该没有人不知道深度作为“东半球最大的开源软件公司”的名头,如果有人不知道,那也让我们先姑且这么认为着 😜, 深度从出生的那一刻起就一直在开源——深度出品的软件产品中95%以上都是开源的,但是直到最近我才老有一种感觉就是深度一直在“开源”,但是并没有在“做开源”。

深度是很长于做产品的,每个产品都可以做得既小巧玲珑,又戳中用户痛点,所以积累了不少海内外用户。这些用户使用着我们的系统,时不时灵感来了还会提出一些宝贵的意见和建议,这本是极好的。但是作为开发者的我发现,其实这批用户里面有不少同行,他们也想为深度的开源事业做出自己的贡献,天天问我:How to contribute。我脑子飞速旋转,“这个功能貌似他可以加一下?不对,这个功能需要知道很多故事背景,说来话长……还是算了”,“那个bug他好像可以修一下,但是好像也不能按照常规的方式去修复……一两句话也说不清楚”。思来想去,最后只能以“你可以帮我们测试,测试也是一种贡献呀”、“你会德语呀,这么厉害,要不要帮我们加点翻译” 等等的回复搪塞过去,说完这些内疚到简直想出去哭一场。更有甚者,有些开发者克服了重重困难,终于提交了 CL (可以理解为补丁)想要一些功能,内部讨论半天给出一个决定和回复,对方回复,内部再讨论半天给一个回复……效率极低,还容易导致各种误解。更可惜的是,以后甚至还会有同样热心的开发者提交类似的补丁,然后重复前面的过程,及其浪费社会生产力。

鉴于以上这些情况,我们经过长时间的思考(可能是从15.7开发的过程中开始吧)和重新审视自己,决定在开发和透明上采取更多的行动,所以我们开始做了以下几个步子比较大的动作:

拥抱 Github

Github 总有一种似曾相识的感觉——曾经琳姐拼了老命把 Github 上的项目都搬到了 Gerrit 上,现在我们就快要搬回来了。

Inflatocat

拥抱 Github 主要分两个步骤,第一个步骤是任务追踪和看板管理从Tower切换到 Github issue 和 Github project,任何人感兴趣都可以参与讨论;第二个步骤是代码审核从 Gerrit 切换到 Github PR,让天下没有难提交的CL。目前第一个步骤已经基本完成,第二步骤正在准备中,详细内容参见相关链接 [1]。

需要在此特别说明和广告的是:内部相关的讨论集中在 internal-discussion,所有 deepin 即将做的事情,以及要怎么做都会在这里面的 issue 中集中讨论;另外一个是很久以前便存在的 develop-center,专门供外部贡献者提交意见和Bug反馈。为什么要作此区分呢?其实稍微关注一点 internal-discussion 你就会发现,deepin 每次系统发布的过程中会产生 300-400 个issue,如果全部都放在 develop-center 中会对用户报 Bug 的体验造成不好的影响,有没有很感动呢?

推出 SDK

在 15.8 发布之前,朋友圈曾流传一篇文章《如何为DTK编写文档》,如果你没有看过这篇文章,那也不要紧,因为这篇文章我最想突出的一句话就是:

是时候给 DTK 添加文档了!

当然,给 DTK 添加文档这只是第一步,推出 SDK 才是关键。

QtCreator

何为 SDK ? 在我看来其实就是写代码、调试、打包和发布一条龙服务,至少包含开发库、开发文档、工具和 IDE 等项。

深度又要造轮子了么?可能要让大家失望了,答案是否定的。以我们对 Qt 的喜爱,怎么可能抛弃 QtCreator 呢……至少现阶段我们还不会抛开 QtCreator 去造轮子的。但是也不用那么失望,等我们会完善了文档、改进完 QtCreator [2] ,让 DTK 跟 QtCreator 无缝集成,你甚至都不用会写代码就能编译、运行、甚至打包一个 “Hello world!”应用来!

持续的技术输出

深度像大部分公司一样,有老鸟也有新手,但是与绝大部分公司不一样的是,深度的高手感觉牛到可以戳上天,有那种对谷歌的 offer 都要装逼回绝掉的那个类型、也有手撸窗口管理器的同时还能顺带开发一个深度影院的、还有精通所有程序语言和内核开发的……在这样的公司里混开发,生存真是倍感压力。

所以,我一直有一个梦想,就是每天上班不用顶着压力慌忙地敲代码,而是可以跟这些大牛一起摸着键盘谈笑风生。终于……我最近过上了这种生活……才怪,人总要意识到,梦想还是要有的,但是真不见得会实现……唉。

docs.deepin.io

当然,上面只是玩笑话了,真实的情况是我长期蒙受各位大牛的指导,心里倍感感激的同时,想着其实社区还有那么多搞技术的小伙伴,学校还有那么些想来深度实习而不得的实习生,他们其实对深度开发者的经验和技术不能说瞻仰吧,有点夸大其词了,还是非常好奇和希望能学到的。所以,从今年3月份开始,我们内部一直在推进 https://docs.deepin.io 这个技术博客的建设,除了希望能随着 deepin 的成长有所技术积累外,也希望把公司的这些技术积累分享给社区,大家共同成长和进步。

持续的技术输出没有什么弯弯绕,就是这么直接的东西。

结语

说了这么多,其实我的想法挺简单,就是通过逐步开放我们内部的一些软硬件资源,希望能让更多的开发者能更加方便地参与到我们的平台建设中来,而不必一个人摸瞎; 通过刻意透明所有的讨论过程,包括需求讨论、方案设计、设计稿等等,让所有社区的小伙伴不仅可以看到我们在做什么,甚至可以参与讨论“干涉”我们要做什么,让所有对操作系统设计有热情的用户的意见都得到公正对待。

最后,希望开放和透明,可以给深度带来一点不一样的色彩。

相关链接

[1] DDE核心项目迁移到Github [2] QtCreator 的 DTK 集成

comments powered by Disqus