遨游人世,累文一集
以下的文章中,当我提到GNU/Linux操作系统和种种的FOSS(译者:自由和开源软件)项目时我都会用一个统一的名称Linux来代替,这样看起来好些。
如果你像我一样花些时间在Linux论坛上,那你就会像我一样因为有太多这样的帖子而恼怒:
"嗨!我用了几天Linux,总体还行。但某某功能不能像Windows那样,真糟糕。为什么开发人员不能重写一下让它更像Windows一点?我相信这样做的话Linux的用户会更多!"
你也许尝试过回应这些问题,结果那个Linux新手却和你吵得面红耳赤,他根据自己几年来在另外一个操作系统上和区区几小时在Linux上的经验,得出结论:他的想法是无比睿智的,而你不同意他的观点是因为你是一个从“古董学校”出来的Linux用户,认为GUI是恶魔的产物,所有人都应该强迫去用CLI (译者:命令行界面)。
本文的目的就是向这样的新手解释为什么他们的观点会引发争论而不是受到欢迎。
首先就是这个最常被提起的论断: "如果Linux能这样,那就会有更多的人从Windows转过来!"
这样,让我先解释一下为理解Linux所需的基本常识:Linux社区不会试图去为一般的Windows用户提供一个替代的操作系统。Linux的目标不是“每台机器都装Linux”。
千真万确,真的不是。. 的确,它们都是操作系统,的确,它们都能做相同的事情,但是这让Linux成为一种选择,而不是替代品。这看上去也许算不上什么区别,但实际上却是最最重要的一点。
Linux<=>Windows就如同摩托车<=>小汽车:都是车,能通过公路吧你从甲地送到乙地,但它们有不同的形状、不同的尺寸、不同的操作装置,其基本工作方式也不同。它们是不可以随意互换的。它们有不同的用途、不同的长处和短处,你要挑选一种适合自己的,而不要指望一种可以完全替代另一种。
一个开车的人遇到塞车时,看到摩托车自如在车堆中来回穿梭,他也许会羡慕摩托车所具备的这种能力。如果这个司机接着又说:“我对汽车了如指掌,所以我也一定同样了解摩托车!”,那么他就错了。
这些情况下他都错了,因为他想用摩托车替代汽车,他想让摩托做所有汽车能做的,他以为摩托的工作方式与汽车相同,比汽车缺少的功能只要嫁接上就行了。
同样,一些好心的Linux新手也建议把Linux变成他们所熟悉的样子,结果也因为相同的原因没有任何所获。也许Linux和Windows都可以被用于完成相同的任务,但汽车和摩托也是。这并不意味这你可以直接从一个换到另外一个,也不意味着它们的特性可以相互替换。
太多的人以为从Windows转移到Linux就如同宝马换奔驰一样,认为其控制方式应该相同,他们的经验直接可以派上用场,而两者之间所有的差别也仅仅是表层的。他们想:“在公路上行驶时,我需要汽车,在使用电脑时,我需要操作系统。汽车的工作方式都相同,因此操作系统的工作方式也应该都相同。”但这并不准确。“在公路上行驶时,我需要车,在使用电脑时,我需要操作系统。我知道如何开汽车,但我不懂摩托车。我知道如何使用Windows,但我不懂 Linux。”----这才是准确的。
Windows用户必须意识到他只是一个有经验的Windows用户,而不是有经验的电脑用户,就像汽车司机仅仅是汽车司机,而不是所有种类车辆的司机。Windows用户必须意识到当他在尝试Linux时,他又成为了一个新手,就像汽车司机去尝试开摩托。 Windows必须要愿意去学习完成相同任务所需的不相同的手段,就像汽车司机必须要去适应替代方向盘的手把和他从没戴过的头盔。并且他们要作好心理准备:这些“不同”并不意味着“劣等”。
这个简单的事实给有基础的Windows用户造成了更大的麻烦。他们来用Linux时带着根深蒂固的Windows操作习惯和一种态度:“谢谢,我知道怎么用电脑!”问题是,他们并不知道,他们只知道怎么用Windows。当面对另一种操作系统时,这些高级用户可能会遇到最糟的问题:他们有太多的经验需要遗忘掉。
当一个新手说“我不知道”,接着就开始在论坛上探索、提问时,一个Windows高级用户可能会说:“我知道怎么做,我就这么、这么、这么做,然后……居然不行!愚蠢的系统!”接着他们又说:“如果我这么有知识的都搞不定,那新手就更不要想了,Linux离桌面应用还有十万八千里呢!”他们恐怕没有意识到他们的知识帮了倒忙,使他们比经验少的用户遇到更多的问题。他们错误的以为Linux是一种可以和Windows做相同事情的软件,而事实上是它是一种不同于Windows的软件,做的事也不同。不是Linux做与Windows相同的任务做得不好,而是它很好的完成了一个替代的任务。
Linux是一种可供选择的操作系统,而不是Windows的替代品。它也永远不会取代Windows,因为它们有完全不相容的目标。微软的目标是让他们的软件装到更多的电脑中,赚更多钞票。而Linux不是这样,它是免费的,它的着眼点不同。
要理解这一点就要先理解FOSS 。并不奇怪很多Linux新手现在还不能很好的理解它,他们是新手嘛,他们还是习惯于从私有软件的角度思考。所以让我解释一下:
典型的FOSS软件的作者往往因为对现存软件的不满,于是想到自己来写一个。而他又是个大好人,他把软件源码公之于众之后对大家说:“你们自己折腾吧!”。他可以这样做,因为复制软件没有任何成本,所以把软件贡献给世界也不会比自己留着用多花一分钱。他不会因为把软件送人而感到痛苦。
然而,很重要的一点需要记住的是:他也不会因为送出软件而获利。不论是一人用还是一亿人用,对开发者来说毫无区别。哦,当然,他一定乐意看到自己的产品广受欢迎:用户数是个自我吹嘘的好题材,还能创造记录。但这不会为他带来任何金钱:因为这是FOSS。
如果这个软件有所成功,别人就会对此感兴趣,也愿意帮助改善它。这是FOSS最大的优势:每一个用户都可能是潜在的开发者,每一个人都能参与使软件工作得更好,功能更多,bug更少。如果一个软件能吸引到一大帮开发者那将是非常好的事情。但这仅是对软件本身而言的,它会使软件变得更好,而开发者不会因此致富,只会让他们为此投入更多的时间。
FOSS与如Windows一类的私有软件截然相反:FOSS完全关注于软件本身,而不在意最终用户的数量。软件运行很好,但用户寥寥,这从商业软件的标准来看是失败的,但从FOSS的标准来看却是成功的。
FOSS关注于编写高质量的软件,真正能做事的软件。如果你想使用它,那你就需要投入时间来学习如何使用。FOSS软件是免费供你使用的,为编写它许多人不去计较个人利益,投入了大量的时间 。因此,在你报怨它不能像Windows中相对应软件一样工作之前,至少也应该投入一点时间,算是对软件作者贡献的一种尊敬吧。
“哈哈,现在我抓到你的破绽了,”一个新手自鸣得意的说:“有一些Linux项目的目的就是替代Windows,而不仅是提供一种选择。”
不难看出这种想法从何而来。例如,KDE和Gnome提供了一种不同于Linux传统的窗口管理器和CLI的桌面环境,它们更加类似于Windows。Linspire更一种要把Linux做的完全和Windows一样的Linux发行版。
然而,这些论据更能支持我的观点,而不是那个新手的。
为什么?因为这些都是标准的FOSS项目,都是以把软件做得更好为目的的。唯一的区别就是,在这些项目中品质的定义是“如何让Windows用户使用起来更方便?”
你一旦考虑了这个因素,你就不得不同意这些项目的目标都是改进软件本身,它们都是100%的典型Linux软件。这些项目由那些更加无私的开发人员编写:他们这样做不是为满足自己的需要,因为他们已经太熟悉Linux了。相反,他们是为了使其它人从Windows过渡到Linux更加容易。
这些开发人员知道有一些Windows用户希望转投Linux阵营,于是他们花力气建造一个能让Windows用户感到舒服、熟悉的Linux环境。他们无意去替代Windows,尽管最终的结果给人留下了这样的印象,但他们的最终目的是不一样的:不是制造一个Windows替代品,而是帮助 Windows用户过渡到Linux上。
社区里反对这些项目的声音并不罕见。有些人理由也是合理的(“KDE太吃资源,还是用Fluxbox好”),有些人则抱着一种不够理性的“像Windows样的软件都不好”的态度。事实上这不是反微软或反Windows的态度,而是蛮不讲理的憎恨自己不了解的东西。
典型的Linux用户是一个电脑爱好者:他用电脑因为电脑好玩,编程好玩,hacking(译者:这个词非常难译,没有一个简单的词能够代替,这里主要是指修改软件使之满足自己需求)也好玩。而Linux是hacking爱好者的最爱,他可以把Linux分解到最基本的部分,然后再根据自己需要重新组装起来。
然而,新来的Linux用户很大部分不是电脑爱好着,也不是hacker(译者:修改软件使之满足自己需求的人)。他们只要求电脑能工作,就像Windows那样工作。他们没兴趣去花时间设置Linux,他们希望拿来就能用。
这很好,但在典型的Linux用户看来,这就如同有人想要一辆已经组装好并用胶水粘牢的乐高玩具汽车。这对他们来说实在无法想象:“怎么会有人要这个?”
这的确难以理解。如果你想要一辆做好的汽车模型,那去买一辆玩具车。如果你想要一辆可以自己组装的车,那就买乐高。怎么会有人想要一辆只能当玩具车玩的乐高车呢?乐高的乐趣就在于自己组装啊!
典型的Linux用户也会如此回答那帮问“为什么它就是不能工作呢?”的人:“如果你仅想让电脑工作,用Windows好了,如果你想自己能动手修改,那就用Linux。如果你对开源软件的这些好处毫无兴趣,那你干什么还要转去用Linux呢?”
答案通常是他们根本就不是真心想去用Linux,他们仅仅是想远离Windows:他们希望远离病毒,远离恶意软件,他们希望免除收费软件的限制,不被E.U.L.A.所束缚。他们不是在尝试投入Linux的怀抱,他们只想摆脱Windows。而Linux只是最广为人知的一种选择罢了。
稍后再进一步论述. . .
你可能想:“好吧,这样可以解释为什么开发者不去尽力让他们的软件更像Windows,但是Linux软件也可以在不违反FOSS的原则的前提下拥有有像Windows那样友好的GUI呀。”
有一些理由可以说明为什么不是这样。
首先: 你真的认为写软件的人会故意去弄个很烂的用户界面?
当一个人投入大量个人时间去编写软件时,他总会努力使软件的用户界面(UI)尽可能的好。UI对软件来说太重要了:如果某个功能不能通过UI来访问,那它就根本毫无意义。你也许不知道,但UI成为现在这样不是没有道理的,其原因是那就是软件创造者能做出的最好的UI了。
如果你仍坚持类似Windows的UI使软件更好,请不要忘了这样一个事实:这些软件的作者并不同意你的意见。他们对这些软件的理解肯定比你要深刻得多,也许他们错了,但可能性很小。
第二: 现在已经有很多漂亮的、易于被Windows用户接受的GUI前端。我想不出有什么功能不能通过GUI来控制,不管是多么高级的。你可以编译内核(make xconfig),设置放火墙(fwbuilder),硬盘分区(qtparted)……这些都可以由好看的、交互的、符合直觉的并且用户友好的程序完成。
但是Linux的发布周期与Windows不同,不可能从一开始就有一个精良的GUI界面。GUI只会增加软件的复杂度,而不会给功能带来什么改进。开发者的本意可不是弄个花哨却什么也做不了的GUI,他们创作的是自己需要的软件。
一个软件最先能做的便是在命令行(CLI)方式下使用,它可能包含各式各样的调用选项和长长的配置文件。因为这是实现软件功能所需要的最基本的东西,其它的都可以慢慢完善,即使日后有了漂亮的GUI,但我们仍应当看到:通常它还是完全可以用CLI和配置文件来控制的。
最后,可能会有不同GUI前端能做相同事情,别人无法知道你到底装了哪一种。
所以请记住,当你问“我该怎么弄……?”的时候,大部分情况下别人都会告诉你怎么通过CLI解决。这并不意味着问题只能从CLI解决,而是恰恰反映了在软件发展过程中CLI相对于GUI的重要性。
最后你还需要记住的是:软件的GUI部分经常是分开提供的,甚至有可能是完全不同的开发人员独立开发出来的。所以如果想要GUI,那一点也不奇怪你必须分开安装,而不是一次性装好。
诚然,为了获得Windows式的GUI,分开安装确实增加了额外的步骤,但这不影响这样一个事实:你现在就可以通过“像Windows一样”的GUI做几乎所有事情。请不要忘记GUI通常只是最后一步,Linux绝不会只图外表而不重内涵的。
第三: Linux是特别设计给知识丰富的老手使用的,而不是无知的新手。有两个原因:
第四: 从上面的文字中,你觉得FOSS有可能通过吸引典型的Windows用户而获得任何好处吗?
不急,你可以重新看一遍,我等着。
Linux和FOSS的指导原则是“做好的软件”,并非“做Windows的替代品”。一群典型的Windows用户对Linux的唯一贡献就是报怨。他们报怨什么?“它工作得不像是在Windows上那样。”
不,它不像。如果Linux工作得就和Windows一样,那就太烂了,它将会是一个没人要的劣质品。人们如此热烈的喜爱Linux正是因为它不像Windows,它不会替你做每件事,它不会假设你永远是个无知的新手,它不会所有把内部的工作都隐藏起来。
Windows是载着你四处跑的司机;Linux则给了你钥匙并让你坐上驾驶座。如果你不会开车,那是你的问题、你自己的错。只要你肯问,很多人都会帮助你。如果你提建议类似于装备定速巡航系统,你定是有所领悟:汽车还是自己控制在自己手上,只不过可以省不少力气。但是如果你尝试去劝说别人Linux真的真的需要一个司机,那你真该忏悔一下。
“但这将使Linux更加主流啊!”,新手叫到。
也许是这样。但是Linux成为主流,开发者们又能从中得到什么好处呢?Linux是免费的,就算Linux获得了更大的用户群,Linux的创造者们不会因此多赚钱,Linux论坛上的人们也不会由此获利。Linux的目标不是“获得更大用户群”──那是私有软件的目标。
Linux的目标是创造真正好用的操作系统。开发者们一直都在忙于增加功能、减少bug和改进现有的代码,他们可没有闲功夫去举着广告牌宣传他们的东西有多好。你不难发现在他们眼中什么才是最重要的。
有意思的是这样的模式使Linux的用户群不断增长,Linux开始很渺小,后来却非常巨大。什么原因使Linux得到如此广泛的认同?原因是它一直将质量视为焦点。用户被Linux自由和质量所吸引,而这只有FOSS能够提供。Linux能够发展壮大正是因为它并不在乎自己有多大。开发者们仅仅关注如何使它工作得更好,于是他们吸引了那些想要一个能工作得更好的操作系统的用户。
如果突然把这一切都抛弃,相反让Linux去关注如何替代Windows,那就等于抹杀了Linux赖以成功的要素。有些公司已经看到了Linux成长潜力,希望从中掘出宝藏。但GPL成为了他们的障碍,他们无法把Linux买出Microsoft的价。“Linux如果还坚持开源的话那肯定长不了,”他们说,“因为没人能这样赚钱的。”
他们没有意识到把Linux变为私有软件是杀鸡取卵的短视行为。正因为Linux是FOSS,也没有人想用它去替代Windows,Linux才能发展到今天的规模。Linux繁荣的原因恰恰在于它在与Windows的竞争中选择了一条Microsoft永远无法对抗的阵线:开放和质量。
对于大多数Windows来说,Linux只是一个劣质的Windows摹仿品,它看上去功能不够丰富、集成度差还特别复杂。对于这些用户来说, Linux是个很差的操作系统。的确是这样:Linux没有满足他们的需求。他们需要的是一个简单易用的操作系统,不用任何学习就能上手。
Windows是设计给非技术人员使用的,他们普遍感到Linux很难用。尽管情况不是这样,但这种误解还是可以理解的。
事实上Linux很容易使用,真的非常非常易用。那为什么他们都不这么看呢?因为“易用”一词含义被严重的扭曲了,“易用”现在被理解为“在没有预先学习的情况下用起来也很容易”。但那真的不是“易用”的含义,而是“易懂”。其区别就如同:
和
开车锁相比要容易得多,对吧?只要靠近汽车,一个按钮就能搞定,不像保险箱还得精确的来回转动播盘。然而,对于两种锁都不会开的人来说开保险箱锁要比开车锁容易:保险箱上写有清楚的打开方法,而开车门的按钮甚至都没有装在车上。
会者不难。Linux也是这样,它很易用,但是学起来辛苦,只有当你愿意投入时间去学习Linux时你才能发现它为什么简单。不可避免,你越是把任务分解为简单的步骤,完成这个任务所需的步骤就越多。
让我随便来举一个简单的例子:把文本中的五行(段)从中间移到尾部。
如果用微软的Word、写字板、记事本等等“用户友好”的Windows文本编辑器,最快的办法是: - Ctrl-Shift-Down - Ctrl-Shift-Down - Ctrl-Shift-Down - Ctrl-Shift-Down - Ctrl-Shift-Down - Ctrl-X - Ctrl-End - Ctrl-V
(这里假设你使用键盘操作。不然,你需要好几步鼠标托拽操作和可靠的自动滚屏。)
在vi里只需如此: - d5d - Shift-g - p
论“用户友好”性,vi可谓要多差有多差,但它完成同一操作所需的击键次数却比微软的软件少。为什么?因为Vi注重于功能,而微软更注重“用户友好”。微软把所有事情都分解为简单步骤,所以完成同样的任务要花多得多的步骤。
这使得不论是什么样的文本编辑任务,一旦你学会使用,相比之下vi都更加高效、易用。如果你不知道“d5d”的意思是“将五行文本放入缓冲,然后将其从文档中删除”,那么可能你用起vi来就会感到很痛苦。但如果你已经知道了,那用它起来就是随心所欲了。
所以当一个新手看到有经验的vi用户可以如此快速、方便的做事时,他自然会很容易得出结论:编辑文本,vi要比Word强。然后他自己去尝试,运行vi,看到的是满屏的~s,打字,什么反应也没有。
后来他弄明白了文字录入和命令模式,接着就想用vi做事。然而对vi过于有限的知识依旧使他步履维艰,在他能真正掌握vi之前还有太多的东西要去学习。然后他开始报怨:“vi如果能像Word那样易用就好了。”
但实际的问题是:“我不知道怎么用vi,学起来太麻烦了。”这是他自己的问题,他在指责自己的问题而不是软件的。 有成千上万的人乐意于使用vi,他们从没报怨过说:它太难用了,必须改!
请相信我,如果他能写出一个软件既像Word那样“用户友好”又像vi那样功能强大,那他一定能赢得无数掌声。事实上,他应该还能赢得诺贝尔极度智慧奖,因为目前还根本没有其它人能做到这一点。但他如果仅仅是诉苦vi太难用,那只会遭到嘲笑,因为vi没问题,问题在他自己。
这就像买了达芬奇的画笔然后报怨自己还是不会画画。画家的技巧才是成就名作的关键,画笔本身创作不了蒙娜丽莎,它只是一个依赖使用者技巧的工具。而这种技巧必须通过练习才能获得。
vi正是如此,很多Linux软件也一样。一些新手总是报怨这些文本编辑器、包管理器或者命令行本身太复杂、太不够直观。
在你坚持Linux某些东西必须修改之前,请问自己这样一个问题:“那些老手们是不是也有同样的意见呢?”
如果答案是“不”,那问题在你自己这一边。如果其它人都能很好的使用,你为什么就不行呢?你有没有花时间去学呢?或者你是否打心底里就没有想去尝试呢?
“用户友好”和“底层的功能性”常常是矛盾的。那些小按钮和下拉菜单确实能使软件变得易于使用,但对有经验的用户来说它们却可能是麻烦。这就如同拿着地图和指南针从A走到B,与看着路标走的区别一样:谁都会跟者路标走,但这会比知道如何直接过去的人多走一倍的距离。
(译者:蓝色线条:“简单”路径;红色线条:直接路径)
如果我想在Excel中粘贴公式的值,我只能通过菜单选择:编辑->选择性粘贴->粘贴数值。我不想在这些“友好”的菜单、子菜单和对话框中选来选去,我就想直接完成。老实说,如果重设快捷键,再记录一些宏,我完全可以通过键盘来指挥Excel和Word做绝大部分的事。
但这就不是用户友好了,对不对?它还是需要用户投入大量时间来研究这个软件。Linux要求你花时间学习如何使用现成的功能,而“用户友好”的软件却要你花时间自己创造功能。
如果你喜欢这样,没问题,你就这样做好了。只是你应当看到:问题出在你自己的知识水平上,而不是软件本身。一旦知道如何使用,所有的Linux软件都超级好用。但如果你不知道,那它就显得很难使,这并不是软件的错。
现在也许你开始觉得Linux有点态度问题。它不想要用户,它不想让自己的用户感到方便……它只是给那些自命不凡的l33t h4xx0r5用的!(译者:l33t h4xx0r5又可写作leet haxxors,指不受电脑系统权限所约束、对自己的电脑技巧极有自信的人,通常指黑客)
这完全脱离事实。Linux当然想要用户,它当然不想让事情变得困难。正相反:按照Linux的定义,难用的软件就是垃圾软件。
但是你要知道,它的定义可能和你的不同,也和“传统”的私有软件的定义不同。
Linux想要那些真正需要Linux的用户。这不仅是说需要一个名头,而是所有的东西:自由、开源的软件;自己修补软件的能力;坐上驾驶座的感觉,一切尽在掌握。
这才是Linux,这才是Linux关注的。人们因为讨厌病毒、讨厌蓝屏、讨厌间谍软件而转去用Linux也是可以理解的。但这些人并不需要Linux,他们只想要一个没有那么多毛病的Windows。他们不要Linux,那Linux凭什么一定要他们呢?
但如果他们因为病毒和间谍软件而去尝试Linux,然后慢慢接受了Linux的理念并开始被Linux自身的特点所吸引,继而想要使用它,此时Linux也想要他们。
在你决定转而使用Linux之前,问问自己“我为什么要转?”
如果答案是“我想要一个能赋予用户所有的权力操作系统,我明白它要求用户必须学习使用。”:那就选Linux。也许你要付出很多时间和努力才能达到你想要的高度,但最终你能得到一台完全按照你的想法工作的电脑。
但是. . .
如果答案是“我想要个没那些毛病的Windows”:那么安装一套干净的Windows XP SP2;设好防火墙;安好杀毒软件;永远不要用IE浏览网页;经常更新;每次装完软件都重启;还要多了解安全方面的知识。我自己从Windows 3.1用到95、98、NT和XP,从来没有中过病毒和间谍软件,也没被黑过。Windows可以很安全、很稳定,但是只有你花力气维护它才行。
如果答案是“我想要个没毛病的Windows替代品”:那买一台苹果Mac。我听说OS X的Tiger版很棒,苹果机器的外观也很漂亮。也许你为此要花钱买一台新的机器,但你能获得你想要的东西。
这两种情况下,都不要去尝试使用Linux。你会对Linux的软件和社区感到失望的。Linux不是Windows。
Powered by: IT博客 Copyright © xlmo