个人工具

Linux不是Windows/zh

来自Ubuntu中文

Zeax讨论 | 贡献2007年5月26日 (六) 19:45的版本

跳转至: 导航, 搜索


在这篇文章中,我将用"Linux"表示GNU/Linux操作系统和各种FOSS(译注:自由、开源的软件,Free / Open Source Software)项目,这样读起来会顺畅些。

Tux.png != Windows.png
(Linux不是Windows)

Derived works

如果你被跳转到了这个页面,那么很有可能你是一个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功能,搜索条只能通过第三方扩展实现,它的查找对话框还得通过点击 "确认"按钮开始查找,而且还要再点击一次"确认"才能清除"未发现" 的错误提示。它明白无疑地证明了一个开源应用程序通过“不同”而做到了“更好”,依靠“更好”进而取得了成功。如果FF是一个IE的克隆,它必然早已微不足道地消逝在了IE的阴影之下。如果Linux 是一个Windows的克隆,同样的事情也会发生在Linux身上。

因此,解决这个问题的方案在于:记住Linux 中那些对于你的使用习惯来说熟悉或相同的部分,Linux 不是 新版的 或 改进版的Windows。 积极地迎接那些不同之处,因为只有不同,Linux才真正拥有闪耀出其光彩的机会。

问题二 : Linux和Windows 不一样了

接下来的一个问题是当人们能够预期Linux的不同时,却发现有一些差异实在是太激进以至超过了他们的喜好程度。也许最典型的例子就是可供linux用户的选择实在是太多了。一个初用的Windows用户有一个经典或XP风格的桌面,并且已经安装有一个写字板程序,Internet Explorer浏览器,Outlook Express程序,然而一个初用Linux的用户却有上百种发行版可以选择,于是就有Gnome或者KDE或者Fluxbox或者什么的桌面,Vi或者emacs或者kate什么的文字处理软件,Konqueror或者Opera或者Firefox或者Mozilla浏览器,如此等等不一而足。

windows用户不曾为了得到和运行(一个OS)而作出过如此丰富的选择, "有必要有那么多种选项吗?" 这样的恼火帖子很常见。

Linux真的和Windows有那么大的区别吗?不管怎么说,它们都是操作系统。它们都做同样的工作:操作你的计算机,让你有个东西运行你的应用程序,自然它们多少都有些共通的地方吧?

让我们从这个角度看问题:出门看看路上行驶的各种不同的车辆。所有的车辆不管是什么样的设计多少都有同样的目的:从路上把你由A处运到B处。注意它们有不同的设计。

但是你会想,汽车之间的差异非常小:它们都有方向盘,脚踏板,变速杆,手闸,车窗和车门,油箱……如果你能够开这部车,你就能开任何一部车!

确实如此。但是你没看见过有些人不开汽车,取而代之他们骑摩托车?

从一个版本的windows切换到另一个版本就像从一辆汽车换到另外一辆汽车。Win95到Win98,老实说我说不出什么区别。Win98到WinXp,区别比较大但是也没有什么真正的重大区别。

但是从windows切换到Linux就象从开汽车切换到骑摩托车。他们都是操作系统/道路车辆. 他们可能都使用同样的 硬件/道路. 他们可能都 提供一个运行应用程序的环境/把你从A处运到B处.但是他们从本质上使用不同的方法达到这样的目的。

Windows/汽车对于病毒/小偷并不安全,除非你安装反病毒软件/锁上车门. Linux/摩托车却没有病毒/车门,所以即使你没有安装反病毒软件/锁车门.

也非常安全。

让我们反过来看一看:

Linux/汽车 从根本上用于多用户/乘客. Windows/摩托车 用于单 用户/乘客. 每个 Windows 用户/摩托车驾驶员 每时每刻都要习惯集中精力控制他的 计算机/车辆 . 而一个 Linux 用户/汽车乘客 只要在以根用户登录/坐在驾驶座上时才要习惯去控制他的 计算机/车辆.

Two different approaches to fulfilling the same goal. They differ in fundamental ways. They have different strengths and weaknesses: A car is the clear winner at transporting a family & a lot of cargo from A to B: More seats & more storage space. A motorbike is the clear winner at getting one person from A to B: Less affected by congestion and uses less fuel.

There are many things that don't change when you switch between cars and motorbikes: You still have to put petrol in the tank, you still have to drive on the same roads, you still have to obey the traffic lights and Stop signs, you still have to indicate before turning, you still have to obey the same speed limits.

