这几天看到 Ubuntu 放弃 Unity 和 Mir 开发,转向 Gnome 作为默认桌面环境的新闻,作为一个 Linux 十几年的老兵和 Linux 桌面的开发者,内心颇感良多。 Ubuntu 做为全世界 Linux 界的桌面先驱者和创新者,突然宣布放弃自己多年开发的 Unity, 相当于在桌面领域,直接放弃了战斗向微软投降,不仅仅是 Linux 桌面的悲哀,更是对于全球 Linux 黑客坚信 Linux 必胜信心的极大打击。 曾经的 Ubuntu 粉丝我还记得 2006~2007 年,那时候我还在成都写手机游戏,当时年少轻狂的我,一直幻想自己要做最牛掰的开发者,就像科幻电影里面的黑客一样,无所不能。那时候虽然 Windows 玩的很溜,但是一直都在核心技术外徘徊,不知道如何达到个人目标。 上学的时候玩过 RedHat 6.0, 也装过 KDE/Gnome 的桌面环境,但是系统中的各种问题,比如无法使用输入法、中文字体配置很差,甚至因为显卡驱动的原因都无法正常开机,所以 Linux 对于当年的我来说,就像神话一样,只有顶级黑客才能玩的转的系统。 直到后面用了 Ubuntu 6.10 和 Ubuntu 7.04, 当时的 Ubuntu 可以说是非常惊艳,原来 RedHat 和 Suse 在桌面端的各种细节问题一扫而光,装上系统以后就可以直接用,而且还可以非常容易的安装应用软件来深入学习 Linux。可以说是 Ubuntu 带领我真正的入门了 Linux, 经过很多年的深入学习 Linux, 到后来在 Linux 上开发 Emacs 和 Haskell 相关的项目,直至后面创业做 deepin 操作系统。 从我个人来说,对 Ubuntu 系统以及背后的开发者都是怀着无比的敬畏和崇拜。 我看这么多年 Ubuntu 的发展Ubuntu 从当年最佳的 Linux 桌面操作系统到今天宣布放弃自己研发的 Unity 桌面,已经有13年历史了,在我看来主要有以下几个阶段: 最初的惊艳Ubuntu 最初的发展目标就是把原来 Linux 系统需要手动操作的基本配置,比如字体、输入法和显卡驱动等问题内置到操作系统中,用户不用安装系统后还需要跟乱码、中文输入以及显示等问题斗智斗勇, 可以说那个时代的 Ubuntu 是解决了当时 Linux 普及的几个重要问题,把 Linux 系统从当时只有开发者才能玩转的高手系统普及到普通的电脑爱好者就可以折腾使用。 酷炫的 Compiz 管理器我相信很多 Linux 爱好者都惊叹于当年 Compiz 这个 3D 窗口管理器能够达到的酷炫效果,比如 3D 旋转桌面、拖动窗口的果冻效果、一把火烧掉窗口的效果…… 特别是同时代的 Windows 系统都还是非常原始的 2D 效果,甚至 XP 的窗口连窗口阴影都还没有的时候。当时的 Linux 系统的,特别是 Compiz 吸引大部分用户去尝试 Linux 系统,即使最后大家仅仅只是因为好奇或是玩玩,也大大增强了 Linux 系统的曝光率。 从另外一方面,Linux 从当年 Compiz 发展十年以后,反而是那些简单特效甚至没有特效的 Linux 系统得到最高的用户量,原因我觉得主要有两个:
Gnome3 vs Unity在 2011 年底, Gnome 发布了它最新的 Gnome3 系统, 当时 Gnome3 以酷炫的特效加上 JavaScript 的插件体系而吸引了开源社区开发者的兴趣,特别是 Gnome3 内置 GJS 引擎,可以直接在桌面环境中编写 JavaScript 插件后直接 reload 即可更新桌面环境的功能和视觉效果,还有吊炸天的 inspector 特性,可以直接通过鼠标点击界面后定位到对应的代码位置,再加上 GJS 可以从屏幕顶部打开一个类似 quake terminal 的下拉调试环境,在调试环境中直接像脚本语言那样实时列出任何对象的属性和方法,立即改立即生效。 上面这些开发者特性,在那时候 Google 满天吹嘘 Html5/JavaScript 的美好未来的大环境下,对于开发者有极大的诱惑力,很多开发者都奔着 Gnome3 这些类似 Web 的开发方式而去,并贡献了大量好玩的插件。 在 Gnome3 之前, Ubuntu 一直都在用 Gnome2 桌面环境,其实 Gnome3 在 2011 年发布之前已经规划了 2 年,从当时的宣传来说是下一代桌面环境,2009、2010 年 Gnome3 还在社区发布了大量吊炸天的预览视频。作为当时桌面系统先锋的 Ubuntu 也非常期待能用上 Gnome3。 而无奈 Gnome3 一次又一次跳票,最后 Ubuntu 实在等不及了,就在 Gnome2 桌面环境后台服务的基础之上,开发了自己的 Unity UI。 当时社区也因为 Unity 和 Gnome3 的很多设计理念类似谴责 Ubuntu 在进行分裂行为。 Unity 产品的特点主要定位在几点:
我个人并不喜欢这些面向开发人员(而不是面向普通用户)的设计,但是撇开个人的主观设计喜好外,我认为 Unity 是相对于 Gnome3 更成熟的产品,Unity 的很多改动都是针对 PC 桌面系统的真实痛点来改进的,特别是一些程序员的用户很喜欢 Unity 诸多设计。而不是像 Gnome3 那样一味的追求平板用户体验,极大降低了 PC 桌面用户的习惯和易用性, Gnome3 的槽点我后面详细说。 不论从商业公司的独立性发展考虑还是产品质量负责的角度,我都是非常支持 Ubuntu 当时独立开发自己 Unity 桌面环境的行为,Unity 确实在随后的几年证明了自己的产品质量和设计细节都比 Gnome3 要好很多。 Wayland vs Mir在 Gnome3 和 Unity 发展的同时,Intel 的雇员 Kristian Høgsberg 正在领导开发新的显示服务器。Wayland 相对于古老的 X11 来说最大的提升是,Gtk/Qt 这些图形库进行图形绘制时,不用像 X11 那样发送绘制消息到 XServer 来进行绘制,而是由 Client 自己进行图形绘制,Wayland 只用担任图层混合器的作用。这样不但减少了 X Client 和 X Server 之间不必要的通讯,而且因为由 Client 自己进行渲染,所以很多画面撕裂和闪屏的现象从原理上就避免了。 大家可以看一下下面的两张架构图来理解两者的差别:
X 显示架构
Wayland 显示架构 Wayland 因为要彻底从技术架构上颠覆 Linux 几十年 X11 的渲染方式,不论从架构设计还是代码实现上都会非常复杂,不但要开发协议本身,还需要开发适合 Wayland 的混合器和窗口管理器,最后导致 Wayland 1.0 稳定版一再跳票。 而 Ubuntu 在独立开发 Unity 桌面环境的同时,也仿造了 Wayland 的架构开发了自己的 Mir 显示服务器,除了等不及 Wayland 稳定之外,更重要的是 Ubuntu 为了它的下一步宏伟计划“Ubuntu Touch”。按照 Ubuntu 创始人 Mark 的设想,Mir 不仅仅要像 Wayland 那样从原理上提升 Linux 图形渲染效率,而且 Mir 还得担负起手机和电脑融合的使命,可以让 Ubuntu Touch 的手机在插上显示器底座时,手机的应用通过 Mir 的支持,可以直接在外接显示器上显示手机应用窗口,最终达到“当你手机放到底座时就是电脑,拿走就是手机”的设想。 不论 Wayland 还是 Mir,虽然底层架构都非常先进,但是为了兼容现有的 X11 程序,它们分别开发了 XWayland 和 XMir 用于在新的显示服务器协议上支持现有的大多数 X11 程序(主要是 Gtk2/Qt3/Qt4 开发的大多数应用)。 具有讽刺意味的是,Wayland 和 Mir 本来就是要解决 X11 那种不适合现代 PC 场景繁琐的通讯协议,甚至很多开发者为了技术的洁癖都在大力安利 Wayland/Mir ,但是最后 XWayland 和 XMir 本身的兼容实现却比 X11 的实现更加“恶心”和繁琐,包括 Mir 的开发者最后都放弃了 XMir 的开发。 正是因为 Wayland/Mir 这样的技术无法彻底解决和大部分原本就基于 X11 协议而开发的应用的兼容性问题,最后导致基于 Wayland/Mir 开发的桌面系统从 ”解决渲染性能问题“ 转变到 “无法运行很多现有 Linux 应用” 这一个更加让用户难以接受的结果。这也是后面基于 Mir 开发的新版 Unity 难产的重要原因。 Ubuntu Touch
Mark 从 2011 年宣布开发 Ubuntu Touch 到 2015 年第一只搭载 Ubuntu 的智能手机在欧洲上市,Ubuntu 把大多数主力开发都投入到 Ubuntu Touch 手机操作系统的开发中,整整 4 年,世界上最好的 Linux 桌面开发团队把 4 年的时间浪费在开发一个在 PC、手机、平板和电视上拥有强迫症般统一界面的 Unity 上,而且希望 Ubuntu Touch 能够占领低端的智能手机操作系统市场,或者像 Mark 说的那样在 Android 外给世界另外一个选择。 这 4 年的时间,因为主力开发 Ubuntu Touch 的原因,Ubuntu 桌面操作系统从原来的高速创新到鲜有改动,往往版本的发布就是软件仓库更新加上壁纸更新就发布新版了,不再像原来一样,每个版本都来易用性的提升和功能增强。 而且大家都知道,2011 年 ~ 2015 年这几年正是安卓系统从起步到发展成全球移动操作系统霸主的 4年,Ubuntu 闭门造车了 4 年到 2015 年发布第一台 Ubuntu Touch 手机以来,Ubuntu Touch 手机在全球销售惨淡,甚至无人问津。 Ubuntu 今天放弃自己开发的 Unity 重要原因,就是因为 Ubuntu 耗费了公司所有资源在开发一个用户根本就不会买的手机操作系统,Ubuntu Touch 可以说是 Ubuntu 最愚蠢的决策:
Ubuntu Touch 不论从公司战略、产品时机、应用生态还是交互设计各方面来看都是非常愚蠢和非常失败的产品,而这一切都要怪罪于 Mark 本人开发者的产品思维和一意孤行,白白浪费了世界顶尖开发者的精力和理想。 FlatPak vs SnapLinux 桌面发展到今天依然无法和微软以及苹果系统本身竞争的一个重要原因就是,Linux 系统软件包之间的依赖问题,系统和应用之间的紧耦合,应用和应用之间的依赖库紧耦合,只要底层库升级了,系统升级有可能会把应用升级挂,一个应用升级很有可能会导致另外一个应用无法使用。 如果把系统所有的软件包和应用的依赖打印出来,你会发现整个桌面 Linux 操作系统就像一张巨大的错综复杂的蜘蛛网,蜘蛛网的任何一环坏掉都会引起系统和应用不稳定甚至无法使用的问题,同时应用厂商为了开源社区的诸多底层库升级疲于奔命, 最后的结果是,Linux 操作系统在底层 5 万个软件包,2000 多个应用,700 个精品应用的时候,就已经非常非常的不稳定了,如果有一天 Linux 平台有上十万个应用的时候,系统和应用一定是崩溃的,因为任何底层的技术革新都会带来应用厂商的应用会失效或者因为 API 不兼容最后无法运行。 所以,为了迎接将来 Linux 操作系统应用生态爆发的那一天,Linux 操作系统必须像微软和苹果那样,在系统和应用之间构建一条抽象 API 层,有点类似微软的 Win32 API 和 .Net 的意思,只要应用遵守中间层的运行时 API 和接口以及应用之间做到互相隔离开,应用升级就不会影响到其他应用,系统底层做再多规模的底层库革新,只要革新完以后保证中间层调用接口不要变,系统的升级就完全不会影响到应用的稳定。 举一个最简单的例子,微软从 Windows XP 开始,操作系统底层技术一直在变,但是你会发现十几年前应用厂商为 Windows XP 开发的应用依然可以在 Windows 10 最新的操作系统上运行,这种类型的兼容性才是桌面应用生态赖以生存的重要技术保障。 而 Gnome 开发的 FlatPak 和 Ubuntu 开发的 Snap 就是为了解决应用之间的隔离而生的技术,这两个技术都通过 Linux 内核的 cgroups 技术,FlatPak 是通过 OsTree 来解决应用多版本的问题。通过把应用之间隔离在沙盒之内,保证不同应用之间或者应用不同版本之间完全在文件系统上进行隔离,这样就彻底解决应用之间升级互相影响的问题,而且这两种技术通过引入应用程序运行时的 runtime 接口,保证了系统和应用之间有一个稳定的接口,从侧面也保证了系统和应用之间的依赖分离。 FlatPak 和 Snap 都能解决 Linux 系统依赖的问题,FlatPak 的目标是解决 Linux 桌面现有应用的问题,Snap 则是为了解决 Ubuntu Touch 而生的。 听说 Mark 希望 Snap 不但能够运行在 Linux 上,还能运行到别的操作系统上。在我看来这也是一个错误的选择,微软和苹果找就有相关的成熟技术,根本不需要 snap, 反而是 Linux 才需要这样的技术,希望 Ubuntu 能够把 snap 的技术发展壮大,有利于 Linux 操作系统的应用生态。 Gnome 是一个比 Unity 更差的选择从 Ubuntu 放弃 Unity 的那一刻起,Ubuntu 已经放弃桌面了。很多不了解桌面环境开发的用户会觉得 Ubuntu 不是回归 Gnome 了吗?应该是开源社区的好事啊? 桌面操作系统的用户体验和交互细节息息相关的就是桌面环境,而 Gnome3 桌面环境从各方面来说都不是面向普通用户的高质量产品。 核心开发者更关心技术折腾, 不再关心产品质量和 API 兼容性Gnome 好的地方是开发了封装了大量基于 GObject 的库,外部开发者能够快速基于这些 GObject 库来开发程序。 但是从开发者的技术选型来说,比如最开始做 vala, gnome shell 的时候做 GJS/JavaScript, 到最近讨论用 rust, 这些都可以看出 Gnome3 的开发者更关注的是实现桌面环境后台的编程语言和技术是否是最酷最新的,追求这个世界上最先进的技术是每个开发者的源动力,但是 Linux 桌面这十几年之所以发展停止不前的重要原因是:用户喜欢一个开箱即用、美观和稳定的桌面系统,用户不关心实现这些的后台技术是否是最屌的。对于真正理想的研发团队,或者真正的顶尖开发者来说,编程语言和最新的开发库只是工具和程序表达方式而已,只要编程能力高,什么程序都是可以开发的。 而 Linux 社区的开发者,大多数开发者本身都是喜欢折腾最新技术的,因为最新的技术对于开发者来说可以学到很多新的知识,他们在新的编程语言和新的技术基础之上能够做出自己的东西,让自己更有价值和快乐,而这些都是非常自然的地方。但是我们应该考虑在先进技术的同时,面向真正的桌面用户做出稳定可靠的产品。 Gnome3 即使面向开发者都是极度不友好的,整个桌面环境就完全在一个 JavaScript 的环境中,中间没有任何整体的 API 设计和插件接口,Gnome3 的插件作者都是通过 Gnome Shell 调试器追踪到一个 JavaScript 的 Object 对象,通过属性链的方式魔改很多对象的属性方式,最后来开发出 Gnome3 的插件。不通过插件 API 接口,而是通过对象的属性来编写的插件,导致只要 Gnome3 的核心代码一改变,或者属性链中的任一一个变量发生了变化,Gnome3 插件就失效了,目前 Gnome3 在线插件的页面也只有 20% 的插件能够在最新版的 Gnome3 环境中安装运行。 Gtk+ 已经无力和 Qt 抗衡我个人作为 Gtk+ 骨灰粉,也是 Gtk2hs 的核心开发者,对 Gtk+ 2000 多个 API 以及很多 GObject 库(比如vte、webkit、poppler 等)都非常熟悉。但是自从 Gnome3 弄伤心以后(我曾经写了 12 个 Gnome3 插件,1 万多行代码都因为 Gnome3 各种乱改 API 后升级失效),我对 Gtk+ 的信心也随之大大降低。 特别是 Gtk+3 这个被 Gtk+/Gnome 开发者盛赞的版本,除了添加了一下 Overlay 的控件和 CSS 属性功能外,再没有大的功能改进。反观 Qt, 从 Qt4 时代的各有千秋到 Qt5 的大幅度提升质量和功能,包括最新的 QML 大大提升了图形应用程序的开发(虽然 QML 对显卡兼容性还是有点问题)。 Gtk+ 的很多 API 至今多有很多隐藏的小技巧,需要多年的踏坑经验才能完全掌握,而 Qt 本身的 API 设计要优秀的多。 Gnome3 不是一个产品质量的桌面环境
所以 Gnome3 与其说是不如 Unity 桌面环境(我相信 Ubuntu 的 Mark 也知道),还不如说 Ubuntu 彻底放弃在桌面上的创新和主力研发,彻底向微软投降了。 开源社区 vs 商业产品从最初的 RedHat 放弃桌面系统,Suse 和微软深入合作,2016 年 Ubuntu 移植 Bash 到 Win10, 到如今 Ubuntu 放弃 Unity 和 Mir 后,这么多年,大家在开源事业上努力奋斗,但是从最开始的斗志昂然到如今的放弃,为什么开源的桌面系统做不好呢? 我个人也在带领团队开发 deepin 操作系统,这么多年开发 Linux 桌面操作系统的经历,我个人对于开源社区和商业产品的理解有几点: Geek 是这个世界的革命先锋,但不能以 Geek 理念做产品电脑极客在以飞快的速度在改变世界,正是有这些非常聪明的极客和开源黑客,全世界的科技发展,特别是开源技术的在最近十年获得了极大的发展。 电脑极客在所有人的类型是非常稀少的,这些全世界 1% 的人用各自的聪明才智推动开源运动的发展,包括 Ubuntu 的 CEO Mark 本人也是极客中的极客、曾经的 Debian 开发者,在推动 Ubuntu 初期解决了很多 Linux 桌面易用性的问题。 电脑极客与其说是一种职业,还不如说是一种生活方式,电脑极客希望全世界都像电脑运行那样:刚正不阿、完美、统一的美,没有一丝一毫的例外情况,所有的结果都应该在预计和期望范围。 但是不能用极客的思维去做产品,因为这个世界本质就是混沌的、有各种各样缺陷、更强调社会习惯和协作,而普通用户组成的非电脑社会,更多人只在乎这个社会都在怎么使用电脑?大家在流行使用什么?他们更在于电影明星在用什么,模仿各种潮流,而不在于一个程序员内心在想什么。 Ubuntu 最开始推崇 Unity,是从产品质量和公司的掌控力出发的,开源社区指责的分裂我觉得是不客观的。但是后面为了统一 PC、手机、平板、电视的整个操作界面,所有界面都基于左侧任务栏+顶部任务栏+搜索导向的 Unity 启动器来设计的,从极客爱好者来看,这是一种从程序代码到总体实现的一种统一,一种认为世界会赞赏的方式来构建 Ubuntu 系统。 反观我们自己作为一个普通人,我们会怎么对待这几样设备?
我们认真的总结,即可发现这几个设备的常用交互方式:
所以电脑极客经常问的一句话 "为什么不做手机操作系统?”,更多的时候是在问 "为什么不能像 PC 那样把别的计算平台做的更加赋予生产力?”,所以当初 Ubuntu Touch 追求的 “同一套 Unity 界面,让不同的计算平台用统一套界面和交互设计来满足”,这本身就是一个伪命题,或者说是电脑极客自己的一厢情愿。 这几个计算平台不论从使用场景、用户交互习惯还是用户对这些计算设备的期望都完全不同,当初微软融合电脑和平板本身,都已经让喜欢 PC 的用户大大不爽,最后迫使微软停止融合的设计,改回最初的 PC 操作设计。而 Ubuntu 所有计算平台的操作融合更是错的非常离谱,当第一代 Ubuntu Touch 手机推出市场后,先不论应用的稀缺,光是操作系统就和主流的 “看到图标就点,返回就按 Home 键” 的主流手机操作系统截然不同,最后惨淡收场。 所以,极客本身是世界革命的科技先锋,但是不能用极客思维去做产品,因为极客毕竟还是这个世界上的非常少数的人,极客思维本身无法代表更为广泛的普通用户。 底层技术的革新需要采用温水煮青蛙的方式,而不是激进的踏进沙漠去构建大海很多人经常问我 “deepin 什么时候用 wayland?" ,我首先想回答的是 “合适的时候就会用”,但是我更想回答的是 ”deepin 只会推动稳定的技术和产品给用户,而不是拿用户当小白鼠”。
Wayland 和 Mir 本身都是非常革新的显示技术,我相信也是 Linux 未来显示技术的主流,但是作为现阶段来说,Wayland 依然不是一个稳定的产品级方案: 在显卡厂商逐渐支持 Wayland 改善显卡驱动的情况下,在 Linux 桌面,我觉得应该大力把桌面环境已经应用迁移到 Gtk+3/Qt5 的图形库上,等有一天显卡厂商驱动兼容性足够好以后,通过修改窗口管理器和移植应用的方式,直接把上层的桌面环境和应用软件整体迁移到 Wayland 上。 当迁移完成后,用户在显卡驱动以及应用方面完全感受不到差异的时候,才能说是负责任和持续的迁移方案。而不是很多开源社区的用户说的先迁移到 Wayland 上去再说,这样会导致使用 Wayland 的时候,让用户同时面临显卡驱动和更加匮乏的应用生态问题。 如果打个比方,整个开源社区是整个世界,革新技术是革命领袖的话。任何一个 Linux 桌面系统从 X11 迁移到 Wayland 更应该考虑策略和渐进的替换方式,而不是一脚踏进沙漠以后要构建整个海洋。任何一项革新的技术除了技术先进性一定要考虑革命时期的群众基础,只有在革新的时候解决用户的问题,得到用户支持,这样的技术革新才能完成底层核心技术的切换,否则就和当年 Intel/HP 大力推崇的安腾 CPU,虽然各种技术先进,但是因为不兼容现有操作系统和应用,最后不得已而抛弃。 安卓生态时代,不要做 Linux 手机操作系统,这不仅仅只是一个技术问题
为什么会这么说?因为微软花了几十年构建的生态帝国,是靠当时微软在 PC 行业的势,当时的时势加上微软自身的努力(只有做过操作系统生态的团队才能理解微软当年有多苦逼)做到今天的地步的。做操作系统系统这种承上启下+白菜钱白粉心的企业一般都是前期是孙子后期是爷的命,前期遇到硬件应用和各种各样奇怪的问题,操作系统厂商各种背锅(为啥别的操作系统没有这个问题?)干各种不是操作系统应该干的活,以一己之力推动整个生态的发展。而现在 PC 的所有生态和需求都已经定型了,微软不会鸟你,也没有各种不懂的媒体跟风干扰你(他们最多就说 PC 是夕阳产业,哈哈),你和你的团队只需要一点一点的努力,用十倍于微软苦逼的努力,只要在某些行业和开源社区做出成绩,就会有用户认同你,PC 再夕阳大家也不可能离开它,因为生产力是整个社会最基本的动力,大家都用手机和平板办公,整个社会的生产力就会成倍的降低,所以大家离不开 PC,我经常会讽刺那些说 PC 没用,平板才是未来的朋友: “你用平板写代码或者你们公司的财务用平板给你算工资,我就愿意相信你” 。 移动终端本身就是面向普通老百姓的新一代计算设备,在这个行业,所有的人,所有的企业都在围绕安卓构建新的应用,面临一个日新月异更新换代的行业,对于操作系统厂商来说,这些不是机会,而是你无法挑战安卓系统的巨大阻碍,而且每天都会更大,因为有更多的开发者和开发厂商自己掏钱投入安卓阵营。人类社会是一个以跟风和模仿为基调的动物群体,当你做的和大多数人都不一样,各种人就会干扰你,导致你无法专心做好操作系统,而且面对一个不断发展的生态,整个行业的切换成本是你现在无法撼动安卓的重要原因,因为安卓构建的不光光是操作系统本身,构建更多的是日益越大的行业投入和切换成本。 反观 PC 行业,在真正有下一代生产力计算平台出现之前(安卓只是娱乐平台),PC 依然是整个社会生产力的核心,大家不可能离开 PC,PC 也不会像很多没有思考能力的人期望的那样消失殆尽。任何 PC 操作系统厂商只要一步一步的花费数十年的时间,终有一天会构建庞大的桌面应用生态,在生产力上和开放源代码上给这个社会带来更多的价值,其实 Mac 系统本身就是一个很好的例子。 PC 操作系统不是未来,但是 PC 操作系统是现代还不可或缺的计算平台,而且 PC 操作系统是全世界对软件工程要求最高的挑战。当一个团队具备实力能够完整构建像微软那样的 PC 操作系统能力和知识积累后,这个团队的实力能够在下一代计算平台掌握绝对的控制力。 大家熟知的励志故事就是:苹果在 PC 被微软打爆以后,用 iPhone 让微软再也爬不起来。 包格式只对系统核心有用,对于应用厂商的无意义我一直认为包格式是服务器操作系统和桌面操作系统系统核心才需要的东西,因为具有依赖关系的包特别适合构建相互关联的操作系统底层核心库,只要你升级一下核心库,整个操作系统的核心技术就升级了,不用担心冗余和更新问题。 但是包格式对于应用厂商无意义,操作系统站在应用厂商的出发点最应该考虑的是提供一套接口抽象层和应用隔离机制,抽象接口层的目的是分离系统和应用,应用隔离机制的目的是隔离应用之间在文件系统上的依赖。 只有这样,才能真正构建一个 Linux 桌面的生态:
这样做的目的是让彻底解放操作系统厂商,操作系统厂商的开发人员可以把所有精力放在核心技术的开发和应用开发接口的维护上,而不用每天除了开发操作系统还需要打包各种应用软件包。 应用的质量和功能应该由应用厂商自己维护,而不是丢锅给操作系统开发人员,应用的好坏本质上应该通过用户评价和经济刺激让应用厂商自己维护,如果应用长期没有作者维护,用户自然会抛弃应用的,进行自然淘汰,就像 Windows 上的应用,哪个作者更努力做的更好,用户就会越多。 而不是像现在 Linux 发行版的打包人员,固定的几十个人面对着成千上万的应用软件打包工作,不论从工作量还是持续发展来说,这种分担工作量的组织方式本来就是不合理的,如果每个应用都需要操作系统开发人员来维护,固定人数和固定时间面对无穷的应用时,势必会导致精力不够,甚至核心的系统开发者不再给开源社区做贡献时,他维护的应用的更新和质量就会下降,最后损害的还是用户。 所以应用隔离的技术不仅仅只是技术上模仿微软和苹果,而是从社会的生产力上彻底解决工作分担组织的问题,只有把应用的维护工作丢给应用开发者这些直接利益关系者才能持续的推动整个生态的前进,而不仅仅通过开源精神和信仰把所有的维护负担都丢给Linux发行版的开发者。 Linux 桌面的未来在哪里?说了这么多,Linux 桌面的未来在哪里? 实话实说,我不知道,我要是知道的话,deepin 早已经打败微软了,哈哈哈。 但是从我这么多年开发桌面系统的精力,我总结了几条经验:
Linux 桌面是世界上最大的软件工程挑战, 也是所有 Linux 爱好者的希望Linux 桌面以及桌面应用生态的构建是世界上最大的软件工程挑战,几十年各种伟大的开源公司和开源社区在为这个目标努力,我相信只要持续努力,最终可以从希望变成理想成真的。 Ubuntu 今天放弃战斗了,非常可惜一面 Linux 桌面的旗帜倒下了。 做为依然奋斗在 Linux 桌面事业的开发者,想跟未来的开源开发者说一句话:
(题图来自:fannone.com) (责任编辑:IT) |