燃烧了过去一周的空闲时间,我终于定制好了自己的 Linux Desktop 环境。
虽然 Linux 经常被拿来跟 Windows 和 Mac OS X 相比较,但是 Linux 本身只是一个操作系统内核,为了满足用户能作为日常桌面系统使用的需求,还需要添加很多额外的功能。例如,作为内核的 Linux 只提供了识别网卡与其通信的能力,具体如何建立和维护网络链接,如何在开机时自动连接,如何设置网络代理,不同于 Windows 和 Mac OS X 有成熟友好的图形管理界面,Linux 的用户是需要自己搭配定制的。同样,硬盘分区、格式化文件系统、设置引导程序、安装显卡驱动和配置输入法也是如此,需要 Linux 用户自行定制。
这种定制,还不是简单的只有一种办法实现,所有人都有一致的体验。由于 UNIX 哲学里的机制与策略分离,以及 Linux 生态中大量软件是自由软件的缘故,用户经常会发现“解决问题的办法不止一种”。甚至极端一些,“解决问题的框架”也不止一种。以输入法为例,Linux 生态的输入法框架至少包括 IBus 和 Fcitx5 两种。只有框架显然是不足以完整使用输入功能的,因此还需要有对应的输入法实现,输入法在不同的图形化界面(框架)下的集成,以及补充输入法能力的词库和其他支持。
这样的环境催生了 Linux 生态的两大特点。
其一是 Linux 生态中的软件往往是开放源码的。这不仅仅是 GNU/Linux 的出生带来的号召力,也是面对种类繁多的生态的最佳选择。例如,在其他桌面系统和手机系统上都广为人喜爱的搜狗输入法,在 Linux 生态当中只支持有信创动力加持的 Ubuntu 系列系统,且仅提供 deb 安装包和仅兼容 Fcitx 输入法框架。在 Ubuntu 上游试图把默认输入法框架从 Fcitx 改成 Fcitx5 的时候,搜狗一家公司没有人力支持,也未开源代码允许社群支持,最终一再拖延上游的更新计划。反观开放源码的 Rime 输入法,则在第一时间得到社群爱好者的支持,社群共建完成了对新框架的集成。
其二是 Linux 存在数量巨大的发行版提供商。前面提到,要想基于 Linux 内核搭建一个完整的桌面环境或服务器,需要做一系列的定制化。虽然这种定制化给予了用户极大的自由,以至于近乎每个问题都不只有一种解决方案,但是很多时候,用户只是想要一个能够满足桌面环境下个人需求,或服务器环境下生产需求的,类似 Windows 或 Mac OS X 的集成系统。Linux 发行版主要的工作,就是打包一系列应用软件和工具链,提供给用户一个开箱即用的“操作系统”。
在所有 Linux 发行版当中,占据主要份额的是 Arch Linux 系和 Ubuntu 系。
Ubuntu 发行版由 Canonical 公司提供商业支持,提供了用户友好的图形化安装界面,并且针对尝鲜用户、个人桌面用户和企业服务器用户设计了专门的开箱即用路线。由于 Ubuntu 已经定制了相当部分的应用框架和应用软件,Ubuntu 系的其他发行版更像是不同品牌商在预装 Windows 操作系统之后提供一些自己的捆绑软件。
相较之下,完全由社群维护的 Arch Linux 发行版奉行极简之道。它只提供最基础的安装程序和 AUR 中央软件库,并辅以完善的 Wiki 文档帮助用户自行定制 Linux 系统。Arch Linux 系的发行版除了都使用 AUR 软件库以外(甚至 Manjoro Linux 都选择了自建软件库),从图形界面到每个功能软件的选择,都可以是大相径庭的。
从上面的例子当中,我们可以看到,开源软件的用户群体明显的分成两类:一类是使用 Arch Linux 发行版的,追求自由使用和修改软件,也有意愿和能力做定制化的,我们可以称之为黑客(Hackers);另一类是使用 Ubuntu 发行版的,期望提供商直接交付一揽子解决方案的,或者在商用层面需要乙方兜底的,我们可以称之为顾客(Customers)。
开源软件的商业化,主要瞄准的是顾客的需求,通过满足顾客的需求收费。黑客群体往往只在生态繁荣上做贡献,并不直接参与商业化的进程。