Linux与Windows纠缠多年的几个矛盾
如果你访问了这个页面,那么十有八九你是一个 Linux 的新用户,正遇到许多关于如何由 Windows 转向 Linux 的困惑,这篇文章的目的正是向新手解释这个问题。由于这个大问题衍生出许多枝节,下面我将对此逐一进行讨论。矛盾一:Linux 和 Windows 完全不一样
你一定会惊讶于有这么多人对 Linux 发出相似的抱怨,他们奔向Linux,希望找到一个免费的、开源版的 Windows。通常,这正是那些狂热的 Linux 使用者所告诉他们的那种状况。然而这却是个荒谬的期待。
人们尝试 Linux 的原因不尽相同,但所有的原因都可以归结为一点:他们希望 Linux 会比 Windows更优秀。正是出于这一点,Linux的低成本、更广阔的选择范围、高性能和高安全性——当然,还有许多其它的方面——被作为与 Windows比较时的衡量标准。往往每一个开始尝试 Linux 的Windows 用户都是如此。这正是问题之所在。
太多的人都忽略了这样一个事实:从逻辑上讲,在保持某样东西与参考物体完全相同的前提下,将其做得更好是绝无可能的。正如一个完美的复制品将与它的母版毫无差异,但是它不可能会超越原版。所以当你怀抱着 Linux 的使用方式该和使用 Windows 差不多的观念而尝试Linux,并希望它能够做得更好,你便会不可避免地发现他们之间的不同,并且把这些不同之处看作是 Linux 的缺陷。
举一个简单的例子,想一想驱动程序的升级吧:通常的情况下,倘若要在 Windows 下升级某个硬件驱动,需要去硬件制造商的网站上找到并下载最新的驱动;然而在 Linux 下只须简单地升级内核即可。这意味着在 Linux 下,仅仅一次下载和升级便能提供所有适用的最新驱动,然而在 Windows 下却不得不浏览多个网站并分别下载升级程序。这是一个不同的过程。并且显然,这绝不会是一种糟糕的体验。然而却有很多人对此抱怨不停,只因为这不是他们习惯的方式。
或者从另一个更经常接触到的例子来看,想一想 Firefox ——开源软件最伟大的成功案例之一。这是一个席卷全球的浏览器。它是通过模仿 IE —— 那个“最流行的浏览器”而取得成功的吗?
不,它的成功是因为它比 IE更好。它之所以更好正是因为它的不同。它有标签页浏览方式,实时动态的书签,内建搜索条,PNG(图像格式)支持,adblock扩展(屏蔽广告插件),以及其它美妙的东西。“查找”工具条显示在底部的工具栏中,它能够查找你键入的内容并且以红色标识表示没有相匹配的内容。而 IE却没有标签页浏览,没有RSS订阅功能,搜索条只能通过第三方扩展实现,它的查找对话框还得通过点击“确认”按钮开始查找,而且还要再点击一次“确认”才能清除“未发现”的错误提示。这无疑地证明了一个开源的应用程序通过“不同”而做到了“更好”,依靠“更好”进而取得了成功。如果 Firefox只是一个 IE 的克隆,它必然早已销声匿迹于 IE 的阴影之下了。如果 Linux 是 Windows 的一个克隆,同样的事情也会发生在Linux 身上。
因此,解决这个问题的关键在于:记住在 Linux 中那些对于你的使用习惯来说熟悉的部分,并不是说明 Linux 是新版的和改进版的 Windows。积极地面对那些不同之处,因为只有不同,Linux 才有机会真正闪耀出其光彩。
矛盾二 : Linux 和Windows 太不一样了
当人们期待着 Linux 有所特色时,又一个问题接踵而至。Linux 和Windows 实在是太不一样了,一些差异简直难以让人适应。也许最典型的例子就是可供 Linux 用户选择的东西实在是太多了。对于一个刚上手的Windows 用户,他已拥有一个经典的或 Windows XP 风格的桌面主题、写字板程序、IE 浏览器,OutlookExpress;然而对于一个初学 Linux 的家伙,他面前有上百种发行版供其挑选,然后,是 Gnome、KDE 或者Fluxbox(桌面环境),vi、emacs 或者 kate(文本编辑器),Konqueror、Opera、Firefox 或者Mozilla(网页浏览器),或者其他一系列可供选择的工具。
Windows 用户不曾为了安装和使用(操作系统)而面对过如此丰富的选择。“有必要提供那么多种选择吗?”这样的抱怨帖子很常见。
Linux 真的和 Windows 有那么大的区别吗?不管怎么说,它们都是操作系统。它们都做同样的工作:操作你的计算机,让你有个运行应用程序的东西,自然它们多少都有些共通的地方吧?
让我们从这个角度看问题:出门看看路上行驶的各种不同车辆。所有的车辆不管是什么样的设计,都有同样的目的:从路上把你由A处运到B处。注意它们有不同的设计。
但是你会想,汽车之间的差异非常小:它们都有方向盘、脚踏板、变速杆、手刹车、车窗、车门、油箱……如果你能够开这部车,你就能开任何一部车。
确实如此。但你有没看见过有些人不开汽车,取而代之他们骑摩托车?
从一个版本的 Windows 切换到另一个版本就像从一辆汽车换到另外一辆汽车。Win95 到 Win98 ,老实说我说不出有什么区别。Win98 到 WinXp,差别比较大但是也没有什么真正的重大区别。
但是从 Windows 切换到 Linux 就象从开汽车切换到骑摩托车。他们都是操作系统(道路车辆)。他们可能都使用同样的硬件(道路)。他们可能都提供一个运行应用程序的环境(把你从甲地运到乙地)。但他们使用本质不同的两种方法来达到目的。
Windows(汽车)对于病毒(小偷)并不安全,除非你安装反病毒软件(锁上车门)。Linux(摩托车)却没有病毒(车门),所以即使你没有安装反病毒软件(没锁车门)也非常安全。
反过来看一看:
Linux(汽车)从根本上用于多用户(乘客们)。Windows(摩托车)用于单用户(乘客)。每个 Windows 用户(摩托车驾驶员)每时每刻都要习惯集中精力控制他的计算机(车辆)。而一个 Linux 用户(汽车乘客)只有在以 root 根用户身份登录(坐在驾驶座上)时才要去控制计算机(车辆)。
通过两种不同的方法来达成同样的目标,他们各有优缺点:当载上一家子的成员和大包小包的货物从甲地至乙地时,一辆车显然是明智的选择:因为它有充裕的座位以及足够的储存空间。而对于一个人从甲地到乙地的情况,摩托车则是更好的选择:因为它不怎么会遇上堵车,消耗的燃油也更少。
无论选择摩托车或是汽车,仍有很多事情不会改变:你要把油加进油箱,把车开在同一条道上,而且必须遵守红绿灯,在转弯前要打转向灯,你同样也要遵守限速指示。但是也终究有很多情况不同了:汽车驾驶者不必带着安全头盔开车,摩托骑手不用系安全带;开车的人转动方向盘来转弯,摩托车驾驶者则要倾斜身子改变重心;开车的人需要踩油门踏板来加速,而摩托车通过手旋转手把来控制加速。
一位汽车司机如果试图通过转移重心来拐弯,很快就会陷入一堆麻烦中。同样的,一个 Windows用户如果认为自己的经验可以直接派上用场,结果也会因为相同的原因而徒劳无获。事实上,较之电脑新手,一个 Windows “高级用户”在Linux 的使用过程中常遇上更多麻烦。那些经验丰富的 Windows用户在面对问题时,如果无法解决,常会觉得“如果我这么有知识的,都搞不定,那新手就更不别想了”,因而得出“Linux离桌面应用还有十万八千里呢”的强烈想法。但这显然是与事实不符。
解决方法在于:Windows 用户必须意识到他只是一个有经验的 Windows 用户,而不是有经验的电脑用户,Windows 用户必须意识到当自己在尝试 Linux 时,他又成了一个新手。
矛盾三: 文化冲击
子问题 A:那是一种文化Windows用户或多或少地处于一种消费者和供应商之间的关系:
他们花钱买软件,获得授权,得到支持,等等。希望软件能够有确切的可用性。因此习惯于去得到使用软件的权利:花钱去得到技术上的支持以及他们得到他们想要的权利,也经常要与一些除了个人之外的实体打交道:例如他们与一家公司签一份合同。
Linux 用户有着更多的一致性。不需要花钱去买软件,不需要为得到技术上的支持而耗费财力。免费下载软件,并且使用在线聊天工具和到论坛去寻求帮助;和个人打交道,而不是公司。
一个 Windows 的用户如果只是把他的观点带到 Linux 中,那么他是不会喜欢上 Linux 的,这需要慢慢地适应。
引起矛盾的最大原因在于在线交流方面:一个初学 Linux的菜鸟在遇到问题时寻求帮助,当他没有得到他可以接受的答案的时候,他便开始抱怨并且想要得到更多的帮助。因为这正是他以前用付费来获得帮助的方式。问题就是这不是付费提供帮助的系统。而是很多热心人发自内心地帮助其他人解决问题的系统。一个新的用户没有任何权利去向这些热心人索要帮助,这就如同一个想要得到施舍的人,还要求从捐赠者那里获得更多的捐赠品一样。
同样,一个 Windows用户习惯了使用商业软件。这些软件在没有做到足够的可靠性、功能性以及对用户友好的界面之前,公司是不会发布该软件的。因此这正是 Windows用户希望软件是从1.0 版本开始的。而 Linux 软件一旦重写就会立即发布,因此是从 0.1版本开始的。这样的,真正需要这些功能的人就会马上得到它;感兴趣的开发者会来帮助改进代码,以及社区就会知道接下来要做什么了。
如果菜鸟在使用Linux时遇到了困难,他会抱怨:这个软件没能满足我的需求,并且他认为他有权得到这样的满足。如果他得到这样带有讽刺性的回答:“如果我是你,我要求退款!”,他的情绪将会更差。
因此,为了避免这些问题,应做到:只要记住,你并没有付给那些软件开发者或者在线帮你提供技术指导的人任何钱。他们并不欠你任何东西。
子问题 B:新的 VS 旧的
Linux几乎是因黑客的业馀爱好而诞生的。它的成长也使得易于它吸引了更多志同道合的黑客们。Linux在获得一个易于使用的可用安装程序前一直默默无闻。在相当长的时间里,它在大众眼中只是一个极客(Geek)而已。可以说Linux“始于极客,馈于极客”。直至今日,大多数 Linux 的老用户仍自认为是极客。
这是件非常好的事情:如果你在硬件或软件方面有问题,存在一大群极客们不断寻找解决方案这个状况,显然一种明显的优势。
但长久以来 Linux 的成长仍旧十分有限。尽管存在一些可以被绝大多数人安装的发行版本,甚至一些版本基于 CD 并且与用户使用的硬件并无冲突。当Linux开始因其无病毒和廉价的升级而吸引一些非发烧友用户时,两大用户阵营间并不是没有摩擦,但双方都明了一点:对方都没有恶意,仅仅是缺乏相互理解而已。
首先,你面临的是核心极客们仍然假设所有使用 Linux的用户们都是极客同志。这意味着他们认为所有人都对此有很深入的理解,这导致了他人控诉他们的一些行为是傲慢、自大和无礼的。事实上,有时如此。但大多时候却并非这样:“每个人都应知道”这样的善意表达被说成了“地球人都知道!”——大相径庭。
其次,你面临着从使用的商用操作系统转投而来的新用户。这些用户已习惯使用人机界面友好的软件,他们也是不确定因素。
这类问题起因于不同使用习惯的碰撞:第一类人沉醉于不断地按自己喜好重构系统,而第二类人对操作系统如何工作漠不关心,只要它能工作就好。
在乐高(Lego)玩具发生的类似的情况正好阐述这种问题。试想下面的情景:
新用户(以下简称“新”):我想要一个新玩具汽车,每个人都因乐高汽车的好玩而着了迷。所以我也买了它,但当我到家後我才发现,我的盒子里只有积木和齿轮!我的车子在哪里?
老用户(以下简称“老”):你应该在积木之外组装一辆车,这才是乐高的真谛。
新:什么??我不知道应怎样拼装这个车子。我不是个机械师。为什么我应该知道如何组装它?
老:盒子里有使用手册。它上面写着拼装车子的步骤。你不用知道原理,只要按照按部就班就好。
新:好吧,我找到了步骤。这将占用我很多时间!为什么厂家不能装好了再卖给我,还得让我自己动手??
老:并不是所有人都满足于将乐高做成玩具车。这些积木可以被我们组成万物。这才是游戏的真谛。
新:我仍旧不明白为什么厂商不能给我们这种想要车子的人一个成品,如果那些喜欢动手的人高兴可以自己拆了它阿。无论如何,我还是将它组装起来了,尽管某些部件时不时地掉下来。我有什么方法可以解决吗?我能将它们粘起来吗?
老:这就是乐高。他就是用来拆装的。这才是游戏的真谛。
新:但我不希望总是拆拆装装,我仅仅希望一个玩具车而已!
老:呃,欢迎您到地球来。你买的是乐高吗?
很明显,对那些只想要一个玩具车的人来说,乐高并不是为他们准备的。上面的情景应该不会发生在你的生活中。乐高的价值在于你可以建造过程中体会乐趣而且你也可以将它组装成任何你想要的东西。如果你不想动手拼装,只能说乐高不适合你。这显而易见。
由于长久以来一直关注 Linux 的老用户,同样的问题在 Linux 上越发明显:它是开源的、完全可定制的软件集。这才是真谛。如果你不想修改一些组件,为什么自找麻烦来使用它呢?
与乐高出售成品玩具的做法略有相似,通过最近的一系列的成果提升了非黑客用户使用 Linux 的舒适性,这使得更广大的用户可以使用Linux。也正因如此,你仍可以听到与上面相似的对话,程度也仅是略有不同。新用户抱怨老用户只考虑基本特性,他们不得不通过阅读手册才能实现一些功能。对太多发行版本的抱怨,对软件过多配置选项的抱怨和对运行时时常报错的抱怨不正如对乐高有太多模块的抱怨一样忽略了它可以被用来按你想发拆装成事实吗?
因此,为了避免这个问题:请铭记现在的 Linux 已今非昔比。Linux 社区最大的也是最关键的组成部分——黑客和开发者们,他们因 Linux 的可以按需定制而欢喜;他们也会可制定能力的丧失因而神伤。
矛盾四: 为设计者而设计
在汽车工业中,你很难发现一个人即设计车辆引擎也设计车辆内饰:这些是完全不同的技能。没有人想要只是看起来可以跑得很快的引擎,同样也没有人想要一个做工出众但狭小且肮脏的内饰。基于同样的道理,在软件产业,用户界面(UI)往往不是由软件编程人员设计的。
但在 Linux 的世界却大不相同:一个项目往往是因个人的兴趣而产生。个人也包办了所有的工作,因此这些项目的界面往往缺乏了“用户友好”的特性:用户对这个软件了如指掌,所以他也就不需要了帮助文件等。vi就是一个很好的例子,最初它的目标用户就是为那些了解它工作方式的人。因而设计者从来都没有想过如何用其他方式退出 vi,所以新用户不得不靠重启计算机退出的事情时有发生。
但是,自由开源软件(FOSS)程序员与商用软件程序员的一个最重大区别在于,FOSS程序员的作品都是他们自己想要使用的东西。因此当作品不能被新用户“舒适”使用的同时,它又成为了最终用户最需要的东西:因为作者也是最终用的一员。商用软件的程序员却大不相同,他们总是为其他人编写软件,而且这些用户都不是专家。
所尽管 vi 拥有拥有一个令新手望而生畏的界面,但它仍然在当今流行,这又归功于他的界面:当你熟悉後就会发现它原来无比强大。Firefox 也是被经常浏览网页的人编写出来的。Gimp 同样是出自经常处理图形文件的人之手。不胜枚举。
Linux的界面对于新手而言同样的有些“难度”。尽管 vi名声在外,但他仍然不在那些需要快速修改一些文件的新手的考虑之列。如果你在一个软件生命周期的早期使用它,光鲜亮丽且友善的用户界面永远只高挂在 “计划”列表之上:功能优先。没有人先雇好装修队再去找楼盘,程序员们都是实现功能再不断改进界面。
所以,为了避免这个问题:寻找那些已便于上手为目的设计的软件,或者接受那些与你使用习惯急剧不同的软件。抱怨 vi 对新手不够友好只是舍本求末罢了。
矛盾五: “用户友好”的神话
在电脑世界里,“用户友好“是一个十分广泛的专有名词。甚至有一个网络笑话就叫这个名字。但这个词却名不副实。
基本实现方法听起来似乎不错:软件的设计要从用户的想法和需要出发。这个方法一直都被认为是单一的实现办法,但事实并非如此。
如果你一辈子都在进行文书处理的工作,理想的软件对你来说就是个快捷强大、能让你投入最小的精力来实现最大的工作效率的文字处理软件。简单的键盘快捷键和无须鼠标的操作将是最基本的需求。
但如果你很少做字处理的工作,你只是要写一封普通的信,那么你不会想着去学会那些键盘快捷键操作方法。排列有序的菜单和一目了然的工具栏图标就是你的理想环境。
很明显,你为某个用户的需求所设计的软件可能对其他的用户来说并不合适。如此说来,若我们每个人都对软件有不一样的需求,那这些软件怎么能自称“用户友好”呢?
简单来说:“用户友好”并非事实,只是为了让复杂的情况看上去变得简单一点而已。
那么“用户友好”到底是什么意思呢?好吧,从那些使用这个词的文章中来看,“用户友好”的软件实际上意味着“该软件对那些以前从未使用这个软件的用户们来说也不是那么难上手”。这就使得那些看上去用户界面都差不多的软件都被归类为“用户友好”。
子问题 A: 熟悉的就是友好的
所以在大多数被认为“用户友好”的文字编辑 和文字处理的系统中,你的剪切和复制使用 “Ctrl+X” 和 “Ctrl+V” 来完成,这完全不直观, 但是每个人都习惯这些快捷键,所以他们把这当作“友好的”快捷方式。
如果有人使用 vi 并且发现里面 “d” 是剪切,“p” 是复制,这将被当成是不友好的:因为这不是大多数人习惯的方式。
但这是更好的方式吗? 明显是的。
如果使用“Ctrl+X”的方法,你怎样从你当前正在编辑的文件中剪切一个单词?(没有鼠标的前提下!)
你必须从开头的字符开始,用“ Ctrl+Shift+Right”来选择单词。
然後“Ctrl+X”把它剪切下来。
vi中的方式呢?“dw”就是删除单词的意思。
如果要剪切 5个单词使用 “Ctrl+X” 方式会出现什么情况呢?
从开头的单词开始:
“Ctrl+Shift+Right”
“Ctrl+Shift+Right”
“Ctrl+Shift+Right”
“Ctrl+Shift+Right”
“Ctrl+Shift+Right”
“Ctrl+X“
要使用5个动作
在 vi 中的情况呢?
d5w
vi 方式具有更好的功能性和直观性 。“X” 和 “V”并不是能够直观记忆“Cut”和 “Paste” 命令的,反之 “dw” 对于 “delete” 和 “p” 对于 “Paste”更加直观,相对于 “X” 和 “V” 方面,vi明显是更好的。可是由于她不是大家所熟悉的,因此她被认为是不友好的。并不是因为其他的原因,纯粹的习惯因素使得Windows成为了更加友好的系统。因此我们要学习问题一:Linux 和 Windows 完全不一样。告诉大家:不可避免,Linux 经常显得没有 Windows “友好”。
为了避免这个问题,你们要记住“友好”并不意味着习惯,试着用你的方式来做事,如果没有用的话,试着想想一个初学者会怎么做,然後你就知道了更简单的方法。
子问题 B:低效的就是友好的
这是一个可悲的但无法逃避的事实。似乎你越想提高一个程序的功能性,它就看起来越友好。
这是因为友好性是通过在用户界面中使用简单、可视化的“线索”实现的——越多越好。毕竟,如果一个完全的计算机新手被放到一个所见即所得的字处理软件前并被要求把一些文本变成粗体,接下来很有可能:他会认为 "Ctrl+B" 是通常的方法。
他会寻找线索,并尝试点击 "编辑" 菜单。如果不成功,他就会从接下来的一系列菜单中尝试比较像的那个:“格式”。新的菜单有一个看起来很有希望的“字体”选项。嗨!这里有我们想要的“粗体”选项。成功了!
下次你再做任何文字处理,都想试着通过菜单来完成每一件工作:不用快捷键,也不用工具栏图标。菜单就是一切。当任务突然需要大量按键和鼠标点击时,你会发现你比爬还慢。
这样使软件变得“用户友好”就像在自行车上装辅助轮一样:它让你能马上骑起来起来,不需要任何技巧和经验。这对一个初学者来说是完美的。但是没有人会觉得所有的自行车都应该加上辅助轮销售。如果你今天得到这样的一辆自行车,我敢打赌你要做的第一件事就是除去这不必要的阻碍:一旦你知道怎样骑车了,辅助轮就没用了。
同样的道理,大量的 Linux 软件是设计成不带“辅助轮”(辅助工具)的——它是为已经有一些使用的基本技能的用户设计的。毕竟,没有人是永远的新手:无知是短命的,知识是永远的。因此 Linux 软件是以大量的知识为前提设计的。
这听起来也许像是借口:毕竟,MS Word(微软的Word)有全部的友好菜单,并且有各种工具栏按钮, 而且有快捷键……它是世界上最棒的。真的吗?友好且有效的。
然而,我们必须透过表象看问题。首先,这个想法的可行性:让一个软件拥有菜单、工具栏、快捷方式等一切意味着大量的源代码编写,而没人为 Linux开发者花费的时间付帐;其次, 这样做依然没有真正考虑到那些高端用户;极少有专业的文字录入者使用MS Word。你见过哪个编程的人用 MSWord 吗?与此相比,想想有多少人用 emacs 和 vi。
为什么会这样?首先,这是因为某些“用户友好”的行为会导致低效:参看上面的“剪切和粘贴”的例子。其次这还因为 Word大部分的功能被放在了菜单里,因此你不得不使用菜单。只有某些最常见的功能可以作为按纽被放在界面的工具栏上。高级用户不得不花大量的时间来找到那些较少用道,但对高级用户来说依然很常用的的功能。
另外请记住,不管怎样,那些“辅助轮”在 Linux 软件中也同样有,尽管他们不是那么容易被发现,但实际在 Linux 中通常都会有。
以 mplayer 播放器为例。你可以在终端输入 mplayer视频文件名命令来播放视频文件。你可以使用方向键,PageUp、PageDown键进行快进、后退等操作.这些可能还不能称之为完全的 “用户友好”,但如果你在终端输入 gmplayer 视频文件名 ,你就会看到图形版的播放器,它同样拥有漂亮、友好的界面,熟悉的按钮。
再用从 CD 转换到 MP3(或 Ogg)为例: 如果使用命令行, 你需要先使用 cdparanoia命令。然后你再需要一个编码器……这会是一个恶梦,就算你完完全全清楚如何使用 (imho) 包。所以,下载和安装Grip吧。这是一个容易使用的图形软件,自动的在背后使用 cdparanoia 命令和编码器,令你的转换过程变得简单,甚至支持CDDB,能自动为你的档案命名。
同样发生在抓取DVD上:选择正确的编码是一场噩梦。但是使用dvd::rip软件,可以在一个任何人都能操作自如的图形界面来完成整个编码过程。
因此避免这个问题:要记住“辅助轮”(辅助工具)仅作为Linux的扩展,而不是由主程序自动提供的。而且有时,“辅助轮”还不成为设计的一部分。
矛盾六:模仿 VS. 汇合
当人们发现 Linux 不是他们想要的 Windows 复制品时,经常争论一件事,就是坚持认为 Linux 一诞生,这就是(或应该是)其努力的方向,而且那些不明白这一点的人错误地帮助,使 Linux 更像 Windows。由于这一点,他们展开激烈的争论。
Linux 已经从命令行时代进入了图形界面时代,这是复制 Windows 的明显尝试。
不错的理论,但是错了:最初的 X 窗囗化系统(见附录)是于1984年发布,继承自1983年移植到 Unix 上的 W 窗口化系统。而 Windows 1.0是在1985年才发布的。Windows 在1990年发布第三版之前并没有做大——那时,X 窗口化系统已经演化成我们今天使用的 X11版本好几年了。Linux 在1991年才开始,所以 Linux 没有开发一个 GUI(图形用户界面)来模仿 Windows:它只是使用了一个在Windows 出现之前就已经存在的 GUI。
Windows 3 系列让位于 Windows 95,后者带来了图形界面的革命性变化;在这以后很多年,微软都没能作出与此类似的创举。Windows 95 带来了多项创新的特性:拖放功能、任务栏等等。当然,这些也同样被 Linux 所借鉴。
事实上……不是这样的。上述所有的特性在微软使用前就已经出现了。尤其,NeXTSTeP(见附录介绍)是一个非常先进的图形用户界面(就当时而言),它明显早于 Win95 ──1989年发布了第一版,1995年发布了最后一版。
不错,所以微软并没有想出被我们认为是 Windows 界面的独有特性。但它还是创造了一种界面,Linux 从那时起尝试模仿它。
为了揭穿这些,我们可以引用一个经常被讨论的说法:趋同现象。它说的是:两个不同的、各自独立的系统随着时间的推移会逐渐变得类似。这种现象经常发生在生物学领域。举例来说:鲨鱼和海豚,他们都有着类似的背鳍、胸鳍和尾鳍,以及同样的流线型外形。
但是,鲨鱼是由鱼进化而来的,而海豚则是由陆地上的哺乳动物进化而来的。他们拥有类似外形是由于他们都生活在同样的海洋环境中,他们必须朝最大效率适应海洋环境的方向进化。实际上不会有一幕这样的场景:未进化的海豚看到鲨鱼以後就开始想“Wow,看看鲨鱼的鳍,它们非常有用。我也要这样进化一套自己的鳍!”
同样,如果先看早期的 Linux 桌面、FVWM 和 TWM 以及许多简陋的 GUI(图形用户界面),然后再看看今天的 Linux桌面、Gnome 和 KDE,以及它们带有的任务栏、菜单、视觉效果。是的,不得不说现在的 Linux 比早期的更像 Windows 了。
另一方面,Windows也同样如此;我印象中 Windows 3.0 没有任务栏。那么开始菜单呢?什么是开始菜单?
Linux 过去没有任何桌面像今天的 Windows,微软过去也没有。现在他们都有了,这说明什么问题呢?
这说明两个开发阵营的成员都在寻找提升GUI(图形用户界面)性能的方法,但是解决相同的问题可供选择的方法并不多,他们难免会使用类似的方法。类似并不能说明或暗指一方在模仿另一方。记住这一点,你就不会受到这个问题的困扰了。
矛盾七:那些 FOSS(自由和开源软件)的事
噢,这导致了问题。非本质的:自由和开源的软件是整个事情中一个极好的和很重要的部分。但是对于一些人看来,理解 FOSS(自由和开源软件)和私有软件之间的不同是一个巨大的改变。
我已经提醒了一些事实,人们认为他们需要并喜欢技术支持。但是事实往往离得很远。
微软的使命声明是“A computer on every desktop(每个电脑都需要桌面)”——不言而喻,每一台计算机应该运行 Windows。微软和苹果公司都销售操作系统,都尽他们最大的努力来保证大多数的人们使用他们的产品:他们是企业,为了赚钱。
并且FOSS(自由和开源软件)也在那里,甚至今天,几乎都是非商业的。
当你发电子邮件告诉我,Red Hat、Suse、Linspire 和所有Linux发行版:是的,我知道他们在“销售” Linux。我知道他们都希望 Linux 被广泛的采用,特别是他们自己的版本。但是不要混淆提供者和生产者。Linux内核不是被一个公司创造,不是为了获取利润而维持它。这些 GNU 工具不是被一个公司创造,同样也不是为了牟取利润。X11视窗系统……不错,当前最流行的实现方案是xorg,并且“.org”应该部分地告诉你需要知道的(注:.org为非盈利组织)。桌面软件:好的。你提出一个例子,比如 KDE,由于其基于的Qt是商业化的。(译者注:现在 Qt 已经不是商业化的了)。但是Gnome、Fluxbox、Enlightenment等等,都是非盈利的。那儿是有人销售Linux,但是那只是非常少数的。
私有软件最终用户数量的增加导致了制作那些软件公司直接的经济效益。对于FOSS(自由和开源软件)来说,并不是这样,使用人数的增加并不会产生直接的收益。肯定是:个人自豪感,发现Bug(错误)能力的增长,更多可能得吸引新的开发者,可能有机会得到个好的工作,等等。
但是 Linus Torvalds(Linux 的创始人)没有从 Linux 使用权上挣钱。Richard Stallman( GNU 创始人)没有从增长的 GNU使用权中获利。所有运行 OpenBSD 和 OpenSSH 的服务没有放一分钱到 OpenBSD 项目的钱袋中去。
所以我们来看,这就是在Linux 和新用户之间最大的问题:他们发现了不想要的东西。
新用户来到 Linux,他们曾经使用一种操作系统,那时,最终用户的需求至高无上的,并且“用户友好性”和“以用户为中心”被认为是第一位的。并且他们突然发现他们自己将要使用的操作系统:仍然依赖于‘man’文档,命令行,手动编辑配置文档和Google。并且当他们抱怨时,他们没有获得悉心照顾或者承诺的更好的东西:他们屡屡碰壁。
当然,夸大其词了。有许多人尝试去转换到 Linux 但是失败了。
从另一方面来说,FOSS(自由和开源软件)事实上是一个非常自我的发展方法:仅当人们想工作的时候才工作,仅工作于他们想工作的东西。大部分人们没有看到任何的需求,让 Linux 对没有经验的用户更有吸引力:它已经按照他们想要的工作了,为什么他们应该关心它为什么没有为另外的人工作呢?
FOSS(自由和开源软件)和 Internet 自身有很多相似的地方:你不需要付钱给一个网页(软件)的作者,去下载以及阅读(安装)它。对于已经有了带宽(知道如何使用软件)的人们来说,无限的宽带 (用户友好的界面)并不是很感兴趣的。博客(软件开发者)不需要很多的读者(用户)来证明写博客日志(编码)。那里是有许多人从中获得了很多的钱,但它并不是大部分商业喜欢的旧有规则:“我拥有这个,如果你想要一些,你必须付钱”;而它提供了诸如技术支持(电子商务)的服务。
Linux 对市场份额不感兴趣,Linux 没有客户。Linux 没有股东,或者一个盈利亏损的责任,Linux 不是为了赚钱而创造的。Linux 没有成为这个星球上最流行和最普及的操作系统的目标。
所有的 Linux 社区都想要一种真正不错、充满特色、自由的操作系统。如果 Linux 最终成为一种非常流行的操作系统,那么是美妙的。如果Linux 最终拥有直观的、用户友好的界面,那么也是美妙的。如果 Linux 最终成为一个数十亿美元的产业的基础,那也是美妙的。
它是伟大的,但它不是重点。重点是让 Linux 成为社区有能力制作的最好的操作系统。不是为了别人:为了它自己。如此普遍关于“除非 Linux如此这样,否则永远不会占领桌面”的威胁是不恰当的:Linux社区没有尝试占领桌面。他们完全不关心它放在你桌面上,是否够好,只要在他们的桌面,运行的够好。 憎恨微软的人,Linux的狂热者,FOSS(自由和开源软件)提供者或许是吵闹的,但他们仍然只是少数的。
Linux 社区想要的是:一种操作系统能够被任何想要它的人安装。所以如果你在考虑转向 Linux。首先问你自己,什么是你真的想要的。
如果你想要一种操作系统,没有一个汽车司机在你身边,除了给你把钥匙,把你放在驾驶员的座位上,并且希望你知道要做什么:得到 Linux。你将必须投入时间去学习如何使用它,但是一旦你学会了,你将拥有一种能够站起来跳舞的操作系统。
如果你只是想要没有恶意软件和安全问题的 Windows:阅读好的安全实践;安装好的防火墙,恶意软件检测者和杀毒软件;用一个更安全的浏览器替换IE ;并且保持升级到最新的安全更新。有人(包括我自己)使用 Windows 从 3.1 到XP,从来不曾被病毒或者恶意软件感染:你也可以做到。不要用 Linux:非常不幸的是,它不会成为你想要它的那个样子。
如果你想要一种基于 Unix 的操作系统的安全性和性能,和以客户为中心的特点和世界著名的界面:购买苹果公司的 Mac 操作系统。Mac OSX是不错的。但是不要用 Linux:它不会做你想要它做的那样。(译者注:据个人观察,现在Linux界面已经接近或者超越Mac OS X。)
这不仅是关于“为什么我想要 Linux?”。也是关于“为什么Linux 想要我?”
上文源自:译言网
操作系统间的矛盾并不妨碍大佬们的私下互动,终于上天安排在2025年他们在人生暮年时安排彼此相遇了。
微软创始人比尔·盖茨与Linux 创始人Linus Torvalds 50年来首次碰面
比尔·盖茨和林纳斯·托瓦兹于2025年6月首次公开见面,两人被发现出席一场据称是“友好”的晚宴。令人震惊的是,尽管比尔·盖茨和林纳斯·托瓦兹都已在科技行业耕耘五十余年,却从未被拍到以友好姿态出现在公众视野中。然而,如今这一僵局终于得以打破,因为有人目睹他们一同出席了微软 Azure 首席技术官马克·鲁西诺维奇举办的晚宴。该消息发布在领英 (LinkedIn) 上,在那里看到了比尔·盖茨和林纳斯·托瓦兹的合影,旁边还有微软的大卫·卡特勒。虽然两人会面的具体原因尚不清楚,但看到他们共聚一堂仍然令人欣喜。