But there are also many things that do change: Car drivers don't have to wear crash helmets, motorbike drivers don't have to put on a seatbelt. Car drivers have to turn the steering wheel to get around a corner, motorbike drivers have to lean over. Car drivers accelerate by pushing a foot-pedal, motorbike drivers accelerate by twisting a hand control.

A motorbike driver who tries to corner a car by leaning over is going to run into problems very quickly. And Windows users who try to use their existing skills and habits generally also find themselves having many issues. In fact, Windows "Power Users" frequently have more problems with Linux than people with little or no computer experience, for this very reason. Typically, the most vehement "Linux is not ready for the desktop yet" arguments come from ingrained Windows users who reason that if they couldn't make the switch, a less-experienced user has no chance. But this is the exact opposite of the truth.

So, to avoid problem

  1. 2: Don't assume that being a knowledgeable Windows user means you're a
knowledgeable Linux user: When you first start with Linux, you are a novice.

问题三: 文化冲击

Subproblem #3a: There is a culture

Windows users are more or less in a customer-supplier relationship: They pay for software, for warranties, for support, and so on. They expect software to have a certain level of usability. They are therefore used to having rights with their software: They have paid for technical support and have every right to demand that they receive it. They are also used to dealing with entities rather than people: Their contracts are with a company, not with a person.

Linux users are in more of a community. They don't have to buy the software, they don't have to pay for technical support. They download software for free & use Instant Messaging and web-based forums to get help. They deal with people, not corporations.

A Windows user will not endear himself by bringing his habitual attitudes over to Linux, to put it mildly.

The biggest cause of friction tends to be in the online interactions: A "3a" user new to Linux asks for help with a problem he's having. When he doesn't get that help at what he considers an acceptable rate, he starts complaining and demanding more help. Because that's what he's used to doing with paid-for tech support. The problem is that this isn't paid-for support. This is a bunch of volunteers who are willing to help people with problems out of the goodness of their hearts. The new user has no right to demand anything from them, any more than somebody collecting for charity can demand larger donations from contributors.

In much the same way, a Windows user is used to using commercial software. Companies don't release software until it's reliable, functional, and user-friendly enough. So this is what a Windows user tends to expect from software: It starts at version 1.0. Linux software, however, tends to get released almost as soon as it's written: It starts at version 0.1. This way, people who really need the functionality can get it ASAP; interested developers can get involved in helping improve the code; and the community as a whole stays aware of what's going on.

If a "3a" user runs into trouble with Linux, he'll complain: The software hasn't met his standards, and he thinks he has a right to expect that standard. His mood won't be improved when he gets sarcastic replies like "I'd demand a refund if I were you"

So, to avoid problem

  1. 3a: Simply remember that you haven't paid the developer who wrote the
software or the people online who provide the tech support. They don't owe you anything.

3.其他问题:这是一种文化

WINDOWS用户或多或少的处在一种消费者和提供者的关系,他们花钱买软件,获得授权,得到支持等等.他们希望软件能够有明确的可用性.因此他们习惯得到使用软件的权利,他们花钱去得到技术上的支持以及他们需要的权利,他们也得到了.他们也经常要与一些实体打交道:例如他们与一家公司签一份合同,而不是个人.


LINUX用户有着更多的一致性.他们不需要花钱去买软件,不需要为得到技术上的支持而耗费财力.他们免费下载软件,并且利用快速通信和到论坛去寻求帮助.他们和个人打交道,而不是公司.


一个Windows的用户如果只是把他的观点带到Linux中,那么他是不会喜欢上Linux的.要慢慢的改变观点.


引起矛盾的最大原因是在在线交流方面:一个刚刚用Linux的3a用户在遇到问题时寻求帮助,当他没有得到他可以接受的答案的时候,他便开始抱怨并且想要得到更多的帮助.因为这正是他以前用付费的来获得帮助的方式.问题就是这不是付费提供帮助的系统.而是很多热心人发自内心的帮助其他人解决问题的系统.一个新的用户没有任何权利去向这些热心人索要帮助,这就如同一个想要得到施舍的人,还要求从捐赠者那里获得更多的捐赠品一样.


相同的,一个Windows用户习惯了使用商业软件. 这些软件在没有做到足够的可靠性,功能性和对用户友好的截面前,公司是不会开放代码的.这正是Windows用户期待Linux下的软件的原因,从Linux1.0版本的软件开始,用户就希望尽快得到开放的代码.这样,真正需要这些的人就会很快的得到它,并且这也使开发者会在提高代码这方面感兴趣,因此整个团体就会知道接下来要做什么了.


