此前,Linus Torvalds 在 DebConf 14 会议上谈论了桌面版 Linux 存在的一些问题。Linus 的言论一向以激进和直白而闻名,这次分享也直指各大发行版 Linux 桌面的程序兼容性问题,以及这个问题会给开发者和普通用户带来多糟糕的体验。
在会议上,Linus Torvalds 指出 Linux 分裂的一个重要原因:他一向要求各版本的 Linux 尽量不要更改核心,不能破坏用户空间,但基本没人遵守 —— 每个发行版都在随意地修改 glibc 库,改变底层 API。这些 API 的差别导致应用开发者无法为 “Linux” 平台创建一个通用的包,一个应用的二进制文件通常只能适用于某个发行版,比如 Debian 10 或 ubuntu 20 。除此之外,API 的变动让应用程序的向后兼容性也变得更差了。
这些都是非常严重的兼容性问题,适配分裂的 Linux 发行版常常让开发者感到疲惫。Linus 坦言自己参与了一个聊天软件的新项目,他为 Windows 和 OSX 都创建了二进制文件包,唯独没有创建 Linux 的二进制文件。不仅是在这个新项目,Linus 的原话是:“我一般不为 Linux 桌面制作二进制文件,不同的 Linux 发行版有不同的规则,为不同版本的 Linux 做适配是真他*的痛苦。”
除了程序兼容性对开发者的困扰,Linus 还指出 Linux 桌面对非开发者的普通用户太不友好。普通用户需要的是开箱即用,他们买了一台设备,然后使用设备的操作系统进行娱乐/工作,对他们而言,最重要的是清晰的界面、稳定的应用程序。假设有一个不懂技术的用户在使用 ubuntu 20,然后有一个软件在更新到 ubuntu 21 版本后出现兼容性问题,那么这个用户要为这个不兼容应用程序付出大量的时间和精力去搜索新的程序安装包,查询兼容性问题,重新调整/调试/编译系统上的应用 ,而在 Windows 中,这个用户只需要点一下软件升级或者重新下载安装—— 设想一下你是这个用户,你会选择 Linux 还是Windows ?
无奈的是, Linus 7 年前指出的程序兼容性问题时至今日仍无法解决,新的 Linux 版本还在进一步分裂 Linux 的软件生态。当然,好的方面是我们有 Flatpak 这种跨 Linux 版本统一包管理程序,但即便是这类包管理程序也存在 Flatpak、Snap 和 Appimage 等好几种。
有趣的是,当时 Linus 还在会上指出:Valve 将拯救 linux 桌面版。从目前的情况来看 Linus 的眼光确实挺准。从 2013 年推出 Linux 架构的游戏操作系统 SteamOS 之后,Valve 在不断地改进普通游戏用户在 Linux 平台的体验,包括推出基于 Wine 的 Proton 软件,让普通用户能轻松地在 Linux 平台上玩 Windows 的游戏;还联合 Nvidia 把 DLSS (深度学习超级采样)引入 Linux。但 Valve 面向的用户群只是游戏玩家,何时 Linux 能形成良好的应用程序和普通用户生态?恐怕前提是要所有 Linux 发行版像 Windows 那种使用统一的 API/ABI ,不过这似乎有些渺茫。
来源:oschina 作者:作者: 罗奇奇