TL;DR
作为用户而言,一个系统需要保持开放性、易用性,不需要过多暴露实现细节。
作为研究者而言,一个系统需要贴近底层,暴露更多的细节,这种时候,开放性和易用性并不重要。
易用性
易用性是指系统应当直观、易于学习和使用,用户无需具备深入的背景知识即可快速上手。需要注意的是:
- 易用 ≠ 无需学习:易用性并不要求系统“完全不需要教程”或“零学习成本”,而是强调学习曲线平缓,用户能够通过合理的引导(如文档、示例、默认配置)快速掌握核心功能。
- 符合直觉:系统的交互逻辑应符合大多数用户的认知习惯,减少不必要的复杂操作。
- 易于培训:即使系统本身有一定复杂度,良好的设计也能让用户通过培训或实践快速适应,而非依赖长期的经验积累。
很多Linux用户没有意识到的一点是,他们自诩为电脑专家、命令行高手,但他们最常用的,依旧是别人写好的软件。比如Linux用户常用的工具(如Vim、FFmpeg、Git)同样是别人封装好的程序,与Windows用户使用图形化软件(如VS Code、Photoshop)并无本质区别。和Windows用户相比,真正的差异在于交互方式,一个是命令行操作,一个是图形界面操作罢了。
其实,Linux用户的优越感通常在于命令行操作,然而不得不否认的是,他们通常使用命令行来复刻图形界面的操作。举个例子,在Arch Linux的安装过程中,用户需要使用命令行进行磁盘分区、内核装载等操作,这些操作和Windows系统的安装过程,并没有特别大的差异。Linux的“难用”源于其暴露底层细节,而非任务本身更复杂、更专业。然而,实现同样的功能,Linux用户需要额外学习命令语法,但这不意味着他们比Windows用户更“专业”。
此外,许多Linux软件(如bspwm、i3wm)的默认配置极其简陋,用户必须手动编写配置文件才能正常使用。这种设计迫使普通用户投入大量时间学习配置,而非专注于实际需求。
我想说的是,从用户角度来看,Linux和Windows相比,其最大的不同之处在于交互方式的不同,前者的命令行操作和后者的图形界面操作相比,很显然是图形界面更加易用一些。
易用性的关键在于降低用户达成目标的阻力,而非完全消除学习过程。Linux社区常将“可配置性”等同于“高级”,却忽略了普通用户对“默认好用”的需求。
Linux系统的问题在于,它似乎只考虑程序员用得爽不爽,而不考虑其它用户的感受,比如音乐制作人、画手、金融从业者、教师、……。
Linux的易用性缺失,是我换回Windows最关键的原因。
当然,我并不是说Linux系统一无是处。上面是普通用户的视角,下面我们来从研究人员(计算机系统研究者)的视角看一下这两个系统。
如果一个学生想要学习操作系统是如何运作的,那我会毫不犹豫地推荐他使用Linux系统。Linux系统足够开放,你完全可以观察到系统软件是如何运作的。反观Windows,它是一个闭源的操作系统,只提供了一些API和文档。除此之外,由于Windows过于注重用户体验,代码中想必也有很多冗余的、和系统运作关系不大的代码,这并不利于我们学习。此外,从定制内核模块到开发新的系统工具,Linux为研究者提供了完整的工具链和社区支持,完全可以通过观察修改内核后的效果理解内核的作用。
开放性
开放性是指,系统应该能够接收来自不同源的软件,而非单一/少数的源。当然,开放性和安全性是“不可得兼”的关系,要根据个人需求详细选择使用的系统。
iOS系统默认只能通过自家的APP Store下载软件,而对于安卓系统来说,在没有厂商限制的情况下,是可以安装任意来源的安装包的。这就导致,安卓的软件种类更多、同功能的选择也够多。
同样,Linux也有着和iOS类似的问题——通常情况下,只能通过Linux源来安装软件,当然,这个问题随着AppImage、docker等工具的出现逐渐被缓解了。
用户的需求势必是多样的,一个系统的设计需要同时权衡开放性与安全性。
后记
其实,我换成安卓和Windows的另一大原因是——我并不那么关注自己的网上隐私了。现如今,大数据无孔不入,想要通过换成开源/国外的系统来保护隐私,实在是很幼稚的行为。当我抛弃隐私性/安全性之后,我更关注于开放性以及易用性,毕竟,人生苦短,不要把自己的时间浪费在无用的折腾上了。
此外,对于很多自诩NB的Linux用户,我要说,一个人的水平在于他的产出,而不在于他使用了什么工具。去写一些东西吧。