如果一个3a用户在使用Linux时遇到了困难,他会抱怨:这个软件没能满足我的需求.并且他认为他有权利得到这样的满足.他的情绪将会有所改进,如果他等到这样的带有讽刺性的回答:如果我是你,我要求退款!


所以,对于3a用户,为了避免这些问题,应做到:只要记住,你并没有付给那些软件开发者或者在线帮你提供技术指导的人任何钱.他们并不欠你任何东西.

Subproblem #3b: New vs. Old

 Linux pretty much started out life as a hacker's hobby. It grew as it attracted more hobbyist hackers. It was quite some time before anybody but a geek stood a chance of getting a useable Linux installation working easily. Linux started out "By geeks, for geeks." And even today, the majority of established Linux users are self-confessed geeks.

And that's a pretty good thing: If you've got a problem with hardware or software, having a large number of geeks available to work on the solution is a definite plus. 

But Linux has grown up quite a bit since its early days. There are distros that almost anybody can install, even distros that live on CDs and detect all your hardware for you without any intervention. It's become attractive to non-hobbyist users who are just interested in it because it's virus-free and cheap to upgrade. It's not uncommon for there to be friction between the two camps. It's important to bear in mind, however, that there's no real malice on either side: It's lack of understanding that causes the problems.

Firstly, you get the hard-core geeks who still assume that everybody using Linux is a fellow geek. This means they expect a high level of knowledge, and often leads to accusations of arrogance, elitism, and rudeness. And in truth, sometimes that's what it is. But quite often, it's not: It's elitist to say "Everybody ought to know this". It's not elitist to say "Everybody knows this" - quite the opposite. 

Secondly, you get the new users who're trying to make the switch after a lifetime of using commercial OSes. These users are used to software that anybody can sit down & use, out-of-the-box.

The issues arise because group 1 is made up of people who enjoy being able to tear their OS apart and rebuild it the way they like it, while group 2 tends to be indifferent to the way the OS works, so long as it does work.

A parallel situation that can emphasize the problems is Lego. Picture the following:

New: I wanted a new toy car, and everybody's raving about how great Lego cars can be. So I bought some Lego, but when I got home, I just had a load of bricks and cogs and stuff in the box. Where's my car??

Old: You have to build the car out of the bricks. That's the whole point of Lego.

New: What?? I don't know how to build a car. I'm not a mechanic. How am I supposed to know how to put it all together??

Old: There's a leaflet that came in the box. It tells you exactly how to put the bricks together to get a toy car. You don't need to know how, you just need to follow the instructions.

New: Okay, I found the instructions. It's going to take me hours! Why can't they just sell it as a toy car, instead of making you have to build it??

Old: Because not everybody wants to make a toy car with Lego. It can be made into anything we like. That's the whole point.

New: I still don't see why they can't supply it as a car so people who want a car have got one, and other people can take it apart if they want to. Anyway, I finally got it put together, but some bits come off occasionally. What do I do about this? Can I glue it?

Old: It's Lego. It's designed to come apart. That's the whole point.

New: But I don't want it to come apart. I just want a toy car!

Old: Then why on Earth did you buy a box of Lego??

It's clear to just about anybody that Lego is not really aimed at people who just want a toy car. You don't get conversations like the above in real life. The whole point of Lego is that you have fun building it and you can make anything you like with it. If you've no interest in building anything, Lego's not for you. This is quite obvious.

As far as the long-time Linux user is concerned, the same holds true for Linux: It's an open-source, fully-customizeable set of software. That's the whole point. If you don't want to hack the components a bit, why bother to use it?

But there's been a lot of effort lately to make Linux more suitable for the non-hackers, a situation that's not a million miles away from selling pre-assembled Lego kits, in order to make it appeal to a wider audience. Hence you get conversations that aren't far away from the ones above: Newcomers complain about the existence of what the established users consider to be fundamental features, and resent having the read a manual to get something working.  But complaining that there are too many distros; or that software has too many configuration options; or that it doesn't work perfectly out-of-the-box; is like complaining that Lego can be made into too many models, and not liking the fact that it can be broken down into bricks and built into many other things.

So, to avoid problem #3b: Just remember that what Linux seems to be now is not what Linux was in the past. The largest and most necessary part of the Linux community, the hackers and the developers, like Linux because they can fit it together the way they like; they don't like it in spite of having to do all the assembly before they can use it.

子问题 #3b:新用户 vs. 老用户

Linux几乎是因黑客的业余爱好而诞生的。它的成长也使得易于它吸引了更多志同道合的黑客们。Linux在获得一个易于使用的可用安装程序前一直默默无闻。在相当长的时间里,它在大众眼中只是一个奇客而已。可以说Linux“始于奇客,馈于奇客”。直至今日,大多数Linux的老用户仍自认为是奇客。

