显然,近那篇《现代Linux是不是太复杂?》文章触动许多人的神经。
  那篇文章的评论里有很多独到的见解,我会在这篇文章中展现给大家。事实上,那些评论也让我更清楚地认识这个问题。我会尽量在这篇文章中提炼出更多的想法供大家借鉴。
  简单性和可预测性的价值
  无论是操作系统还是其他软件,好的软件都是可预测的。阅读文献或查看接口,你可以作出一个合乎逻辑的预测,执行某个操作X,输出结果为Y。grep和cat指令是好的例子。
  软件中的规则越复杂,作出预测越困难。这将引入bug并造成潜在的安全漏洞。更糟糕的是这将导致人们无法自己解决问题——而自主解决问题的自由应当是自由软件应当提供的重要的功能。软件越复杂,能自己解决问题的人越少。
  我想说明一下:听许多人谈论“易于使用”。为了“更易于使用”,Gnome去掉了打印对话框中的选项。(这是我不使用Gnome的原因。实际上 Gnome 的做法让 print 功能更难用了,因为我现在不得不通过一些晦涩的方法来把这些该死的内容打印到屏幕上。)很多人把易于使用和易于学习混为一谈,但实际上,两者我都不会讨论。
  我要讨论的是易于分析。Linux命令行可能没有箭头点击图标,但——至少有一次——一旦你理解ls –l以及用户组,用户以及权限位如何交互,你很容易知道谁访问了系统上的哪些内容。现在的情况是由于桌面环境,这个问题的答案变得非常模糊。(显然一些发行版整合了network-manager工具,这样系统中所有用户都能共享他们输入的wifi密码。很惊喜,是不是?)
  既然创建了帮助文档来告诉我们如何使用,我不介意查看帮助文档学习相关内容。
  在这种情况下使用dbus、cgmanager、polkit等工具,下面是我的感受。对我而言,这是问题的症结所在:
  感觉像身处迷宫,所有的通道看起来都是一样,而我们的手电在2013年没电了。在某种程度上,帮助文档的存在是为了cgmanager和polkit这类工具,它们描述了洞穴墙壁的结构,却没有给我们洞穴的地图。因此,我们不得不将这些结构一点点拼凑起来,但陷阱始终存在,所以进展很慢。
  并且这些工具还是一个相当大的“坑”——想要把它们的结构摸清楚绝非易事。
  其他用户的观点
  博客上关于这点的评论很多。显然这不是Debian特有的问题。例如:
  Christopher对此Fedra评论道,“过去凭借平台简单、架构合理的优点可直接分离、诊断并解决的问题逐渐演化烦人、琐碎的问题,这比Windows的注册表还要糟糕。”Alessandro Perucchi追加到,他使用了Linux几十年,近他的wifi不工作了,暂停功能也不起作用了,等等。在Fedra下,他很惊讶自己居然不能解决这些问题。
  Nate bargman的评论非常深刻,“我感觉自己逐渐沦为软件的奴隶,而不是掌控者。这不是一件好事。”
  Singh的观点是这些东西处在一个不断变化的状态,即使是现在世界上有极少数人能理解这些内容,而这些内容也会在6个月内过时。(嗨,有人懂这玩意儿吗?)
  这些观点都很重要。人们能够自己维护软件并且使用软件是自由软件初产生的关键原因之一。这是我们社区的基本价值。几十年来,我们一直为生存、为认可而奋斗。当我开始使用Linux时,在所有平台上实现可用的网页浏览器既困难又具有挑战。(Netscape Navigator当时是闭源。)现在我们实现了,从智能手机到汽车所有设备上都运行着GPL授权和BSD许可的软件。
  但是我们却想要从胜利中寻求失败,因为这像我们设法扫除阻止人们真正掌握软件的障碍,却抬高了技术门槛,使得进入自由软件领域的比实际需要更加困难。
  我们不再需要制作X Modelines或者使用对应的驱动编译内核,这是进步。硬件大多能够被自动检测,USB串行传输器在Linux上工作比在Windows上更稳定,这是进步。甚至打印机和扫描仪也可以非常完美地工作,这也是进步。
  但对于所有这些,我们通过用户空间来处理。有些人会遇到社区中的老手也不能轻易解决的未知错误,因为老手也一样困惑。有些未曾出现的bug会突然出现,但现在又不明显。像这种情况的出现只会让用户对 Linux 敬而远之,而不是让他们产生兴趣。
  解决方案
  这是一个尴尬的困境,不是吗?那你该如何走出洞穴而不陷入险境?
  显然,好的办法是摆脱陷阱和险境。致力于此的人必须明白简洁是我们的特性——而且是非常重要的特性。不幸的是,我认为我们已经背道而驰。
  类似Enrico Zini seat-inspect 观点的软件诊断工具会有所帮助。如果有“ls for polkit”类似的工具,可以降低整体复杂度从而更易于管理,那太棒了。
  其次是详尽的指南——良好的帮助文档,详细的日志,有效的错误消息。如果软件给出详细的权限错误,人们知道去哪里查看。如果软件的帮助文档不仅解释了洞穴壁的结构,还给出了这个空间是如何与附近所有其他空间关联起来的话,这将是非常有用的。
  现在我不确定我们的问题是因为文档贫乏,还是文档太糟糕,好的文档不可能这样,因为底层设计非常复杂不能被记录在小于一本书的文档中(在这种情况下,我们的船没有出发而是在试水)。
  反论点:发展
  评论中经常提到的一个主题是这是发展的必经过程。某种程度上来说,我同意这种观点。我明白udev为何很重要。我明白我们为何希望DE软件交互友善。但我的观点是:这在wheezy中应经很好了。GNOME、XFCE和KDE软件都能挂载/卸载驱动器。我真的不确定这些改善解决了什么问题。
  是的,云公司对安全有要求。我在一家云公司任职。我可以向你保证,让安全更难以稽查并没有给我带来什么好处。
  关于systemd
  让我惊讶的是,在讨论中systemd出现的频率很高,尽管事实上我没有运行systemd-sysv程序。很多人认为新的桌面环境系统似乎是“systemd系统”。我不确定这是否合理,systemd不是我的,但是正如我在之前的博文中提及,“jessie 现在还能用”。
  结语
  我个人的机器仍然运行Debian,而且我也不打算更换系统。它确实还不错。100美元以下,我使用树莓派和一些脚本和软件搭建了一个家庭音乐同步播放系统。同等条件下,采用Sonos的方案将花费数千美元。我热爱这个社区以及它的价值。即使jessie发布时整合了polkit和其他工具,我仍然会使用它,因为它依旧是免费提供的不错的发行版。