Ubuntu 放弃了战斗向微软投降

导读这几天看到 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系统得到最高的用户量,原因我觉得主要有两个:

  1. PC这种生产力的工具最重要的是高效,非常酷炫的特效长时间用,反而会极大干扰用户视觉,进而影响用户对内容的专注力,而且时间长了也很容易引起用户的视觉疲劳,反而是Mac那种恰到好处的轻微动画让用户感到优雅和舒服, 这方面Linux发行版 Elementary OS 做的要好很多。
  2. 任何操作系统需要长久留住用户,还是需要靠优秀的人机交互设计和丰富的应用来留住用户,操作系统只有给用户带来真实的价值,让用户工作更高效和生活更快乐,用户才会长期坚持下去,光靠酷炫的动画吸引,用户一旦视觉疲劳以后,最终还是会放弃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 产品的特点主要定位在几点:

  1. HUD 的左上角搜索设计,快速搜索应用和很多插件提供的搜索结果,这一点和 Gnome3 的Launcher插件体系非常像,通过插件,可以搜索除应用外的更多搜索结果(比如天气、在线视频、计算器结果等)
  2. 任务栏固定在左边,对宽屏更加优化,相对于程序员有更多的纵向空间
  3. 全局菜单,通过合并顶部栏和窗口标题栏,进一步节省纵向空间

我个人并不喜欢这些面向开发人员(而不是面向普通用户)的设计,但是撇开个人的主观设计喜好外,我认为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-architecture.png

Wayland-architecture.png

Wayland 因为要彻底从技术架构上颠覆Linux几十年X11的渲染方式,不论从架构设计还是代码实现上都会非常复杂,不但要开发协议本身,还需要开发适合Wayland的混合器和窗口管理器,最后导致Wayland 1.0稳定版一再跳票。

而Ubuntu在独立开发Unity桌面环境的同时,也仿造了Wayland的架构开发了自己的Mir显示服务器,除了等不及Wayland稳定之外,更重要的是Ubuntu要为了它的下一步宏伟计划 ”Ubuntu Touch” ,按照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难产的重要原因。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1356.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

回首2023上半年:成长、思考、感恩

文章目录 每日一句正能量前言一、目标达成情况总结二、工作和学习成果总结三、下半年规划总结四、个人想法 后记附录 每日一句正能量 做一个向日葵族,面对阳光,不自艾自怜,每天活出最灿烂的自己。曾经拥有的,不要忘记。不能得到的…

day52

思维导图 比较指令结果的条件码 练习 汇编实现1-100的累加 .text .global _strat _start: mov r0,#0mov r1,#0 add_fun:add r0,r0,#1cmp r0,#100addls r1,r1,r0bls add_fun .end

Vue 项目路由、自定义指令、api方法自动引入资源(require.context使用)

前端项目(当前我以Vue项目为例)当我们把api挂载在main上后 // 将api挂载到vue的原型上 import api from /api Vue.prototype.$apiapi在src下会有一个api文件夹,结构如下: 通常情况下,api文件夹的index.js文件我们通常…

ChatGPT 最佳实践指南之:使用外部工具

Use external tools 使用外部工具 Compensate for the weaknesses of GPTs by feeding them the outputs of other tools. For example, a text retrieval system can tell GPTs about relevant documents. A code execution engine can help GPTs do math and run code. If a …

8.postgresql--Update join 和 Delete using

Update join Update join用于基于另一张表更新表数据,语法如下: UPDATE t1 SET t1.c1 new_value FROM t2 WHERE t1.c2 t2.c2;CREATE TABLE product_segment (id SERIAL PRIMARY KEY,segment VARCHAR NOT NULL,discount NUMERIC (4, 2) );INSERT INTO…

基于C/S架构工作原理序号工作步骤和理论的区别

基于C/S架构工作原理序号工作步骤和理论的区别 SSH 概念 对称加密linux 系统加密,就是加密和揭秘都是使用同一套密钥。 非对称加密有两个密钥:“私钥”和“公钥”。私钥加密后的密文,只能通过对应的公钥进行揭秘。而通过私钥推理出公钥的…

不满足于RPC,详解Dubbo的服务调用链路