这是件非常好的事情:如果你在硬件或软件方面有问题,存在一大群奇客们不断探寻解决方案这个状况显然一种明显的优势。

但长久以来Linux的成长仍旧十分有限。尽管存在一些可以被绝大多数安装的发行版本,甚至一些版本基于CD并且与用户使用的硬件并无冲突。当Linux开始因其无病毒和省级廉价而吸引一些非发烧友用户时,两大用户阵营间并不是罕有摩擦,但双方都明了一点:对方都没有恶意,仅仅是缺乏相互理解而已。

首先,你面临的是核心奇客们仍然假设所有使用Linux的用户们都是奇客同志。这意味着他们认为所有人都对此有很深入的理解,这导致了他人控诉他们的一些行为是傲慢、自大和无礼的。事实上,有些时候如此。但大多时候却并非这样:“每个人都应知道”这样的善意表达被说成了“地球人都知道!”——大相径庭。

其次,你面临着从使用的商用操作系统转投而来的新用户。这些用户已习惯使用人机界面友善的软件,他们也是不确定因素。

这类问题起因于不同使用习惯的碰撞:第一类人沉醉于不断地按自己喜好重构系统,而第二类人对操作系统如何工作漠不关心,只要它能工作就好。

在乐高(Lego)发生的类似的情况正好阐述这种问题。试想下面的情景:

新用户(以下简称“新”):我想要一个新玩具汽车,每个人都因乐高汽车的优秀而着了迷。所以我也买了它,但当我到家后我才发现,我的盒子里只有积木和齿轮!我的车子在哪里?

老用户(以下简称“老”):我要用造车而且要超脱于积木之外,这才是乐高的真谛。

新:什么??我不知道应怎样拼装这个车子。我不是个机械师。为什么我应该知道如何组装它?

老:盒子里有使用手册。它上面写着拼装车子的步骤。你不用知道原理,只要按照按部就班就好。

新:好吧,我找到了步骤。这将占用我很多时间!为什么厂家不能装好了再卖给我,还得让我自己动手??

老:并不是所有人都满足于将乐高做成玩具车。这些积木可以被我们组成万物。这才是游戏的真谛。

新:我仍旧不明白为什么厂商不能给我们这种想要车子的人一个成品,如果那些喜欢动手的人高兴可以自己拆了它阿。无论如何,我还是将它组装起来了,尽管某些部件时不时地掉下来。我有什么方法可以解决吗?我能将它们粘起来吗?

老:这就是乐高。他就是用来拆装的。这才使游戏的真谛。

新:但我不希望总是拆拆装装,我仅仅希望一个玩具车而已!

老:呃,欢迎您到地球来。你买的是乐高吗?

很明显,对那些只想要一个玩具车的人来说,乐高并不是为他们准备的。上面的情景应该不会发生在你的生活中。乐高的价值在于你可以建造过程中体会乐趣而且你也可以将它组装成任何你想要的东西。如果你不想动手拼装,只能说乐高不适合你。这显而易见。

由于长久以来一直关注Linux的老用户,同样的问题在Linux上体现越发明显:它是开源的、完全可定制的软件集。这才是真谛。如果你不想修改一些组件,为什么自找麻烦来使用它呢?

与乐高出售成品玩具的做法略有相似,通过最近的一系列的成果提升了非黑客用户使用Linux的舒适性,这使得更广大的用户可以使用Linux。也正因如此,你仍可以听到与上面相似的对话,程度也仅是略有不同。新用户抱怨老用户只考虑基本特性,他们不得不通过阅读手册才能实现一些功能。对太多发行版本的抱怨,对软件过多配置选项的抱怨和对运行时时常报错的抱怨不正如对乐高有太多模块的抱怨一样忽略了它可以被用来按你想发拆装成事实吗?

因此,为了避免问题#3b:请铭记现在的Linux已今非昔比。Linux社区最大的也是最关键的组成部分——黑客和开发者们,他们因Linux的可以按需定制而欢喜;他们也会可制定能力的丧失因而神伤。

注: 奇客:geek,词典中解释为因穿着不时尚和不懂得如何在社会中行事而作出一些怪事的人。现在指那些可以在电子和虚拟世界中非常有才华和想象力的发烧友。Geek宗教一般信仰科技或者颠覆科技。--chronmancer

Problem #4: Designed for the designer

