Linux 理念的影响

尚无读者喜欢这篇文章。
Penguins gathered together in the Artic

Opensource.com

所有操作系统都有其理念。而且,操作系统的理念至关重要。Linux 的理念是什么?它如何影响社区?它如何改变了软件开发的时代?

无论我们是否意识到,我们大多数人都拥有某种人生哲学。它可能像“善待他人”一样简单,也可能是一种非常复杂的人生哲学。

许多公司也有某种理念。它们可能是不成文的,也可能是记录在案的。当我在 IBM 工作时(从 1974 年到 1995 年),IBM 的理念被充分记录并深深植根于企业文化中。IBM 的理念涵盖了其商业行为以及员工、客户和供应商的待遇。IBM 的首要指令是公平、尊重和尊严地对待每个人。

在我开始深入研究 Linux 之前,我从未意识到它也有理念。我的意思是,理念实际上能为操作系统做什么?经过一番研究,我发现所有操作系统都有理念。我也了解到操作系统的理念至关重要。

例如,Windows 的理念与数字设备公司 (DEC) 的 VMS 操作系统的理念非常相似。它相当于“让用户远离一切可能让他们陷入麻烦的事情”。当然,这种相似性的原因是 Windows NT 的主要开发者也是 VMS 的开发者。这两种操作系统的理念都基于一个潜在的信念,即用户害怕计算机,需要被保护起来,免受其复杂性的影响。

MAC OS 并没有太大不同,尽管图形用户界面 (GUI) 桌面采用了面向对象的方法,在许多人看来,这种方法提供了更一致、集成和更流畅的用户体验。MAC 和 Windows 都提供了命令行界面 (CLI),允许用户和操作系统之间进行底层交互。然而,Windows CLI 非常有限,命令很少,至少与 Linux 和 Unix 相比是这样。

MAC CLI 是一个 BASH shell,它提供了强大的功能,就像在 Linux 上一样。然而,它很难找到。shell 隐藏在大量的菜单选项中,只有当你知道它在那里并积极寻找它时才能找到。

激进的概念

当 Unix 在 20 世纪 60 年代末和 70 年代初被开发出来时,开发者们决心构建一个与之前的操作系统截然不同的操作系统。Unix 的理念与其他操作系统明显不同。而 Linux 的理念自然而然地直接来源于Unix 理念

我发现 Mike Gancarz 在《Linux 和 Unix 哲学》一书的 导言 部分中的以下引述非常具有启发性。

操作系统本质上体现了其创建者的理念... Unix 操作系统的创建者从一个激进的概念开始:他们假设其操作系统的用户从一开始就具备计算机素养。整个 Unix 哲学都围绕着用户知道自己在做什么的理念展开。

哇!他们真的这么说了!这听起来非常精英主义和排外。但实际上并非如此。事实恰恰相反。

最喜欢的关于 Unix 的引述之一也适用于 Linux,它经常被归因于一个名叫 Doug Gwyn 的人,但无法可靠地获取关于他的信息。无论 Doug 是否存在,这仍然是一句很棒的引述

Unix 的设计目的不是阻止用户做蠢事,因为那样也会阻止他们做聪明事。

这就是关于 Linux 的真相。它从不假设用户是无能的。它始终假设你知道自己在做什么,并允许你做你告诉它的任何事情。任何事情。无论它是否是无意中造成的坏事。这是一个用户手中巨大的权力。

Linux 平等地对待每个人,并允许每个人获得最大的权力。这是平等的。其他操作系统是精英主义和排外的,因为它们将权力保留或隐藏在一个僵化的图形用户界面背后,该界面只允许我们做开发者认为应该允许我们做的事情。

启蒙

多年来,许多人试图在我们编纂 Linux 哲学的各个方面时启发我们其他人。

Mike Gancarz 首先撰写了 Unix 哲学,然后又跟进了 Linux 和 Unix 哲学。这些书列出了 9 条主要原则和 10 条次要原则。

Eric Raymond 在他的著作《Unix 编程艺术》中列出了 17 条 Unix 规则。

俄勒冈州立大学也有其自己的 Linux 哲学,我认为它很好地描绘了工程师对 Linux 的看法。

与其在此处列出所有这些原则和规则,以及它们的所有含义,不如我在本文的“参考文献”部分列出了链接或书籍,可以从中获得这些信息。我将其留给亲爱的读者您,去查找它们并了解它们的含义。相信我,这将是一次非常有启发意义的练习。

终端案例

