先水点题外话
正如 @Hualet 老前辈所言,我接了一口又大又厚的锅:deepin桌面环境的所有“bug”。自然,系统发布之后写研发心得的优良传统也必须要传承下去!我的昵称叫 @zccrs,说个大实话,看到这个词我也一脸懵逼,不知道该怎么读,索性大家可以叫我“榨(z)菜(c)炒(c)肉(r)丝(s)”,应该会更好记一些😂。
万事开头难啊,第一次写研发心得,居然有些莫名的紧张,另外还掺杂着些小激动。虽然都是敲键盘,但是和写代码时相比,这感觉完全是从二次元到了三次元。不过,幸好年龄大了,脸皮也厚了,写起东西来没以前那么费劲了。别的废话不说,先鼓励一下自己来点自信😘。跟 @Hualet 老哥相比,系统研发方面我还是个新手,虽不知能否像长江的“浪”一样把前浪“拍在沙滩上”,但至少比 @Hualet 长得帅些😏。欢迎大家以后多找我报bug,多多益善,毕竟bug不挑食😎。
谁说写研发心得就非要苦思一个漂亮的开头,我直接就进入主题🤪。
进入正题
大家也都知道,从15.8开始,我们把项目都迁移到了github,更加方便其他大牛们参与进来贡献代码,也能通过github的issue提交和管理bug。与此同时,为了更好的和用户互动,deepin系统的社区版对外发布也采用了一种新的方式:滚动更新。由之前每三个月一次的系统大版本更新,改成了每三周一次的小版本更新,例如 15.8.1、 15.8.2 ...15.8.4 等等。但是总体上来讲系统发布周期是没有变化的,最后一个小版本发布的同时也就是这个阶段大版本完成之时。这样做的好处呢,不用我多说,大家都有自己的感受,更新频率的增加,也就意味着能够更早的“吃到螃蟹”,想想就很开心😍。不过,这样做自然也有坏处,别的先不说,就拿大版本更新的发布来讲,新功能早就在小阶段更新中体验过了,大版本更新中完全没有了之前那种强烈的期待感,系统发布文章中描述更新内容时,会给人一种“这不是上个版本就已经有了的功能吗”的错觉 😂 。也就间接导致在研发心得中又少了一个介绍新功能的理由,没错,被大家发现了,说了那么多,我就是想吐槽一下研发心得里不能再介绍新功能了😱。咳咳,开个玩笑,其实这次也没准备过多的介绍新功能,另外有一些非功能上的改变需要说一下,关于功能上的更新内容,大家可以移步到 深度操作系统 V15.10,这里有详细的说明。
基于 Debian stable 仓库(By @hualet)
15.10最大的变动要数仓库的切换了。从unstable切换到stable,系统组的同学哼哧哼哧地干了两个多月,已然发布了,赞许的声音自然是不少,但是不可否认的是社区中各种震惊的帖子也不罕见。我琢磨着,有时候他夜半惊醒,想到那些两三个月前满嘴“你们要是敢切到stable,我就全盘格了上deepin”的同学们,只能暗自神伤:“这么坑我,你们的良心真的不会痛么……”
玩笑归玩笑,经过这么一段时间的把玩和使用,我觉得这次仓库切换还是值得的。毕竟stable仓库可以说“人”如其名——行走江湖多年,就靠一个稳字。这也是我们切换到stable仓库的初衷了。除此之外,也很少出现以前那种装一个软件动不动就有可能出现依赖冲突等问题了。作为一个开发者,深感欣慰。
这时候有些“好事”的同学一定会问,商店里面的软件不够新怎么办?别着急,底层系统的稳定不代表上层应用不够新,我们已经为把商店应用更新准备了“激进”的方案,就差一个程(da)序(bao)员(zhe)了。
---------- 硬广分割线 -----------
为了满足deepin社区各位小伙伴对应用更新速度的极致需求,诚聘一名对开源和系统构建有足够兴趣的“准“大牛(到深度以后一定会成大牛的),有兴趣的请发简历到 hr@deepin.com 。
---------- 硬广交差线------------
DDE KWin 现在&将来
使用 dde-kwin 代替之前的 deepin-wm,这可能是这次系统发布后大家所争论的最多的点。这个锅我背了 😂。
如这个issue中所言,被吐槽最多的点就是 KWin 的界面。的确,我也觉得,它有些地方的确长的不够精致 😂 ,像是一个🧟♂️ 。
DDE环境中窗口管理器的界面主要分为五个部分:
- 窗口标题栏
- 屏幕热区触发
- Alt+Tab任务切换
- Win+W窗口切换
- Win+S工作区切换。
dde-kwin的开发分成了两个阶段:
第一个阶段主要是在做一些看不到的工作,增加对DDE环境的兼容性,例如支持窗管相关的所有快捷键设置、热区设置、窗口主题设置、窗口缩放跟随系统、窗管特效开关、工作区切换等功能,另外还包含了两个deepin风格的窗口标题栏主题插件。在deepin系统上,为了让KWin更好的“入乡随俗”,我们从kwin fork出了deepin-kwin项目,用于实现一些只能通过修改代码才能支持的功能,比如 “_GTK_FRAME_EXTENTS” 窗口属性的支持。另外,因为其它发行版中没有deepin-kwin,所以在修改kwin代码的同时,我们也会在dde-kwin中通过其它方式实现一个尽可能类似的效果,以保证DDE在其它系统上的兼容性。
第二个阶段则是着重处理UI方面的问题,KWin和deepin-wm这两个项目有着本质上的差别,deepin-wm中已完成的窗管界面无法直接在KWin中复用,一切工作都需要从头开始。不过,我们不会因此而妥协,为了带给大家一个💯的KWin,这一步无论多么艰难都要迈出去🏋🏽♂️。😱一下子没把持住,是不是有点太煽情了(:手动斜眼:)🤣。
额......刚刚才发现,说了那么多废话,居然没有介绍为什么要那么青睐KWin👿,下面就要真的进入到正题了🤫,这不是在为KDE背书,这不是在为KDE背书,这不是在为KDE背书---重要的事情先说三遍😉 。
从产品发展的角度
在众多X11的窗口管理器项目中,毫无争议,KWin绝对是最强大的存在,先丢一个官方的介绍。KWin提供了“自定义窗口规则”、“窗口特效插件”等一系列扩展支持,以及强大的可配置性等等...但这一切还不是最重要的!接触过Linux的人都知道,生态环境是多么的重要(说多了都是泪🤐),KWin在窗口管理器的生态环境中有着绝对的优势,从KDE商店中可以看到
光KWin本身的插件就有将近80个,窗口标题栏主题 Aurora Themes 更是有几百个之多,各式各样的插件,能满足酸甜苦辣各种口味需求😂。另外,KWin原生支持2D/3D模式切换,一个人能代替 deepin-wm 和 deepin-metacity 两大兄弟,也就意味着,使用DDE时,窗管再也不用装一送一了。
既然都已经把KWin表扬到这般地步了,那自然也得再捅deepin-wm几刀(@sonald 不要打我🤕)。从上游fork出deepin-wm之后,改了包名,而且所有的功能实现都是直接在原代码基础上进行的修改,导致现在的代码拉出来做DNA鉴定,都看不出和mutter有半毛钱关系😂 。时隔几年,deepin-wm已经无法再跟随上游的脚步,同步不了最新代码,也就是说它现在已经变成了一潭死水,遇到新的产品需求时,在上面耗费了大量的时间也无法达到人民对它的期望。但也不可否认,deepin-wm服役这些年获得了无数的好评,也得到了大家的认可。不过, “设想英雄垂暮日,温柔不住住何乡”,现在的确是到了它该“解甲归田”的时候了,江山代有才人出,接下来应该给dde-kwin一个证明自己的机会,我相信它一定能领风骚数百年!
deepin-wm的UI已经定型,无论如何,它就只能是目前这个样子了。但KWin它还可以是这样的:
甚至是这样的(千万不要被设计师看到,会被打死的🤫):
从开发者角度
DDE全家桶中,除了“深度终端”,其它所有的产品都是基于Qt开发,选择KWin自然也有这方面的理由。未来,我们希望窗管这个项目是deepin所有开发人员都能参与进去的,人多力量大,让这个项目一直都能有新鲜血液的注入,永远保持着年轻的活力。因此只有和DDE项目有着同样的技术基础,才能更好的帮助我们实现这个目标。
写到这个点眼睛都有点累了,稍微休息了一下,把前面写的捋了一遍。看完了关于KWin这部分后,我感觉说了那么多其实就概括为一句话:“俱往矣,数风流窗管,还看KWin”。正如标题所言,这是一个新的旅程,deepin-wm已经定格在了这里,但是,dde-kwin的未来还有着无限的可能。
后记
书到用时方恨少啊,偷偷瞄了几眼前辈们写的“研发心得”,文体幽默而又不失风趣,心得感悟深而不腻,正好印证了一句话:姜还是老的辣啊🤭。思来想去,也不知道怎样才能写个漂亮的结尾,所以就到这里吧,省下点时间多修几个bug绝对没有错💪。
虽然15.10没有做到最好,但是我还是希望大家能够尝试一下,提出更多的问题。宝剑锋从磨砺出,新的选择也将会打造出新的deepin。