In the car industry, you'll very rarely find that the person who designed the engine also designed the car interior: It calls for totally different skills. Nobody wants an engine that only looks like it can go fast, and nobody wants an interior that works superbly but is cramped and ugly. And in the same way, in the software industry, the user interface (UI) is not usually created by the people who wrote the software.

In the Linux world, however, this is not so much the case: Projects frequently start out as one man's toy. He does everything himself, and therefore the interface has no need of any kind of "user friendly" features: The user knows everything there is to know about the software, he doesn't need help. Vi is a good example of software deliberately created for a user who already knows how it works: It's not unheard of for new users to reboot their computers because they couldn't figure out how else to get out of vi.

However, there is an important difference between a FOSS programmer and most commercial software writers: The software a FOSS programmer creates is software that he intends to use. So whilst the end result might not be as 'comfortable' for the novice user, they can draw some comfort in knowing that the software is designed by somebody who knows what the end-users needs are: He too is an end-user. This is very different from commercial software writers, who are making software for other people to use: They are not knowledgeable end-users.

So whilst vi has an interface that is hideously unfriendly to new users, it is still in use today because it is such a superb interface once you know how it works. Firefox was created by people who regularly browse the Web. The Gimp was built by people who use it to manipulate graphics files. And so on.

So Linux interfaces are frequently a bit of a minefield for the novice: Despite its popularity, vi should never be considered by a new user who just wants to quickly make a few changes to a file. And if you're using software early in its lifecycle, a polished, user-friendly interface is something you're likely to find only in the "ToDo" list: Functionality comes first. Nobody designs a killer interface and then tries to add functionality bit by bit. They create functionality, and then improve the interface bit by bit.

So to avoid #4 issues: Look for software that's specifically aimed at being easy for new users to use, or accept that some software that has a steeper learning curve than you're used to. To complain that vi isn't friendly enough for new users is to be laughed at for missing the point.

问题 #4 为设计者而设计

在汽车工业中,你很难发现一个人即设计车辆引擎也设计车辆内饰:这些是完全不同的技能。没有人想要只是看起来可以跑得很快的引擎,同样也没有人想要一个做工出众但狭小且肮脏的内饰。基于同样的道理,在软件产业,用户界面(UI)往往不是由软件编程人员设计的。

但在Linux的世界却大不相同:一个项目往往是因个人的兴趣而产生。个人也包办了所有的工作,因此这些项目的界面往往缺乏了“用户友好”的特性:用户对这个软件了如指掌,所以他也就不需要了帮助文件等。vi就是一个很好的例子,最初它的目标用户就是为那些了解它工作方式的人。因而设计者从来都没有想过如何用其他方式退出vi,所以新用户不得不靠重起计算机推出的事情时有发生。

但是,FOSS程序员与商用软件程序员的一个最重大区别在于,FOSS程序员的作品都是他们自己想要使用的东西。因此当作品不能被新用户“舒适”的使用的同时,它又成为了最终用户最需要的东西:因为作者也是最终用的一员。商用软件的程序员却大不相同,他们总是为其他人编写软件,而且这些用户都不是专家。

所尽管vi拥有拥有一个令新手望而生畏的界面,但它仍然在当今流行,这又归功于他的界面:当你熟悉后就会发现它原来无比强大。Firefox也是被经常浏览网页的人编写出来的。Gimp同样是出自经常处理图形文件的人之手。不胜枚举。

Linux的界面队新手而言同样的有些“危险”。尽管vi名声在外,但他仍然不在那些需要快速修改一些文件的新手的考虑之列。如果你在一个软件生命周期的早期使用它,光鲜亮丽且友善的用户界面永远只高挂在“计划”列表之上:功能优先。没有人先雇好装修队再去找楼盘,程序员们都是实现功能再不断改进界面。

所以为了避免问题#4:寻找那些已便于上手为目的设计的软件,或者接受那些与你使用习惯急剧不同的软件。抱怨vi对新手不够友好只是舍本求末罢了。

Problem #5: The myth of "user-friendly"

This is a big one. It's a very big term in the computing world, "user-friendly". It's even the name of a particularly good webcomic. But it's a bad term.

The basic concept is good: That software be designed with the needs of the user in mind. But it's always addressed as a single concept, which it isn't. 

If you spend your entire life processing text files, your ideal software will be fast and powerful, enabling you to do the maximum amount of work for the minimum amount of effort. Simple keyboard shortcuts and mouseless operation will be of vital importance.

But if you very rarely edit text files, and you just want to write an occasional letter, the last thing you want is to struggle with learning keyboard shortcuts. Well-organized menus and clear icons in toolbars will be your ideal. 

