是什么干掉了 Linux 桌面?

作者是 Gnome 项目的发起人。写的是真实的故事。

挂载 /home 目录的硬盘坏掉了,所以我必须更换一块硬盘。由于机器在我桌子底下,我必须拔掉所有的线,把机器拿出来,更换硬盘,再把所有东西插上去。

这是个标准流程。插上电源,插上键盘,插上鼠标,但是当轮到音频线的时候,我跳过了。为什么需要音频线呢?万一又有什么东西坏了,我还得再拔一次。

前几天我跟连线杂志的编辑 Klint Finley 聊天。他写了一篇文章叫做 《OSX Killed Linux》。最开始的话题是关于我对 Gnome3,Unity 还有 Xfte 这几个 shell 之间的比较。

我个人挺满意 Gnome Shell,我觉得 Gnome 团队做了很伟大的工作,特别是 Gnome 的设计师可以调整 UI 并做一些扩展而不需要祈求别人去为他们写代码。

Linux 桌面错在哪里?

在我看来,Linux 桌面的问题根源是开发者文化。Linus,除了作为内核开发者以外,还在很多年以前设定了社区的基调。他忽略了设备驱动的兼容性。从内核的角度来讲,他们也许很有理由这么做,并且强制业界按照他们的规则来玩。但是做桌面的开发者并没有如此强大的能力。

社区的态度总是带有工程师的完美主义:我们不希望被废除的代码还在代码树中,我们不想一直保留糟糕的设计,我们需要纯粹的漂亮的设计……

我们做到了。

我们废除 API 因为有更好的实现方式。我们移除功能,因为这个实现已经不再有效,理由可以是安全漏洞,也可以是不符合我们新的风格。

我们替代了操作系统的核心组件,却没有很好的过渡方法。我们引入了兼容层,但却不能很好的工作,或者没有人维护。当我们面对“this does not work”这样的问题的时候,我们的回答是“you are doing it wrong”。

还有一个问题是没有任何两个 Linux 的发行版一致同意哪些核心组件是必须的。要么就是计划和步调不一致,要么就是重复实现相同的功能。

Linux 内核标准化的努力始终没有成功。假如你是领先的发行版,那么不兼容就是你的竞争力,是你获取市场份额的武器的,你会自废武功么?

总结:a. 事情改变的太快;b. 不同发行版的不兼容。

这两点破坏了整个生态系统,第三方的开发者不愿意为 Linux 桌面开发软件。你会尽最大的能力支持最流行的发行版,甚至最流行的三个发行版。到最后你发现六个月后你的软件不工作了。

支持 Linux 桌面对很多独立开发者来说门槛非常高。

到目前为止,在 Linux 世界里的我们依然坚信我们可以通过开源的方式创造一切,例如 spreadsheets,文字处理工具,设计工具等等。我们做的还不错。

Linux 是软件包管理的先锋实践者,包括大部分的高级软件更新系统。从我们的目标和文化来讲,我们做的不错。

但是我们忽略了大局。我们在这个过程中疏远了所有第三方的开发者。像 Apple AppStore 这样的生态系统在目前的 Linux 上是不可能实现的。

OSX 的崛起

当 OSX 发布的时候,它是一个非常复杂的 Unix 系统,古老的内核,糟糕的用户界面,极差的兼容性。慢慢的,Apple 解决了这些问题。

实用主义者渐渐的改变了他们的目标从“an world run by open source” 改为 “the open web”。还有一些人发现每六个月折腾一次声卡或者显卡驱动就为了在 Linux 上看个电影不值得。人们慢慢迁移到 OSX。

很多黑客也迁移到 OSX。它是一个漂亮的 Unix,有正常工作的声卡,PDF 阅读器,视频解码器等等。很多人愿意拿可配置性来换取稳定性。

作为我自己来讲,我爱上了 iPhone,所以日常使用 Mac 也成为必须。作为 Linux 桌面的一员,我为迁移到 OSX 感到了深深的罪恶感。

我们做错了什么

向后兼容性,以及不同发行版之间的兼容性。这不是一个有趣的问题,没有人愿意去做这样的工作。每个人都想创新,想要创造 Linux 的下一个重大功能。

所以 Linux 就成了理想主义者的乐园,用来创造最好的系统,而不用担心枯燥的细节例如向后兼容性。

与此同时,你仍然可以在 Windows 8 上运行2001年发布的 Photoshop。你也可以在 Mountain Lion 上运行老的 OSX 软件。

在今年二月份的时候,我参加了 FOSDEM ,我的两个好朋友非常兴奋的向我介绍他们的计划,一个新的系统,将要强制很多应用必须修改才能运行。他们有一个非常美好的愿景,解决一个我不曾意识到的问题,也许没有任何用户在乎的问题。

从那天开始,我不在为爱上 OSX 而感到罪恶。

2012年9月2日更新

很显然,这篇文章的标题引来了很多误解,所以我决定说明一下。

我的这个标题的意思是:Linux 在消费者桌面操作系统比赛中失败了。它仍然会成为很好的工程师平台(这也是为什么我会更换家里电脑的硬盘)。是的,我知道很多朋友正在使用 Linux 作为桌面,并且用的很好。

但是,我们失去了成为主流消费者系统的机会。也就是说没有人会建议非技术人员使用安装 Linux 的电脑(除非你有特殊的目的)。

我们曾经是有机会的。最好的机会是 Vista 失败的那时候。但是当时我们在闹内讧。有不少人当时写了文章讨论这个问题。

目前市面上的 Linux 桌面版本都是有史以来最好的版本。Ubuntu 和 Unity,Fedora 和 GnomeShell,REHL 和 Gnome 2,Debian 和 Xface 还有 KDE。我们仍然有四种不同的桌面 API,半打流行却又不兼容的发行版,每个发行版都有各自的辅助系统,不同的打包系统和依赖系统。

为这些快速变化的平台开发和维护应用是 非常大的挑战。

Linux 在其他领域很成功:服务器和移动设备。但是在桌面上我们失败了。 Linux Hater 博客发表了一系列文章讲述这个问题 Greatest Hates。

能解决这个问题的唯一的方法就是选择一个发行版,一套组件作为基础,废除所有其他所有系统,所有人都为这一个 Linux 做贡献。不论是 Canonical 的 Ubuntu, Red Hat 的 Fedora 还是 Debian,或者一个新的组合,我们都不会达成一致意见,直到世界末日。