Linux 哲学通过轻松打开终端模拟器以访问 CLI 及其随之而来的强大功能而得到体现。首先,可以使用 Ctrl-Alt-F [1-7] 键访问多个虚拟终端。即使 Linux GUI 桌面也对所有使用它们的人低语:“使用原力,卢克。” Linux 有几个优秀的 GUI 桌面环境可供选择,以便每个用户都可以选择最喜欢的一个。然而,CLI 的强大功能只需单击一下即可获得,终端模拟器和 shell 都有多种选择。

我最喜欢的 GUI 桌面终端模拟器是 Konsole。Konsole 允许在 GUI 窗口中使用选项卡在终端会话之间切换,从而实现多个终端会话。当然,你可以在所有会话中使用你最喜欢的 shell,也可以根据你的需要,在每个会话中使用不同的 shell。

为了获得更大的灵活性,还有 screen 程序,它可以在单个终端会话中提供多个 shell 会话。当远程登录时,这尤其有用,因为如果你的连接失败,screen 会话将继续,并且所有在 screen 会话中启动的各种 shell 中运行的程序也将继续运行。

Linux CLI 温柔地诱惑;它以其强大的力量挑逗。它的灵活性吸引了我。它改变了我——当然它改变了我使用计算机的方式。我仍然使用 GUI 桌面,但主要是为了为我提供多个 Konsole 会话的灵活性,并在其中运行 screen,以及运行 LibreOffice、Firefox 和 Thunderbird 等程序。

完全控制

Linux 不会手把手地教你。它假设你在键入命令时知道自己在做什么,然后它会继续执行该命令,而不会询问你是否真的想这样做。它给你完全的控制权。

想象一下,如果尝试使用钉枪,它会问你是否真的想射击那个钉子,并且在你大声说出“是”之前不允许你扣动扳机,那将会造成怎样的混乱和挫败感。Linux 允许你随意使用钉枪。其他操作系统让你知道你可以使用钉子,但没有告诉你用什么工具插入钉子,更不用说让你自己扣动扳机了。

是的,权力越大,危险越大。明智地使用这种权力也可以用来完成许多伟大的事情。

Linux 的首要指令

我已经开始相信,Linux 哲学的总结非常简单。

尊重所有用户。

这相当于允许每个用户以自己的方式做事,并提供广泛的强大工具选择。这意味着在设计和构建软件系统时,将灵活性、简洁性和自由度作为最重要的考虑因素。它促成了艺术品般的软件的创造,对于 Unix 而言,它在近 45 年后仍然美丽而强大,对于 Linux 而言,它在 20 多年后仍然如此。

这一切如何转化为现实世界?在未来的文章中,我将告诉你更多我的观点,我将在其中讨论一些个人原则及其在日常系统管理任务和 Linux 生活的其他方面的应用。

参考文献

  1. Eric Raymond:Unix 编程艺术,http://www.catb.org/~esr/writings/taoup/html/index.html
  2. Mike Gancarz:Linux 和 Unix 哲学;Digital Press,2003 年,ISBN 1-55558-273-7
  3. 维基百科:http://en.wikipedia.org/wiki/Unix_philosophy
  4. 俄勒冈州立大学:http://web.engr.oregonstate.edu/~traylor/ece474/lecture_verilog/beamer/linux_philosophy.pdf
  5. 最佳 Unix 引述:http://www.linfo.org/q_unix.html

本文的法语译文可以在此处查看,由 Fabrice Dumont 友情提供。

标签
David Both
David Both 是一位开源软件和 GNU/Linux 的倡导者、培训师、作家和演说家。自 1996 年以来,他一直从事 Linux 和开源软件方面的工作,自 1969 年以来一直从事计算机方面的工作。他是“系统管理员 Linux 哲学”的坚定支持者和传播者。

21 条评论

嘿!我会在适当的时候愉快地诽谤 MS 产品,但我不会称 Microsoft 命令提示符为“非常有限,命令很少”。命令提示符的问题主要集中在这样一个事实上,即 Microsoft 打算让管理员而不是普通民众使用它。但是 30 年的开发使其变得非常强大和健壮。添加 GNUwin32,你就可以很好地选择基本的 Unix 命令来增强 Microsoft 环境。添加 Power Shell 和 WMIC,你可以做一些非常令人印象深刻的事情。

谢谢先生,做得好。遗憾的是,有些人不了解简洁和规模经济
的意义。

在某些情况下,给予用户控制权是很棒的,但总的来说,文明建立在劳动分工和专业化的基础上。我年轻时经常玩 Linux,但现在我有了家庭,我不想了解 init 系统,就像我不想自己换汽车机油或自己做衣服一样。我们甚至在网上订购杂货,并雇人修剪草坪。