Clearly, software designed around the needs of the first user will not be suitable for the second, and vice versa. So how can any software be called "user-friendly", if we all have different needs?

The simple answer: User-friendly is a misnomer, and one that makes a complex situation seem simple.

What does "user-friendly" really mean? Well, in the context in which it is used, "user friendly" software means "Software that can be used to a reasonable level of competence by a user with no previous experience of the software." This has the unfortunate effect of making lousy-but-familiar interfaces fall into the category of "user-friendly". 

"用户友好"的神话

Subproblem #5a: Familiar is friendly

So it is that in most "user-friendly" text editors & word processors, you Cut and Paste by using Ctrl-X and Ctrl-V. Totally unintuitive, but everybody's used to these combinations, so they count as a "friendly" combination.

So when somebody comes to vi and finds that it's "d" to cut, and "p" to paste, it's not considered friendly: It's not what anybody is used to.

Is it superior? Well, actually, yes. 

With the Ctrl-X approach, how do you cut a word from the document you're currently in? (No using the mouse!)

From the start of the word, Ctrl-Shift-Right to select the word. 
Then Ctrl-X to cut it.

The vi approach? dw deletes the word.

How about cutting five words with a Ctrl-X application?

From the start of the words, Ctrl-Shift-Right
Ctrl-Shift-Right
Ctrl-Shift-Right
Ctrl-Shift-Right

Ctrl-Shift-Right
Ctrl-X

And with vi?

d5w

The vi approach is far more versatile and actually more intuitive: "X" and "V" are not obvious or memorable "Cut" and "Paste" commands, whereas "dw" to delete a word, and "p" to put it back is perfectly straightforward. But "X" and "V" are what we all know, so whilst vi is clearly superior, it's unfamiliar. Ergo, it is considered unfriendly. On no other basis, pure familiarity makes a Windows-like interface seem friendly. And as we learned in problem #1, Linux is necessarily different to Windows. Inescapably, Linux always appears less "user-friendly" than Windows. 

To avoid #5a problems, all you can really do is try and remember that "user-friendly" doesn't mean "What I'm used to": Try doing things your usual way, and if it doesn't work, try and work out what a total novice would do. 

Subproblem #5b: Inefficient is friendly

This is a sad but inescapable fact. Paradoxically, the harder you make it to access an application's functionality, the friendlier it can seem to be. 

This is because friendliness is added to an interface by using simple, visible 'clues' - the more, the better. After all, if a complete novice to computers is put in front of a WYSIWYG word processor and asked to make a bit of text bold, which is more likely:

  • He'll guess that "Ctrl-B" is the usual standard 
  • He'll look for clues, and try clicking on the "Edit" menu. Unsuccessful, he'll try the next likely one along the row of menus: "Format". The new menu has a "Font" option, which seems promising. And Hey! There's our "Bold" option. Success!

Next time you do any processing, try doing every job via the menus: No shortcut keys, and no toolbar icons. Menus all the way. You'll find you slow to a crawl, as every task suddenly demands a multitude of keystrokes/mouseclicks.

Making software "user-friendly" in this fashion is like putting training wheels on a bicycle: It lets you get up & running immediately, without any skill or experience needed. It's perfect for a beginner. But nobody out there thinks that all bicycles should be sold with training wheels: If you were given such a bicycle today, I'll wager the first thing you'd do is remove them for being unnecessary encumbrances: Once you know how to ride a bike, training wheels are unnecessary.

And in the same way, a great deal of Linux software is designed without "training wheels" - it's designed for users who already have some basic skills in place. After all, nobody's a permanent novice: Ignorance is short-lived, and knowledge is forever. So the software is designed with the majority in mind. 

This might seem an excuse: After all, MS Word has all the friendly menus, and it has toolbar buttons, and it has shortcut keys. . . Best of all worlds, surely? Friendly and efficient.

However, this has to be put into perspective: Firstly, the practicalities: having menus and toolbars and shortcuts and all would mean a lot of coding, and it's not like Linux developers all get paid for their time. Secondly, it still doesn't really take into account serious power-users: Very few professional wordsmiths use MS Word. Ever meet a coder who used MS Word? Compare that to how many use emacs & vi. 

Why is this? Firstly, because some "friendly" behaviour rules out efficient behaviour: See the "Cut&Copy" example above. And secondly, because most of Word's functionality is buried in menus that you have to use: Only the most common functionality has those handy little buttons in toolbars at the top. The less-used functions that are still vital for serious users just take too long to access.

