跳至主要内容

开源不应作为推荐的理由

开源不应作为推荐的理由

redraiment, 2008-09-04

前言





  明天去学校啦,近两个月的暑假结束了,来总结总结这个暑假的经历。早在放假前,我就计划好了,这个暑假一定要熟悉一下 Linux 的使用。在这个期间,我也看到很多开源人士和 Windows 的铁杆粉丝们在论坛等地方吵架。有个支持开源的朋友说:“当你听到开源软件时是什么感觉?给我的,是感觉亲切,没有浓重的商业气息。”;还有很多软件商,在向用户推荐自己的产品时,都不忘加上一句,“我们的产品是完全开源的”。

  于是我开始思考了,对我来说,开源的软件和非开源的软件区别在那儿

正文

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

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

  一开始,我先让自己去熟悉 Vim 编辑器,因为我要用它来编程,熟悉自己的开发工具,能提高开发效率。Vim 提供的功能确实想大,所以有人把他和 Emacs 并列称为最强大的编辑器。但是,刚默认安装完的 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 等开源软件也简单易用,容易上手。这么以来,大部分用户就不需要去培训和维护服务了。那开源软件靠什么来赚钱?

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

2009-08-10

  不过我最近又有新的想法:小孩子学自行车,辅助轮迟早是要卸下来的。
虽然 Windows 很容易让新手入门,但不能永远停留在初级阶段,终究有一天是要自己去配置系统的。




评论

此博客中的热门博文

JavaScript中的字符串乘法

JavaScript中的字符串乘法 redraiment, Date 原文 原文地址: http://www.davidflanagan.com/2009/08/string-multipli.html 原作者:David Flanagan In Ruby, the "*" operator used with a string on the left and a number on the right does string repetition. "Ruby"*2 evaluates to "RubyRuby", for example. This is only occasionally useful (when creating lines of hyphens for ASCII tables, for example) but it seems kind of neat. And it sure beats having to write a loop and concatenate n copies of a string one at a time--that just seems really inefficient. I just realized that there is a clever way to implement string multiplication in JavaScript: String.prototype.times = function(n) {     return Array.prototype.join.call({length:n+1}, this); }; "js".times(5) // => "jsjsjsjsjs" This method takes advantage of the behavior of the  Array.join()  method for arrays that have undefined elements. But it doesn't even bother creating an array with n+1 undefined ele...

DAO层测试

<dependency> <groupId>com.wix</groupId> <artifactId>wix-embedded-mysql</artifactId> <version>2.1.4</version> <scope>test</scope> </dependency> 利用 wix-embedded-mysql 把MySQL嵌入到进程中,作为内存型的MySQL来做单元测试。 脚本: resources/migrations/mysql/<database>/<timestamp>_<action>.sql 但多个项目需要共享数据库脚本,可能可以用 git submodule 共享。

人所不欲,勿施于人

谁说博客也要像论文一样结构清晰、有条理?! 软件卸载 昨天整理自己的本本,卸载了 VMware 7.0 + 深度XP,MS Office 2007 以及 Visual Basic 6.0。我承认这些都是盗版软件,不过剩下的应用程序都是自由软件(freeware)或免费软件(freeware),这下我的计算机“干净”了。闲来无事,我就细数了一下当初装这些软件的原因: VMware + XP:当初刚买本本的时候,正好在上软件工程实践,紧遵老师的教导“将自己的开发环境随身携带”,自然第一款软件就是装了虚拟机(学校机房里是肆无忌惮地用盗版 VMware),另外上课指定使用 Visio 作图,那也只好一起装了;当然,也有部分原因是因为某些人的计算机装的是 XP,我这边有个 XP 环境也是为了方便问题重现(我的本本预装了 Vista)。 MS Office 2007:在毕设期间,我也还是用 Open Office 和 WPS 2010,但现在公司用的却是 Office 2007(正版)。我这次卸载这款办公软件其实也是在提醒自己:工作的事情要在工作时间里完成! VB 6:你可能无法想象在我们科班的毕业设计中有多少是 VB6 项目,从大二开始,每逢毕业将至,总会有人来找我帮忙看那些不晓得从哪儿搜罗来的 VB6 代码,经不住软磨硬泡,我总会帮着改改;另一个原因在我自己,我一直下不了决心去学 MFC 等,所以但凡要做 GUI 程序,我都是拿 VB6 来画界面,再调用由 C 语言开发的 DLL 库,不过现在改用 QT,于是 VB6 可以功成身退了。 己所不欲,勿施于人 有些人就喜欢把自己的事全盘交托给别人来做,我一直不明白他们既然有精力去说服别人,为什么就没耐心自己去完成(所以我下面说人和人之间是无法理解的)。既然自己都认为这是无聊的事情,为什么偏偏又假设其他人会愿意无偿地帮你来完成呢? 两千多年前,孔老夫子提出“己所不欲,勿施于人”的观点,但到了今天,我听到关于这句话时的语境普遍是,A说:“那个XX东西你也不要了(或要了也没用),不如就让给我吧?”,B就义正言辞地反对:“那怎么可以!己所不欲,勿施于人嘛。” 己所甚欲,勿施于人 易中天老师在《百家讲坛》讲解诸子百家...