不限制用户的想法与你需要“了解 init 系统”有何关联?你可以作为普通用户运行 Linux,而无需担心系统的任何修补和构建。我已经这样做了多年。当人们说“我曾经使用 Linux,但现在我没有时间了”之类的话时,很明显你从未真正了解 Linux,因为如果你了解了,你肯定除了 Linux 之外什么都没有时间做。

回复 作者:Mirza(未验证)

胡说八道!我无法告诉你我有多少次不得不重启某些服务、编辑 /etc 中的 fstab 或其他文件,或者其他什么。灵活性和强大功能是以必须学习内部流程为代价的,以便在大多数人希望用计算机完成其他事情时能够修改它们。大多数人使用的默认设置应该是自动化的并且是不可见的。

回复 作者:Sevis Vanto(未验证)

这不是胡说八道。这取决于你选择运行的基于 Linux 的系统发行版。例如,运行 Ubuntu 会为你提供大多数人使用的所有默认设置,Mint、Mageia 和许多其他发行版也是如此。运行具有更多控制权的系统会执行你所描述的编辑 /etc、/var 和其他地方的文件,但总的来说,这远非必然,而且并非非此即彼。Arch Linux、Gentoo 或 Slackware 为你提供了相当多的控制权,并且使用命令行可以提供帮助;Debian 也是如此,但所需细节较少;然后你有 Fedora、Suse 和许多其他介于两者之间的系统,它们根据你想要或需要的内容为你提供不同程度的控制权。拥有控制权甚至不必很困难,例如,我多次使用 OpenBSD,尽管编辑了 /etc 中的一些文件,但它是我在最少配置的情况下让事情正常运行的系统之一。有可能鱼与熊掌兼得。

回复 作者:Mirza(未验证)

我确实使用 Ubuntu,以前也使用过 Mint 和 Debian。多年前我使用过 Suse 和 Red Hat。我所谈论的问题甚至 Linus 也经历过。他曾经讲过一个故事,他的儿子无法将笔记本电脑连接到学校打印机,因为他没有 root 密码。我会打开一些旧的备份驱动器,并且无法访问文件,直到我运行 sudo chown。即使在 Ubuntu 中,诸如此类的事情也会不断出现。

回复 作者:Dennis Decker Jensen(未验证)

你写了一整篇关于 Linux 哲学的文章,怎么可能没有提到 GNU 或 GPL?你遗漏了实现最终用户自由的最大一块拼图。

GPL 为希望修改自己软件的用户提供了权力,但它没有说明操作系统是否对用户隐藏。现在有很多关于 GPL 影响的文章。

回复 作者:Kevin Bush(未验证)

操作系统和 Linux 内核不是一回事……操作系统是位于内核之上的工具。这些工具具有基于 GNU 哲学的 GPL 许可证。

回复 作者:Kevin Bush(未验证)

如果你想深入了解细节。Unix 与 C 语言捆绑在一起,而不是更抽象、更高级的语言(如 Lisp),并且 Unix/C 允许程序“抓取”内存,而不是使用 OS 内存分配算法。尚未证明这种方法更优越,因为它会导致许多内存泄漏/安全问题,并且 C 程序员的大量时间都花在避免这些问题上。它也使得两个程序很难相互通信和共享状态。如果 Unix 没有赢得操作系统战争,那么谁知道现在的世界会是什么样子,但可能会有更少的黑客窃取我们的身份并在计算机世界中横行霸道。

David,先生,感谢你写了一篇很棒的文章。作为 IBMer(1977 年 - 2002 年),我有一些评论。
IBM 在帝国时代之前的理念是基于三大基本信念,
1) 追求卓越。真正的 IBMer 所做的每件事都应在态度、计划和执行方面达到最高水平。
2) 成为世界上最好的服务组织。IBM 最初的世界级基准围绕卓越和服务展开。
3) 尊重个人。这是对 IBMer 同事、客户、承包商、供应商、政府附属机构和客户以及竞争对手的相互尊重。当 IBM 失去对个人的尊重时,整个羊毛衫就散架了。

话虽如此,你错过了 unix 哲学(尤其是 gnu/linux 哲学,又名 RMS)中最重要的部分---自由。Gnu/Linux 尊重用户作为个体,这主要意味着 gnu/linux 尊重用户的四项自由。

