在汽车工业,很少有设计汽车引擎的人也参与汽车内饰件的设计,这是两种截然不同的工作。没有人希望一个汽车引擎仅仅看似跑的飞快,也没有人期望汽车内饰件工作的极好但看上去丑陋不堪。在软件开发领域也是如此,用户交互接口模块(UI)的开发往往不是由那些做软件底层核心的人来做的。但是在Linux世界,情况却大不相同:整个项目通常始于是某个人的个人爱好,他一个人包揽全部,而且对软件使用的方方面面都极为熟悉,因此他对UI部分如何使用通常不是很关心,也没必要需要在线帮助之类。Vi就是一个极好的例子,它本来就是为那些已经知道怎么使用它的人设计的,它不关心新用户会不会可能因为不知道如何从Vi中退出而不得不重启机器。
不过,FOSS程序员与大多数商业软件开发人员有很大不同:FOSS程序员所写的软件往往是他打算要用的。虽然最终可能导致使用软件新用户感到不适,但是在得知软件是由知道如何使用它的人所开发之时,他们还是能得到一些安慰,因为软件的设计者本身也是最终用户,他明白用户需要什么。而商业软件开发者是根据用户需要来写程序,他们并不熟悉最终用户群。
虽然Vi的用户接口对于新手而言不甚友好,但它直至今日依然拥有众多用户,这是因为实际上其用户接口在功能上是极为丰富且强大的,前提是你得熟悉它。这样的例子有好多,譬如Firefox是由一些经常浏览Web页的人们开发的,Gimp是由那些需要使用它来处理图片的人开发的,and so on……
因此,Linux的用户接口对于新手而言好像是雷区:无论它有多流行,但Vi这样的工具总是不会被那些期望马上就可以对一些文件进行处理的新手们列为首选。如果你在一个软件诞生的时候就开始使用它,那么它生存的时间越久,你就会发现它的接口会越来越友好,好似被岁月抛了光一样,好似你大脑和双手的延伸。这是为什么呢?因为设计者们不可能先设计出那种要命的用户接口,然后一点一点的去让它变得更要命。他们往往是先实现功能,然后一点一点的去提高接口的可用性。
因此,对于Linux新手而言,你要么是去仔细审度一下自己想用的软件是否可以很快上手,要么就要接受那些学习曲线较为陡峭但用户接口功能强大的工具了。如果你非要抱怨Vi对于新手不够友好的话,是要被嘲笑的。