有趣的是,比尔·盖茨和林纳斯·托瓦兹来自两个截然不同的世界,因为微软的创始人以“商业化”软件而闻名,而这正是微软的核心所在。盖茨则专注于通过授权和控制生态系统来实现软件货币化,从而实现利润最大化,他的方法促进了闭源环境的发展,这与托瓦兹的理念截然不同。比尔·盖茨专注于通过收购和公司控制来实现创新,而Linux的创始人则注重合作。
另一方面,Linus Torvalds 则站在“开源”环境的前沿,Linux 与开发者携手共进。他倡导软件自由,优先考虑开发者,而不是企业,这表明 Torvalds 的理念与盖茨截然不同。有趣的是,Linus 经常挖苦微软的做法,并拿 Windows 及其所有 bug 开玩笑。以下是他关于微软的标志性言论:微软并不邪恶,他们只是做了些烂操作系统。PC 就像空调一样……只要打开窗户,它就没用了。 - Linus Torvalds
或许,意识形态的差异是两人未能会面的主要原因,但除此之外,两人之间并无已知的敌意。如果我们知道两人讨论了什么就好了,但根据Russinovich的说法,两人并未做出任何“重大的内核决策”。
研究员柯克称Windows NT内核设计至今仍让Linux相形见绌
一名曾在微软担任四年逆向工程师、现任职于Google的研究员劳里·柯克2026年9月重新引发了持续数十年的Windows与Linux之争。她公开表示Windows NT内核从工程设计角度来看至今仍是一项“工程奇迹”,在许多方面甚至让Linux相形见绌。她同时提出了一个颇为大胆的架空历史设想:如果微软在21世纪初推出一种允许大型企业自由修改和派生的“Open NT”,今天的服务器和云计算生态可能会呈现完全不同的格局。甚至与Windows NT IOCP的发展对比也让Linux不占上风。
柯克强调她所赞赏的并不是Windows 11的开始菜单、Copilot或者广告,而是Windows底层的NT内核架构。她认为NT从一开始就建立了较为完整的对象模型和安全体系,而Linux则是在传统Unix基础上逐步增加Capabilities、Namespaces、SELinux等安全机制,因此整体上显得更加分散。
柯克在社交平台上表示,如果站在程序员角度进行最简化的描述,NT更接近一种“面向对象”的设计,并且从诞生之初就拥有非常强的安全模型;相比之下,Linux的许多安全能力是在后来逐步添加进去的。她认为,如果今天从零开始设计一套面向未来的操作系统内核,最终形态很可能不会像Linux,而会更接近NT,甚至可能类似某种BSD分支。
Windows NT实际上是自1993年以来所有主要Windows版本的技术基础,包括今天的Windows 11。微软在1988年聘请了戴夫·卡特勒,此前他曾在DEC负责VMS操作系统开发。按照微软的说法,卡特勒带领的一小支前DEC工程师团队在真正开始编写代码之前花了大约半年时间制定规范,最初目标就包括可移植性、多处理器支持以及C2级安全认证。
微软退休工程师戴夫·普拉默也参与了这场讨论。他指出NT并不是卡特勒第一次从零开始设计操作系统内核,此前他已经参与过RSX-11M和VMS,因此NT实际上是卡特勒第三次从头打造内核。不过NT并不是简单地把VMS换上Windows的外壳。它最初被称为NT OS/2,是一款强调可移植性的操作系统,最早甚至针对英特尔i860处理器进行开发,随后又转向MIPS架构。微软最终改变了NT的主要产品方向,从OS/2转向Win32,其中一个重要背景是Windows 3.1在短短六个月内售出了1600万份。
柯克所赞赏的核心之一是NT的“对象”设计。在微软自己的技术术语中,NT并不是传统意义上使用C++等语言实现的“面向对象操作系统”,而是采用了“基于对象”的架构。进程、线程、文件、设备、注册表键、互斥体、作业以及访问令牌等资源,都被作为对象进行管理。
NT内部的对象管理器负责创建和销毁这些对象、维护对象命名空间、跟踪每个进程持有哪些对象,并管理相应的访问权限。不同系统组件通过对象所属组件提供的接口来使用这些对象,因此底层组件的内部实现发生变化时,可以在一定程度上避免影响其他组件。
普通Windows程序员最容易接触到这一设计的地方就是“句柄”。当应用程序打开一个文件时,Windows不会简单地把文件本身交给应用程序,而是返回一个句柄,并将已经授予该句柄的权限记录下来。之后程序对该文件进行操作时,系统会依据这些权限进行检查。如果一个句柄被复制,其权限可以进一步减少,却不能通过复制操作凭空增加。
柯克认为,这种对不同系统资源采用相对统一的管理方式非常优雅,也是NT架构的重要优势之一。NT的安全模型同样建立在资源、身份和权限之上。用户登录Windows后,系统会创建一个访问令牌,其中包含用户的安全标识符SID、所属用户组以及相关系统权限。用户启动的进程通常会获得相应的访问令牌,而每一个可以被保护的对象则拥有安全描述符,其中包括访问控制列表,用于规定哪些SID可以获得哪些权限或者必须被拒绝。
当进程尝试访问一个对象时,Windows会将访问令牌与对象的访问控制列表进行匹配,然后返回一个具有相应权限的句柄。此外,安全描述符还可以包含用于审计的系统访问控制列表,从而记录对象访问成功或者失败的情况。
不过这并不意味着拥有完善设计的内核就自动等于一个绝对安全的操作系统。Windows NT 3.5曾经获得C2安全评级,但当时的认证环境是没有网络连接的独立计算机,而且微软还针对文件和注册表默认权限进行了强化。随着Windows进入联网时代,驱动程序、默认配置以及几十年来积累的兼容性要求同样会对系统安全产生巨大影响。
柯克对Linux的主要批评之一则是Linux在安全和权限管理方面采用了多个相互配合的机制。她提出的问题包括UID、GID、ACL、cgroups、各种安全策略、SELinux以及文件系统权限等,并认为这些机制之间缺少一个统一、直观的权限关系图。
不过这种复杂性也正是Linux设计方式的一部分。UID和GID用于识别用户和用户组,文件权限和ACL负责保护文件,Capabilities可以把传统root账户拥有的能力拆分开来,例如允许一个Web服务器绑定80端口,却不必获得完整root权限。Namespaces则可以让进程看到独立的文件系统挂载、进程或者网络环境,容器技术正是建立在这一机制之上。cgroups则负责限制CPU、内存等资源的使用,而SELinux以及其他Linux Security Module则可以在此基础上施加额外的安全策略。
Linux的这些机制确实有不少是在内核发展过程中陆续加入的。例如SELinux最初由美国国家安全局在2001年以独立补丁形式提出,Linux随后建立了Linux Security Module框架,使不同安全模型可以通过统一的内核钩子进行接入。如今Linux内核已经支持SELinux、AppArmor、Smack、TOMOYO、Landlock等多种安全机制。
因此两种操作系统的设计哲学实际上存在明显区别。NT倾向于围绕统一的对象模型进行集中管理,而Linux则更加注重可组合性,让不同机制承担不同任务,并允许发行版、管理员和应用场景自行组合。
柯克认为这种差异在人工智能代理快速发展的今天尤其值得重新审视。她提出的核心问题是:“一个AI代理到底被允许做什么?”
传统程序通常按照用户明确发出的指令逐项执行,而AI代理可能在几分钟内连续执行数千个操作,自己生成并运行代码,读取文件,并把多个权限串联起来完成复杂任务。因此,操作系统不仅需要判断“谁”在运行程序,还需要更加明确地定义一个AI代理究竟能够访问什么资源、在什么范围内操作以及如何记录这些行为。
柯克认为NT的对象模型能够让操作系统针对不同资源建立更加明确的权限关系,并在AI代理失控时提供更加集中和清晰的审计记录。不过,她也承认这仍然属于一种架构层面的设想,而不是已经得到证明的结论。
实际上,Linux也已经针对这一问题提供了越来越多的工具。Linux 5.13加入的Landlock允许即使没有特权的进程主动限制自身能够访问的文件系统和网络资源。这些限制可以继承给子进程,并且只能进一步收紧,不能被子进程放宽。再结合seccomp、Namespaces、cgroups以及各种LSM机制,Linux同样能够对AI代理进行较为严格的隔离。
微软自己也正在朝着类似方向发展。微软在2026年的Build大会上宣布了Microsoft Execution Containers,也就是MXC,让开发者声明AI代理能够访问哪些资源,并由Windows在运行期间执行这些限制。MXC还可以为代理创建独立的用户账户,使系统能够将代理执行的每项操作归属于特定身份。Windows 11现有的Agent Workspace也使用ACL来限制代理账户,使其权限不会超过用户本身。
换句话说,微软如今正在利用SID、访问令牌和ACL等NT传统机制解决AI代理权限问题,这恰好也是柯克认为NT架构具有优势的地方。不过,这并不意味着微软已经证明Linux无法胜任AI代理。微软自己推进AI操作系统的同时,也曾警告AI代理可能产生新的恶意软件和安全风险。
柯克随后提出了自己最有趣的架空历史设想:微软当年其实应该推出一个“Open NT”。
她设想的Open NT并不一定需要像GPL软件那样完全开放,而是允许大型企业在保持微软制定的基础安全和兼容性标准的情况下,对内核中的特定组件进行修改。例如,亚马逊在早期建设EC2云计算平台时,可以从Open NT派生出一个名为“AmazonNT”的版本,自行修改调度器、网络栈或者内存分配器,同时仍然遵守微软定义的核心兼容性和安全规范。
实际上,微软过去确实曾经在一定程度上尝试过类似模式。微软的Shared Source计划曾向大约1600家企业客户、大学和政府机构提供Windows源代码访问权限。2001年,奥地利内政部成为第一个获得Windows XP源代码的欧洲政府。
2006年,微软还推出了Windows Research Kernel,允许高校研究人员修改NT的调度器和内存管理器,用于教学和研究。不过这些项目本质上仍然属于有限的源代码共享,并没有允许亚马逊等企业创建并商业发行自己的Windows NT分支。
至于微软为什么没有进一步开放NT,文章认为其中可能涉及授权收入、知识产权、技术支持成本,以及微软最为看重的Windows兼容性承诺。允许第三方长期修改内核,很可能意味着微软需要面对大量不同版本之间的兼容和安全问题。
Linux开发者则从另一个角度对Open NT设想提出了质疑。长期参与Linux内核图形子系统开发的David Airlie认为,真正的问题在于维护一个内核分支的长期成本。即使源代码完全开放,企业如果20年后仍然需要维护自己修改过的内存管理器或者调度器,也必须持续投入专门的工程团队。
Airlie指出大量企业曾经尝试派生Linux版本,但经过几年后往往发现维护自己的分支成本太高,最终还是选择将修改提交回主线。Java生态中的不同JVM实现之所以能够长期存在,是因为它们背后拥有明确的商业客户和收入来源;而一个只服务于企业内部的NT分支则可能很难长期承担这种成本。
如果亚马逊真的修改了NT的调度器,那么微软每个月发布的安全修复都必须被重新合并、测试和验证。时间越长,这个分支就越接近于一个需要独立维护的操作系统内核团队。Linux的模式则是将大量企业需要的修改尽可能提交回主线,由整个社区共同维护。
NT本身也并非没有历史包袱。部分工程师指出,VMS当年的一致性设计并没有完全无损地传递到现代NT。Windows的注册表长期以来也一直是工程师争议较大的系统组件之一。
另一个争议来自图形系统。Windows NT 4.0时期,微软将Window Manager、GDI以及图形驱动程序移入内核空间,以提升图形性能。这意味着存在严重问题的图形驱动程序可能直接导致整个操作系统崩溃。Windows 2000随后进一步加入Windows Driver Model、即插即用、电源管理、WMI和作业对象等大量机制。
因此,今天Windows 11中的NT内核早已不是1993年NT 3.1刚发布时的那个内核。柯克真正称赞的是NT建立之初的一些基本架构理念,而不是认为现代Windows的所有设计都天然优于Linux。
从历史结果来看,Linux最终在服务器和云计算领域取得了NT没有实现的地位。Linux的开放许可证使任何组织都可以修改内核、运行在各种硬件上,并将改进提交回主线。随后出现的容器、开发工具以及Android等庞大生态,都进一步强化了这种发展模式。而有趣的是,微软近年来反而一直在努力让Windows更好地运行Linux。Windows Subsystem for Linux不断获得性能和网络方面的改进,微软还推出了WSL Containers等功能,让用户可以直接在Windows环境中运行Linux容器。Google也开始为自己的AI工具加入WSL支持。
与此同时,柯克还提到了BSD。她认为,如果今天重新设计操作系统内核,那么除了NT之外,也可能会出现类似BSD的架构。她认为BSD整体结构相对整洁,而且早期就拥有Jails等隔离机制。
FreeBSD Jails可以限制进程看到的文件系统、用户和网络环境,而Capsicum则更加接近柯克所强调的能力模型。进入Capability Mode之后,进程无法随意访问全局命名空间,只能使用通过文件描述符明确授予自己的权限。有意思的是,Capsicum项目当年是在剑桥大学完成的,并获得了Google的研究资助。
从这个角度来看,柯克真正讨论的其实并不是Windows与Linux谁在所有场景下更优秀,而是一个更加基础的问题:操作系统究竟应该如何表示和控制“权限”。
NT的思路是让资源拥有明确类型,将访问权限附加到资源之上,并尽可能由操作系统统一检查和记录。Linux则从更加灵活的Unix基础出发,通过多个可以组合的机制满足不同环境的需要。两种方式都不能单独保证系统安全。而AI代理的出现,正在让这个问题变得更加重要。过去操作系统最重要的问题是确认“哪个用户”正在执行操作;未来则必须进一步回答,一个AI代理可以代表谁、访问哪些资源、拥有多长时间的权限、能够执行什么操作,以及系统能否准确证明它到底做过什么。
Windows NT并没有成为服务器和云计算世界的主导者,这一位置最终由Linux获得。但从NT 3.1问世至今已经超过30年,Windows仍然在使用对象、句柄、访问令牌和ACL等最初设计理念,而微软如今又开始利用这些机制解决AI代理的权限隔离问题。
因此,劳里·柯克设想中的“Open NT”或许永远只会存在于架空历史之中,但随着计算机开始越来越多地替人类主动执行任务,一个越来越现实的问题正在摆在所有操作系统面前:当软件开始代表人类行动时,我们究竟应该允许它走多远。