[Feelings & Sharing] 简短地谈谈Canonical的Mir
Tofloor
poster avatar
enforcee
deepin
2023-06-02 10:11
Author

我在之前的一篇帖子中讨论了GNOME与Wayland的发展历程(https://bbs.deepin.org/post/257175)。如果你经历过那个时代,你的记忆中也许还沉睡着另一个名字,曾经被寄托了挑战Wayland的任务,而之后却默默地淡出了人们的视野;他曾经创造了一代人的回忆,而其血脉在今天依然尚未终结。

向宇宙起航

2008年Wayland横空出世,引起广泛讨论,随后GNOME率先开始实践Wayland(2012年应用程序完成移植,2016年Wayland成为默认用户会话)。而Ubuntu也在2010年推出了Unity桌面(和GNOME Shell类似),打算支持Wayland。Unity桌面老用户绝对不会陌生,他曾经是GNU/Linux平台最花哨的用户界面(对我来说没有之一),而可以与当年的Windows Vista和Mac媲美。正当众人对Wayland充满期待时,2013年,Ubuntu的开发商Canonical推出了针锋相对的Mir,并且打算让Mir作为Unity 8的默认后端。

Mir被称为新一代的显示服务器,用于取代X。 Mir的名字来源于「和平号空间站」(俄文的拉丁转写)。今天我们很难看到一些描述Mir架构的资料了(大概是被雪藏了),而在一些开发人员的过去的博客文章中能找到蛛丝马迹。比如这篇文章(https://samohtv.wordpress.com/2013/03/04/mir-an-outpost-envisioned-as-a-new-home/)介绍了Mir的设计理念;在这篇文章(https://blog.cooperteam.net/2013/03/12/for-posterity/)中,介绍了Mir相对于Wayland的改进(服务端缓冲区规划和输入系统),而毫不掩饰对Mir的自豪和信心。在那个技术飞速发展的时代里,没人愿意抛弃对未来的期望,但是如果站在事后诸葛亮的角度,Mir的失败却是可以预料到的。

困境

Mir不能战胜Wayland。与一些通常的印象相反,Wayland并非是一个「残疾」的架构,而是「精巧」的架构。Wayland本体只限制了最核心功能,而用各种官方、专用或者自制的协议来扩展Wayland的功能。(可以用这个网站https://wayland.app/protocols/来查看各种合成器对各个协议的支持情况,是不是很像浏览器和网页规范的关系?)这种设计吸取了X11的教训,Wayland的任何功能都可以自然淘汰,避免让本体变得重新臃肿。而Mir的设计并没能提供更先进的设计和更优秀的功能。最可怕的是,其实Mir的开发者自己就知道,通过扩展Wayland也能完成相似的功能。

Mir不会战胜Wayland。从一开始,Mir就被设计成了与Wayland并行的协议。从开发者的文章可以看出,他们并非对Wayland有多大不满,而似乎是只想做个「更(强)纯(迫)洁(症)」的显示服务器。Mir不仅不想和Wayland竞争,而Mir中有很多理念和设计都取自Wayland,X兼容层XMir也是直接借用XWayland(除此之外还缝合了一些源自安卓系统的基础设施)。相比之下,Wayland的初衷则是替代X,显然Wayland的「革命性」更强一些,而Mir却并没能掀起丝毫波澜,他的出现似乎是无关紧要。

Mir不应战胜Wayland。Mir被指控(实际上就是在)分裂社区。他在Wayland还未成熟时就推出,而Mir和Wayland之间又不能相互兼容,最终导致了各个发行版、桌面环境和基础设施的开发者选边站队,毫无疑问,大家会选择Wayland。

种种的困境,让Mir成为一个从已开始便注定失败的项目,尽管他的母公司Canonical希望给Mir强行续命,但结局仍未改变。

众叛亲离(包括自己)

2013年Mir出世,从始至终,除了Canonical自己家的Unity,其他桌面环境中,只有Xubuntu的开发者讨论过将xfce移植到XMir(过了三周这个想法就吹了)。

2013年Ubuntu 13.10正式在Unity7桌面使用了Mir(通过XMir兼容,并且有X11的备用选项),而计划中Unity 8将是纯粹的Mir会话运行在Ubuntu 14.10上,但是因为种种原因,一直未能实装。直到2017年,Canonical最终放弃开发Unity 8(Mir也随之废弃),Ubuntu 18.04采用了定制的GNOME 3作为默认桌面。Unity 8被Ubports接手后直接把Mir拆了换成Wayland,后来改名为Lomiri。(不过最近Unity 7又复活了,Ubuntu Unity成为Ubuntu的一个官方版本。我还没用过,不过我猜这里面应该不会有Mir了。)

SDL 2.0.2开始支持Wayland和Mir(2014年),SDL 2.0.10移除了Mir后端,转向Wayland(2022年)。

GTK 3.16开始实验支持Mir(2015年),但是GTK4中不再包含对Mir的支持(2017年开始开发,2020年正式发布),期间似乎没有改进。

专门为Mir设计的Qt插件「Qt Ubuntu」2013年推出,最后一个版本发布在2018年。

最后,Mir也放弃了Mir自己...

沉默的未来

Mir死掉了吗?并不,虽然从前面的文字中能看出,Mir协议已经穷途末路,但是Mir这个软件却并未停止开发。今天我们再去查看Mir的主页(https://mir-server.io/docs),发现他的介绍已经变了:Mir是一个用来创建在Linux设备上常见的那种Wayland合成器的库...

2017年,Mir开始支持Wayland,这意味着Mir转型成一个类似wlroots的项目,作为创造Wayland合成器的基础工具。Mir最终是成为了Wayland生态的一部分。但是在更换对手后,他甚至也不能取得能与wlroots相提并论的哪怕一点成就。在基于wlroots的合成器铺天盖地,wlroots系列协议成为wayland官方协议之外的另一个「事实标准」,乃至能挑战GNOME和KDE生态的同时,Mir却尚未被各大发行版收录进官方软件源。

题外话

自从Mir之后,Canonical又强行推广Snap(对标Flatpak),自然又是挨骂。而现在很多基于Ubuntu的发行版都打出卖点来就是不用Snap。而Canonical好不容易有个杰作Upstart又被后来的systemd逆袭。难道社区就是亲近Red Hat,讨厌Canonical?要我说,GNU/Linux爱好者们都是相当务实的群体,分辨一个产品到底是为了改善用户体验还是争夺话语权,都是很容易的事情...

Reply Favorite View the author
All Replies
ThinkYoung
deepin
2023-06-02 13:34
#1

ubuntu当年的unity多好看,就因为技术路线想: 硬站队,硬分岔,闭门造轮子,导致折了......

版主大佬,可不可以,也介绍介绍 Wayland技术协议啊!非常喜欢看您讲的技术历史发展!

kissing_heart

Reply View the author
阿尼樱奈奈
deepin
2023-06-02 14:40
#2
ThinkYoung

ubuntu当年的unity多好看,就因为技术路线想: 硬站队,硬分岔,闭门造轮子,导致折了......

版主大佬,可不可以,也介绍介绍 Wayland技术协议啊!非常喜欢看您讲的技术历史发展!

kissing_heart

Wayland他讲过:https://bbs.deepin.org/phone/zh/post/256834

Reply View the author
donaldsebleung
deepin
2023-06-02 16:48
#3

感谢分享kissing_heart

Reply View the author
W2J
deepin
2023-06-03 05:53
#4

乌班图16LTS就是用的unity,基本一个月不用重启它。之后看gnome也还行便装18LTS当系统备份,就是作好了迁移准备。

但后来发现18LTS提权太容易,对其安全性产生了严重怀疑,就此作罢。并且16LTS维护期已经延至了十年,到2026年时再说罢,或许直接上24LTS。

Reply View the author
和谐理工男
deepin
2023-06-04 15:25
#5

都是开源软件,可以相互学习借鉴,不像闭源软件,没了就没了。

Reply View the author