《Treeland 进化进行时》写到这里,已经是第四篇了,第一篇,我们聊了那些能够直接感受到的变化,窗口更顺、手势更自然,多任务和动画也更跟手;第二篇把视线放到应用上,从游戏、3D 应用,到 X11 / Wine 应用,Treeland 正在努力让更多软件能够正常运行、顺畅使用;第三篇介绍了不那么容易被注意到的话题,稳定性。

过去几个月,Treeland 持续解决稳定性和崩溃问题,多屏、焦点、Alt+Tab、文件拖拽这些日常操作都更可靠了。前三篇放在一起,能看出一个越来越清晰的方向:Treeland 更好用了,也更稳了。

但到现在可能还有几个问题没回答,这些变化究竟是怎么发生的?为什么 Treeland 可以不断加入新的桌面能力?又为什么我们能够持续修复问题,并不断往前推进?

答案其实藏在那些用户平时很难看到的地方,今天,我们就再往下走一步,看看 Treeland 的技术底座正在发生什么变化。

Treeland 是 deepin 社区开发的一款基于 Wayland 协议的显示服务器,Treeland在底层使用 wlroots 作为 Wayland 的基础库,不修改 wlroots 的代码,也就意味着可以随时同步上游进度,获得新的功能与修复。上层使用 Qt,可以充分利用已有的大量 Qt 开发者,不再需要一直有专人负责特定项目,让 DDE 的技术栈更加统一。

 

01|为什么 Treeland 需要持续跟上 Wayland 上游?

Wayland 在 Linux 桌面上一直在变,没有停在某个版本上。随着 Wayland 生态不断发展,新的协议、功能和应用需求也在持续出现,而作为基于 Wayland 的桌面环境,Treeland 也需要不断跟进上游生态的变化,让 Treeland 能够更及时地获得新的能力,也能够更好地应对不断变化的应用环境。

可以把它理解成一座不断建设的城市,窗口、动画、手势这些用户能够看到的部分,就像城市里的道路和建筑;而 Wayland、wlroots 等底层组件,则更像支撑这一切运行的基础设施,上层体验可以不断变化,但底层也需要持续建设。

所以,跟上 Wayland 上游,让Treeland 换来的不只是今天多一个功能,还有未来那些功能、协议与应用兼容都能落在一个健康的基础上。

02|qwlroots 曾经带来了什么?

在 Treeland 的发展过程中,qwlroots 曾经发挥过重要作用,它帮助 Treeland 在早期快速构建和推进桌面能力,也让项目能够在开发过程中进行更多探索。

但随着 Treeland 不断发展,项目本身的需求也在发生变化,当项目逐渐变大,底层依赖与上游之间的差异,也会逐渐带来额外的维护成本。一方面,需要持续维护自身代码与上游之间的差异,另一方面,一些中间层的接口和修改,也需要随着上游变化不断跟进。

短期来看,这些工作或许还能接受,但如果 Treeland 希望长期发展,就需要重新思考,有没有一种方式,可以让 Treeland 更直接地跟随上游?

答案就是逐步减少中间依赖,让 Treeland 更靠近 wlroots 本身。

03|为什么现在选择去除 qwlroots 依赖?

去除 qwlroots,要做的事情比删掉一个依赖多得多,为的是让 Treeland 与上游生态之间建立一条更直接、更清楚的连接。

过去虽然中间层可以帮助项目快速推进,但当项目进入持续发展的阶段,更直接地对齐上游,也意味着更清晰的代码结构和更低的长期维护成本。

去除 qwlroots会带来几个变化,wlroots 有新的变化时,Treeland 可以减少中间适配,更直接地同步过来。中间接口少了,代码也更好维护,开发者能更容易看清底层逻辑,后续演进也更方便。

未来无论是新的 Wayland 协议、应用兼容,还是桌面功能,都能够建立在更加清晰的基础之上。

 

04|从 qwlroots 到 wlroots 0.20,意味着什么?

这次技术底座调整的另一个重要变化,是 Treeland 向 wlroots 0.20 进一步对齐。

这次对齐更实际的意义,是让 Treeland 与 Wayland 上游生态保持同一个演进节奏,开发者后续跟进新接口、协议以及相关能力时,适配成本会小一些,而Treeland 未来面对新的应用需求和桌面能力时,手上也会有一份更健康的技术基础。

所以这次升级,是 Treeland 在重新整理自己的“底层坐标”,从哪里来更清楚,跟谁走也更明确,接下来往哪里走,也有了更大的空间。

  

05|那些看不见的重构,也是在为未来做准备

除了去除 qwlroots 依赖、对齐 wlroots 0.20,这次底层调整还涉及不少内部工作,比如代码重构、冗余接口清理,以及自动化测试等。

代码结构清晰了,冗余接口少了,项目复杂度压得住,后续开发和维护都更容易,自动化测试补上之后,开发者能更早发现问题,后续改动带来的风险也小一些,它们虽然不会直接变成一个新功能,但会一点点变成 Treeland 的“基本功”。所以这一次,我们把更多精力放到了那些不太容易被用户看见的地方:让代码更清晰,让依赖更简单,让底层更贴近上游,也让未来的开发更容易。

 

回头看这几个月 Treeland 的变化,你会发现我们一直在做不同的事情,有些变化,你每天都能直接感受到,有些变化,则藏在桌面之下,这四篇Treeland的介绍内容,也只是这段时间变化的一个切面,往后,我们还会继续把用户真正关心的那些问题一点点做好。

让 Treeland,不只是现在更好用,也为未来走得更远做好准备。

如果你正在使用 Treeland,也欢迎把你的体验和建议告诉我们,你希望 Treeland 下一步变成什么样?欢迎前往 deepin 论坛分享你的体验。