Something to bear in mind, however, is that "training wheels" are often available as "optional extras" for Linux software: They might not be obvious, but frequently they're available.

Take mplayer. You use it to play a video file by typing mplayer filename in a terminal. You fastforward & rewind using the arrow keys and the PageUp & PageDown keys. This is not overly "user-friendly". However, if you instead type gmplayer filename, you'll get the graphical frontend, with all its nice, friendly , familiar buttons.

Take ripping a CD to MP3 (or Ogg): Using the command-line, you need to use cdparanoia to rip the files to disc. Then you need an encoder. . . It's a hassle, even if you know exactly how to use the packages (imho). So download & install something like Grip. This is an easy-to-use graphical frontend that uses cdparanoia and encoders behind-the-scenes to make it really easy to rip CDs, and even has CDDB support to name the files automatically for you. 

The same goes for ripping DVDs: The number of options to pass to transcode is a bit of a nightmare. But using dvd::rip to talk to transcode for you makes the whole thing a simple, GUI-based process which anybody can do.

So to avoid #5b issues: Remember that "training wheels" tend to be bolt-on extras in Linux, rather than being automatically supplied with the main product. And sometimes, "training wheels" just can't be part of the design.

Problem #6: Imitation vs. Convergence

An argument people often make when they find that Linux isn't the Windows clone they wanted is to insist that this is what Linux has been (or should have been) attempting to be since it was created, and that people who don't recognise this and help to make Linux more Windows-like are in the wrong. They draw on many arguments for this:

Linux has gone from Command-Line- to Graphics-based interfaces, a clear attempt to copy Windows

Nice theory, but false: The original X windowing system was released in 1984, as the successor to the W windowing system ported to Unix in 1983. Windows 1.0 was released in 1985. Windows didn't really make it big until version 3, released in 1990 - by which time, X windows had for years been at the X11 stage we use today. Linux itself was only started in 1991. So Linux didn't create a GUI to copy Windows: It simply made use of a GUI that existed long before Windows.

Windows 3 gave way to Windows 95 - making a huge level of changes to the UI that Microsoft has never equalled since. It had many new & innovative features: Drag & drop functionality; taskbars, and so on. All of which have since been copied by Linux, of course.

Actually. . . no. All the above existed prior to Microsoft making use of them. NeXTSTeP in particular was a hugely advanced (for the time) GUI, and it predated Win95 significantly - version 1 released in 1989, and the final version in 1995.

Okay, okay, so Microsoft didn't think up the individual features that we think of as the Windows Look-and-Feel. But it still created a Look-and-Feel, and Linux has been trying to imitate that ever since.

To debunk this, one must discuss the concept of convergent evolution. This is where two completely different and independent systems evolve over time to become very similar. It happens all the time in biology. For example, sharks and dolphins. Both are (typically) fish-eating marine organisms of about the same size. Both have dorsal fins, pectoral fins, tail fins, and similar, streamlined shapes.

However, sharks evolved from fish, while dolphins evolved from a land-based quadrupedal mammal of some sort. The reason they have very similar overall appearances is that they both evolved to be as efficient as possible at living within a marine environment. At no stage did pre-dolphins (the relative newcomers) look at sharks and think "Wow, look at those fins. They work really well. I'll try and evolve some myself!"

Similarly, it's perfectly true to look at early Linux desktops and see FVWM and TWM and a lot of other simplistic GUIs. And then look at modern Linux desktops, and see Gnome & KDE with their taskbars and menus and eye-candy. And yes, it's true to say that they're a lot more like Windows than they used to be.

But then, so is Windows: Windows 3.0 had no taskbar that I remember. And the Start menu? What Start menu?

Linux didn't have a desktop anything like modern Windows. Microsoft didn't either. Now they both do. What does this tell us?

It tells us that developers in both camps looked for ways of improving the GUI, and because there are only a limited number of solutions to a problem, they often used very similar methods. Similarity does not in any way prove or imply imitation. Remembering that will help you avoid straying into problem #6 territory.

Problem #7: That FOSS thing.

Oh, this causes problems. Not intrinsically: The software being free and open-source is a wonderful and immensely important part of the whole thing. But understanding just how different FOSS is from proprietary software can be too big an adjustment for some people to make. 

I've already mentioned some instances of this: People thinking they can demand technical support and the like. But it goes far beyond that. 

Microsoft's Mission Statement is "A computer on every desktop" - with the unspoken rider that each computer should be running Windows. Microsoft and Apple both sell operating systems, and both do their utmost to make sure their products get used by the largest number of people: They're businesses, out to make money.