MS 的一些错误是出于保护目的而混淆,但大多数是为了锁定作为设备(主要是为了为其供应商和附属机构提供营销创新)。Apple 应对这种同样的胡说八道和不尊重负责。即使今晚,我的双启动 mac mini(雪豹,Gnu/Linux Mint)也试图将我的系统“升级”到完全不兼容的“新”版本的“他们的”代码,而丝毫没有意识到我不想要它!!

当然,当 IBM 失去对个人的尊重并贬低其员工时,它就崩溃了。T.J. Watson 曾经说过,“拿走我的资源、我的建筑物、我的机器等等——但是,留下我的人,我就会重建它!”

IBM 将作为一家过气的公司载入史册。但是她的人民,哦,我的天哪,将带着 gnu/linux 和自由迈向二十一世纪。我们不会回头看,我们不会后退,我们不会退缩。我们是自由的,我们正在前进!

干杯,

Doug Gwyn 确实曾经存在,并且是 20 年前 comp.lang.c Usenet 论坛上最权威的贡献者之一。我相信他曾经在美国军方的弹道研究实验室工作(我记得他有一个 brl.mil 地址)。他也感谢 K&R 前言。所以是一个真实的人和一个传奇的 C 程序员。

很高兴知道这一点。由于我的职业生涯中不需要大量的 C 编程,所以我没有 K&R 的副本,但你对它的引用对我来说已经足够了。我真的很感谢获得这些信息。

谢谢!

回复 作者:Tim Greening-Jackson(未验证)

GUI 可能会来来去去,但 CLI 会一直存在。

http://ldo17.tumblr.com/post/104365910477/cli-versus-gui-deathmatch

Linux 这个词似乎被用作一个整体。
操作系统是“操作系统”的编译器和其他工具,linux 是内核。
Linux 没有 GUI,操作系统 GUI 与内核是分开的,尽管内核可以提供允许 GUI 运行的模块。
GNU - 自由软件基金会,提供基于“GNU 哲学”构建的许可证 (GPL),这些 GPL 许可证用于构成“操作系统”的许多程序中。

似乎有些混淆:Linux 不是操作系统,它是一个为“操作系统”提供动力的内核。..菜鸟。

附言:忘了添加。

1. Linux 内核开发人员有他们遵循的哲学。
2. 为用户空间(操作系统)创建工具和程序的软件开发人员通常遵循 GNU 自由软件基金会的哲学。
4. 编译“GNU/Linux 操作系统”的发行版开发人员也有他们遵循的哲学(并非都相同)。

有趣的文章,但只有当一个人对 Unix 和 Linux 的起源知之甚少时才有趣。Linux 源自 Minix,而不是 Unix,而 Unix 源自 Multics。

多年来,Linux 变得越来越像 Unix,而 Unix 几乎消失了。Multics 旨在成为通用操作系统。它未能实现该目标,但其设计原则并没有导致 Ken Thompson 和 Dennis Ritchie 开发 Unix。

奇怪的是,文章中没有提到 Thompson、Ritchie 或 Tanenbaum。

虽然 WNT 确实是从 VMS 移植过来的(显然——看看字母表就知道了!),但我不同意 VMS 的强大功能对用户是隐藏的。你当然需要阅读手册;那是在线教程出现之前的日子。但我不同意 DEC 将用户视为需要保护自己免受伤害的孩子。还记得 RSX-11 吗?DEC 是 20 世纪 80 年代的 Linux。现在已经消失了,唉。

至于你描述的 Linux 哲学,并非所有发行版都坚持这一点。Gnome 桌面是出了名的具有保护性,而最近版本的 Ubuntu 似乎正在尝试模仿旧的 Mac 桌面;新手可能很难发现命令行的存在。这大概是因为他们想引诱走一些想要像孩子一样被对待的 Windoze/Mac 用户。诚然,越来越多的民众不希望了解他们任何基本工具的工作原理;但我们在开源社区中不需要他们。

我不同意本文中的许多观点。Windows 很复杂,MacOS 也很复杂。将高级功能隐藏在难以使用的 cli 或非 cli 界面下,并不会使经验不足的用户更容易使用。而是使高级用户难以使用。

在我看来,windows 和 mac 的理念是:强迫用户按照我们希望的方式做我们希望他们做的事情。让用户难以执行可能损害我们商业利益的事情。

linux 的理念:力量和自由

长期以来,Linux 不再比 windows/mac 更难使用。只是有些供应商为 windows 用户提供的支持较少或没有支持。因此,某些网站无法正常工作,或者无法使用专用软件。

© . All rights reserved.