这个月末,也就是4月26日,Ubuntu的第三个LTS(长时期支持版本)——12.04就要正式发布。对其而言,最受挑战的,将是「Unity桌面」。
为何?因为Unity桌面自从问世以来一直饱受争议,尽管我很喜欢它,但我不得不正视这个现实——作为支持力度长达五年的面向个人、企业以及服务器的Ubuntu 12.04,首次在LTS上采用了Unity这个新桌面环境,它究竟能不能保证质量和可用性?
因此,我决定回顾一下过去,从Unity的出现、设计、发展、变化入手,探讨一下关于开发一个图形系统背后的种种。从一个100%的观察者的角度,全面剖析Unity桌面。
文字可能有点多,请大家慢慢读 :D
Unity的出现
让我们回到2010年的5月份,也就是整整两年以前。Ubuntu创始人——Mark Shuttleworth先生在他的Blog上宣布了首次宣布了Unity桌面,文章是《Unity, and Ubuntu Light》。
从标题看,除了Unity之外,大家应该还注意到了「Ubuntu Light」这个概念,但是我相信大多数人应该都忘记它了,连Canonical也不再提了,为何?这要从当时的时代背景出发。
当时上网本流行正在迎来它最后的「辉煌」(如果你说它从来没辉煌过我也同意这个说法),iPad的发布与流行直接宣布了上网本的死刑。而当时Ubuntu Light便是一套面向上网本双启动的解决方案,它为上网本专门优化界面,并提供快速的双引导机制。
尽管Unity最先采用在Ubuntu 10.10的上网本上,并且部署在双引导机器上的这个愿景从来没有达成,但是Mark的愿景不仅仅是这么简单,他在blog上也写到,Unity是面向:Netbook和Desktop。
在当时预览版出来的时候,作为新事物的积极体验者的我的当然不会错过,也狠狠地试用并评测了一把,当时还写了这么篇文章《Ubuntu Unity看起来很美!》。请注意当时我用了「看起来很美」这个词,因而当时我对其还是持保留意见,也许是又一个失败的项目。
当时的截图,可以看出Unity基本元素已经定形了:
- 上面板:在12.04当中Logo已经移至了Launcher,Google搜索框也不见,Indicator继续保留;
- 左侧Launcher基本保持一致
- Expose效果,由点击面板的Ubuntu Logo触发。
Launcher的右键菜单
动画效果
支持拖曳。
可以说,这个预览版的Unity已经有模有样了,在2010年的10月份,Unity做了更多改进,增加了支持搜索的Dash,并且在当时成为Ubuntu 10.10 Netbook Edition的默认桌面。
这个时候,技术将是一个绕不过的话题,当时的Unity实际上比较稳定——除了比较慢。当时Unity的技术实现是:
- Mutter窗口管理器:也就是与GNOME Shell是同一个窗口管理器。Mutter虽然是一套新的窗口管理器,但是它早就应用至了Intel的Moblin(后来变成MeeGo),因此稳定性和可靠性方面比较好。
- Clutter图形工具库:也是由Intel收购的一家软件公司开发,能方便快速地实现简单的动画效果,跟GTK的用法差不多,不需要对OpenGL有什么了解也能做出漂亮的3D动画效果。
也就是说,利用这两项比较成熟的技术,Canonical快速地实现了设计中的Unity桌面,并率先在Ubuntu 10.10 Netbook Edition上得以采用,除了运行效率不高,用户量也不高,这个时候的Unity,更多只是一个把想法快速实现出来的过程,或者说设计的demo。
然而,变化来的比任何时候都要快……
Unity接受公众检阅的时代
Ubuntu有着严格的发布周期,每半年一个常规版本,每两年一个LTS长时期支持版本。在发布完Ubuntu 10.10之后,Canonical又要马不停蹄的准备下个版本——Ubuntu 11.04了。正如你所知,这个版本,Unity桌面被正式采用作为桌面版本的默认的桌面环境,从此Desktop和Netbook大一统,Ubuntu Unity饱受争议,也从这个时候开始了。
也许是受到了iPad的冲击,也许是Mark Shuttleworth的蓝图本来也不在Netbook上,又或许是Mark本身是一个非常会变通的人,他做了将在Ubuntu 11.04默认使用Unity桌面环境的决定。这个决定的背后,仍然由技术选型决定了其最终质量,而这个技术变化的背后,有太多的纠结在里面。
大家都知道Compiz这个又炫又酷的Linux 3D桌面的代表作吧,本人也是因为这么炫酷的东西而进入Linux世界。然而Compiz的发展一直不是特别顺利,因为开发者们开发与设计理念的分 岐,Compiz在出世后不久,就fork出了一个Beryl,继续走又炫又酷的插件化扩展机制。Beryl发展了一段时间后,双方又觉得理念还是一致 的,不需要做重复劳动,于是又合并成了新的「Compiz Fusion」,再过一段时间后,有开发人员的不断进来与离去,Compiz Fusion又最后恢复了原始的名字:Compiz。而其最近的开发者与维护者Sam,则花费了大量的精力继续为Compiz添砖加瓦。大概是基于开发者 少或者个人练习等原因,他在这段时间把Compiz重新用C++实现了一遍……就是在Ubuntu 10.10正式发布这段时间,他也正式被Canonical雇用(见:A bright new future for Compiz),开始了Compiz与Unity的集成之路。至于为什么要换成基于Compiz并且雇用其开发者,很简单,Ubuntu桌面版本身是一直基于经典Compiz与GNOME混合的,雇用核心的开发力量才能主导桌面环境的进一步开发。
之前我提到Unity最初是基于Mutter与Clutter发布了,要把Unity移植至Compiz,说难也不难,说容易也不容易,偏偏在Compiz用C++重写以后这段时间,它还完全没有接受稳定性方面的考验,于是……接下去这段历史就为大家所知了。
在半年的时间内,Unity成功地被移植至了基于Compiz管理器,并用了大量了OpenGL实现替换原先的Clutter以实现更多的自定义效 果,同时还开发了Nux这个基于OpenGL的图形库以供Unity使用。然而,在短时间内开发一个成熟且可用的图形桌面系统真的不是一件容易的事情,我 还清楚的记得当时Unity的实现方式:
- 从Mutter的插件转变成了Compiz的插件;
- 从Clutter变成了以OpenGL为主(可能还带有少量Clutter);
- 代码几乎是C、C++、Vala的混合;
开发时间这么短,又经历了如此大的移植与重写,又是依赖于不成熟的Compiz(C++版),以致于在Ubuntu 11.04正式发布的前几周,Ubuntu开发人员仍在纠结到底要不要把这个还不成熟的Unity桌面推出来。那段时间我也第一时间用着这个几乎天天崩溃 好几次的Unity桌面,作为用户也在纠结着,当时我的想法是:不成熟,一定不要作为默认桌面集成,可以供用户选择。
可是,Mark Shuttleworth很执着,既然开发出来了,不经历一下用户的狂风暴雨,怎么能证明Unity是好是坏呢?更何况,Ubuntu 11.04还不是LTS,它有试错的机会 :)
终于,2011年4月28日,Ubuntu 11.04 Natty Narwhal,正式批装上阵了……风风雨雨就此展开。
当时世界各大媒体都在关注Ubuntu 11.04,有人觉得这是Linux桌面的革命,也有人唱衰它…当然这不防碍相对客观的媒体去评测Unity,比如我最喜欢看Ars Technica的文章(话说他们把艺术与科技结合的很好),他们写了篇全面剖析Ubuntu 11.04的文章(不仅仅是Unity),见此:Riding the Narwhal: Ars reviews Unity in Ubuntu 11.04
这篇文章从Unity的操作与使用,把这个新的桌面环境几乎完整的展现给了大家。当然,写的再好的文章,看看终究是看看,Unity还是要自己用过 才知道。现实是,大量的用户报告Unity经常不稳定崩溃,反应缓慢,使用不习惯,旧的应用兼容性不好…Unity受到了广泛的怀疑,包括——我!
我对Ubuntu开发者执意在Ubuntu 11.04默认采用了Unity就很有意见,加上Unity的不稳定,更是生气。但是我想冷静一来,好好地去使用并习惯一下Unity,究竟是何能让 Mark先生如此坚定地推Unity桌面。于是我当时本着客观的原则,在2011年5月那段在家休息的时间里,并拿Mac OS X做为对比,写下了这篇三篇文章:
尽管标题是:细数Unity的好与坏,但是两篇是写「坏」,只有一篇是写「好」。而且我再也没有去写第四篇,因为写到后来我悲伤地发现:「坏」远远 比「好」多,特别是对我这样对细节要求很高的人,有很多的不完美。更令人悲剧的是,中文用户直接被抛弃了——Ubuntu 11.04 Unity的Dash根本不支持中文搜索!
当然不得不提的是,Ubuntu的Indicator一直是我觉得做的最好的地方,比Mac OS X的同类事物都要好:
比如当时可以方便的发Twitter,尽管这个功能已经被去掉了。
就这样,在Ubuntu 11.04正式发布至Ubuntu 11.10发布的这段时间,Ubuntu 11.04就像一个外星孤儿降临地球(实在不知道怎么来描述了),被大家无情的耻笑及怀疑着:你来地球的终极目的到底是神马?!
就在这段时间,我一边继续体验着这个有点坏掉的Unity,一边慢慢地领会到了Unity的设计思想,以及未来的道路…尽管我不知是否与Mark的愿景一致,但是我希望在下篇文章中,我对Unity的理解与愿景,能让大家对它有一个全新的认识。
下篇再见 :)