系列文章目录 【收藏向】从用法到源码,一篇文章让你精通Dubbo的SPI机制 面试Dubbo ,却问我和Springcloud有什么区别? 超简单,手把手教你搭建Dubbo工程(内附源码) Dubbo最核心功能——服务暴露的配置、使用…

数据可视化——用python绘制简单的折线图

文章目录 前言JSON使用 pyecharts 模块绘制折线图下载 pyecharts 模块使用 pyecharts 模块绘制简单的折线图添加配置选项 前言 前面我们已经学习了python的基础语法和面向对象,那么接下来我们将学习python编程语言的过人之处——数据的可视化之折线图。 JSON 说到…

C/C++内存泄漏原因分析与应对方法

内存泄漏 一、内存泄漏的危害: 内存泄漏会导致当前应用程序消耗更多的内存,使得其他应用程序可用的内存更少了。 如果有个进程可用的内存不够,就会触发Linux操作系统的直接/后台内存回收(即将一些内存页的数据写到磁盘里&#…

springboot服务端接口公网远程调试,并实现HTTP服务监听

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…

Argo CD 入门扫盲使用

目录 一、什么是 argo cd 二、为什么使用 argo cd 三、argo cd 架构图 四、Argo CD 使用 1、安装 Argo CD 2、安装 Argo CD CLI 3、发布 Argo CD 服务 4、获取 Argo CD 密码 5、准备 Git 仓库 6、创建 Argo CD App 7、版本升级 8、版本回滚 一、什么是 argo cd A…

数据结构(王道)——线性表的存储结构之循环表

一、循环单链表 定义: 循环单链表代码实现 创建并初始化、判断循环单链表是否为空、判断结点p是否为循环单链表的表尾结点的代码操作。 二、循环双链表 定义: 循环双链表代码实现 创建并初始化、判断循环双链表是否为空、判断结点p是否为循环双链表的…

JVM重点整理

一、虚拟机架构图 二、类加载过程 类加载器的作用:负责把class文件加载到内存中 类加载过程: 加载: 通过类的全限定名获取此类的二进制字节流文件的编码结构---->运行时的内存结构内存中生成一个class对象 链接: 验证&#x…

智能电表远程抄表系统原理

智能电表远程抄表系统是现代智能电网建设的重要组成部分,它利用物联网技术实现电表数据的远程采集、传输和处理,提高了电力公司的抄表效率,同时也为用户提供了更加便捷、准确的用电服务。本文将从远程智能电表抄表系统的工作原理、特点、应用…

每天一道C语言编程:排队买票

题目描述 有M个小孩到公园玩,门票是1元。其中N个小孩带的钱为1元,K个小孩带的钱为2元。售票员没有零钱,问这些小孩共有多少种排队方法,使得售票员总能找得开零钱。注意:两个拿一元零钱的小孩,他们的位置互…

精益生产有哪些管理工具?

精益生产有哪些管理工具? 一、什么是精益生产 智能制造是落实我国制造强国战略的重要举措,加快推进智能制造,是加速我国工业化和信息化深度融合、推动制造业供给侧结构性改革的重要着力点,对重塑我国制造业竞争新优势具有重要意义…

优化类问题建模解析

模型建立阶段 线性规划模型:目标函数和约束条件均为线性 整数规划或0-1规划:决策变量取值被限制为整数或0、1 动态优化模型:以时间为划分阶段的动态过程优化问题 非线性规划模型:目标函数或约束条件中包括非线性函数 多目标规划模…

超高性能协议框架fury完爆protostuff(附性能测试对比)

简单介绍: 序列化框架是系统通信的基础组件,在大数据、AI 框架和云原生等分布式系统中广泛使用。当对象需要跨进程、跨语言、跨节点传输、持久化、状态读写、复制时,都需要进行序列化,其性能和易用性影响运行效率和开发效率。 Fury 是一个基于…

SSH服务(二十六)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、概述 二、特点 三、身份验证机制 四、验证过程 五、加密机制 六、基本参数 ​七、 身份验证机制 八、基本操作 1. ssh 2. scp 3. sftp 4. 密钥对验证 总结 前…

人工智能商业变现途径,并介绍详细公司案列

目录 1. 推荐系统:2. 智能广告和营销:3. 聊天机器人和虚拟助手:4. 自动化和机器人化:5. 数据分析和预测:6. 机器视觉和图像识别:7. 金融科技(FinTech):8. 医疗诊断和健康…