And then there is FOSS. Which, even today, is almost entirely non-commercial.

Before you reach for your email client to tell me about Red Hat, Suse, Linspire and all: Yes, I know they "sell" Linux. I know they'd all love Linux to be adopted universally, especially their own flavour of it. But don't confuse the suppliers with the manufacturers. The Linux kernel was not created by a company, and is not maintained by people out to make a profit with it. The GNU tools were not created by a company, and are not maintained by people out to make a profit with them. The X11 windowing system. . . well, the most popular implementation is xorg right now, and the ".org" part should tell you all you need to know. Desktop software: Well, you might be able to make a case for KDE being commercial, since it's Qt-based. But Gnome, Fluxbox, Enlightenment, etc. are all non-profit. There are people out to sell Linux, but they are very much the minority.

Increasing the number of end-users of proprietary software leads to a direct financial benefit to the company that makes it. This is simply not the case for FOSS: There is no direct benefit to any FOSS developer in increasing the userbase. Indirect benefits, yes: Personal pride; an increased potential for finding bugs; more likelihood of attracting new developers; possibly a chance of a good job offer; and so on. 

But Linus Torvalds doesn't make money from increased Linux usage. Richard Stallman doesn't get money from increased GNU usage. All those servers running OpenBSD and OpenSSH don't put a penny into the OpenBSD project's pockets. And so we come to the biggest problem of all when it comes to new users and Linux:

They find out they're not wanted.

New users come to Linux after spending their lives using an OS where the end-user's needs are paramount, and "user friendly" and "customer focus" are considered veritable Holy Grails. And they suddenly find themselves using an OS that still relies on 'man' files, the command-line, hand-edited configuration files, and Google. And when they complain, they don't get coddled or promised better things: They get bluntly shown the door.

That's an exaggeration, of course. But it is how a lot of potential Linux converts perceived things when they tried and failed to make the switch. 

In an odd way, FOSS is actually a very selfish development method: People only work on what they want to work on, when they want to work on it. Most people don't see any need to make Linux more attractive to inexperienced end-users: It already does what they want it to do, why should they care if it doesn't work for other people? 

FOSS has many parallels with the Internet itself: You don't pay the writer of a webpage/the software to download and read/install it. Ubiquitous broadband/User-friendly interfaces are of no great interest to somebody who already  has broadband/knows how to use the software. Bloggers/developers don't need to have lots of readers/users to justify blogging/coding. There are lots of people making lots of money off it, but it's not by the old-fashioned "I own this and you have to pay me if you want some of it" method that most businesses are so enamoured of; it's by providing services like tech-support/e-commerce. 

Linux is not interested in market share. Linux does not have customers. Linux does not have shareholders, or a responsibility to the bottom line. Linux was not created to make money. Linux does not have the goal of being the most popular and widespread OS on the planet.

All the Linux community wants is to create a really good, fully-featured, free operating system. If that results in Linux becoming a hugely popular OS, then that's great. If that results in Linux having the most intuitive, user-friendly interface ever created, then that's great. If that results in Linux becoming the basis of a multi-billion dollar industry, then that's great.

It's great, but it's not the point. The point is to make Linux the best OS that the community is capable of making. Not for other people: For itself. The oh-so-common threats of "Linux will never take over the desktop unless it does such-and-such" are simply irrelevant: The Linux community isn't trying to take over the desktop. They really don't care if it gets good enough to make it onto your desktop, so long as it stays good enough to remain on theirs. The highly-vocal MS-haters, pro-Linux zealots, and money-making FOSS purveyors might be loud, but they're still minorities.

That's what the Linux community wants: an OS that can be installed by whoever really wants it. So if you're considering switching to Linux, first ask yourself what you really want.

If you want an OS that doesn't chauffeur you around, but hands you the keys, puts you in the driver's seat, and expects you to know what to do: Get Linux. You'll have to devote some time to learning how to use it, but once you've done so, you'll have an OS that you can make sit up and dance.

If you really just want Windows without the malware and security issues: Read up on good security practices; install a good firewall, malware-detector, and anti-virus; replace IE with a more secure browser; and keep yourself up-to-date with security updates. There are people out there (myself included) who've used Windows since 3.1 days right through to XP without ever being infected with a virus or malware: you can do it too. Don't get Linux: It will fail miserably at being what you want it to be.

If you really want the security and performance of a Unix-based OS but with a customer-focussed attitude and an world-renowned interface: Buy an Apple Mac. OS X is great. But don't get Linux: It will not do what you want it to do.

It's not just about "Why should I want Linux?". It's also about "Why should Linux want me?"