开源不应作为推荐的理由

关键字: 我是程序员

近两个月的暑假濒临结束,明天就要去学校了,来总结一下这个暑假的经历:在放假前我就拟定计划,借暑假去熟悉一下 Linux系统的使用。期间看到很多 Linux拥护者与 Windows铁杆粉丝们在论坛吵架,例如某位 Linux支持者说:“当你听到开源软件时是什么感觉?给我的,是感觉亲切,没有浓重的商业气息。”;亦有很多软件商,在向推广产品时都不忘加上一句,“我们的产品是完全开源的”。

于是我开始思考了,对我而言,开源的软件和闭源的软件区别在那儿?

首先阐明一下,我是软件工程专业的学生,暂且搁下这个背景,仅从一个软件使用者(所谓的普通的用户),一个像我爸妈这样的电脑盲的角度来说:软件是否开源,与我何干?有一点不能否认,电脑再怎么神奇,充其量是一个便捷的工具。作为工具,我在乎的仅仅是它能不能高效地替我完成任务而已。

先说说这段时间用 Linux 的感受,我用的发行版是FC6,在新华书店花68 RMB买的。总体感觉非常不错。我时常要赞叹一下它的强大和灵活。但是,有时让我也感觉很烦心。

一开始,我先让自己去熟悉 Vim 编辑器,因为我要用它来编程,熟悉自己的开发工具,能提高开发效率。Vim 提供的功能确实想大,所以有人把他和 Emacs 并列称为最强大的编辑器。但是,默认安装完的 Vim 还是很简陋的,需要进行繁琐的设置。比如,我要开启语法高亮功能、智能缩进、自动填充语句、还要代码折叠等等。对于开发人员而言这些都是基本功能,但由于我是Vim新手,配置还是花了老半天。

接下来就是去看看浏览器,FC6 里自带的是 Firefox 1.5,我到官网下载了最新的3.1。然后安装了 Google toolbar、CHM Reader 等插件,再换上一套酷一点的主题,毕竟看浏览器的时间比较多,不赏心悦目一点怎么行。

最后再调整系统本身,去掉一些不用的后台服务,卸载一些自己不用的软件包(比如蓝牙设备等),最后界面也美化一下。

忙活了半天,总算是用得称心如意了。我在自己这样精心搭建的环境下能高效的工作。此时 Linux 给我的印象就是配置配置还是配置。但我突然想起了自己以前还没未接触 Linux 时,曾经和同学抱怨过:自从有了 Ghost 来安装系统,安装一个系统只要20来分钟,但接下来装驱动、装软件等配置一个满意的 Windows 却要花掉一天!所以 Windows 也一样。

无论是 Windows 还是 Linux,都要根据自己的需要进行个性化配置,而它们经过我的配置,都能满足我的工作方式,并且完成工作任务。就这一点来说,至于我用的是不是开源软件,的确和我没太大关系。在我看来他们是一样的。

那我关心的是什么呢?我举个例子,在 Windows 环境下,我用 Visual Stdio 2005 来编写代码,VS 2005 也提供了语法高亮功能、智能缩进、自动填充语句、代码折叠等功能。就功能上说,VS 2005 带给我的,和 Vim 是一样的。都能满足我的需求。但有一点,让我对 VS 2005 多一点好感,就是这些我想要的功能默认安装后就直接提供的,不需要自己额外去配置,去安装插件。

这就是我比较在乎的问题,像我这样如此被动的用户,只有在不得已的情况下,才会去亲自动手配置软件。一般情况下,都是直接默认安装软件的。如果两款软件,实现的功能一样,但其中一款默认的设置就符合我的个人喜好,那我想我肯定会选择使用它!因为我安装完就能马上使用了,这软件就像是我老朋友一样,知道我的喜好,知道我需要什么样的功能。

但我们老师一直在和我强调说,开发软件的真谛是“只提供机制,不提供策略”。其实我一直不苟同这一说法。我是觉得软件“既要提供机制,也要提供策略”。

不晓得大家用的是什么中文输入法?在 Windows 下,我以前是用智能ABC ,智能ABC 虽然智能,但还不是非常好,它的词排列顺序是固定的。后来我用了谷歌输入法,它能把你频繁地输入的词自动靠前,下次输入时词的排列顺序就按使用频率来排序了,自然用户能很快找到自己需要的字,就好像这个输入法知道自己在想什么,每次出来的都是我想要的。这样的软件我用起来感觉很舒心,虽然它不是开源的。

但要真的实现如此舒心的软件,是非常困难的,它需要大量的需求调查,了解用户们真正的需求,甚至还包含一些心理学上的知识。而再神奇的功能,如果没有需求,那也是废物一个。有个经典的例子,至今有老外还在使用 Win 95 (原文请看这里),按他说的,这也是一个需求的问题,Win 95 提供的功能已经很好的满足他的需求了。

因此,软件是否开源,对我这个使用者而言不是最在乎的事,我在乎的是软件能不能高效地完成任务,是不是我每做一件小事情,都要先配置老半天?

而真正对是否开源感兴趣的人,我想应该是此类产品的开发者,他们需要通过源代码来借鉴其他人的技术,并以此来交流和提高自己的水平。这个暑假中,我在编写一些 Linux 程序时,也借鉴了 tr、curl 等程序的源代码。所以,向开发团队去强调开源,那是比较明智的,而不是在一堆电脑盲面前吹嘘不停。

后记:这两天我突然有了一个很“疯狂”的想法:是不是开源软件是故意这样做(只提供机制,不提供策略)的?因为开源软件是不通过买卖软件来賺钱的,而是通过后期的培训和维护等服务来赚钱的。但如果开源软件前期也做过充分的市场调查,了解用户的需求,然后在软件设计时,默认的设置最大地满足了大部分群体的需要。那也就意味着 Linux 等开源软件也简单易用,容易上手。这么以来,大部分用户就不需要去培训和维护服务了。那开源软件靠什么来赚钱?

所以,撇开自己使用源代码这一点来说,纯粹的在用户使用这个立场上来讲,开发开源的软件比开发商业软件要容易:因为开源软件前期不用考虑用户的使用习惯,只有后期用户需要什么需求我针对性的进行培训,这样每个用户手中的软件经过自己的配置,可能都是不一样,这样能满足所有用户的个性需求;而商业软件前期有点“预测性”的估计用户的需求,然后到了用户手中的软件配置都是一样,这样就不一定能满足所有用户的需求。要自己配置的话反而另外还得去培训等,这比起开源多了一个环节。

zzp-me从“我的世界观”迁移到“我是程序员”
redraiment迁移《开源不应作为推荐的理由》