发表于2011-10-22 06:27:36 +0800

阶段一, 使用开源软件完成自己的日常工作。

虽然开源软件与其他商业软件相比较没有花哨的用户界面,没有完善的用户使用文档,但是这些开源软件可以满足大家日常工作的绝大部分要求。最重要的是这些开源软件对于最终用户来说都是可以无条件免费使用。

 

这一阶段的门槛很低。大家使用搜索引擎很容易就能找到介绍相关的软件使用的页面或者是日志。大家只要把相关的软件发行版本下载本地就能马上开始使用了。

 

对于直接面向终端用户使用开源软来说,这一阶段的用户数是最大的,他们是开源用户社区的基础。对于这一阶段的用户来说,软件的可用行,易用性是他们最关心的问题。这些用户经过一段时间的培养,或者当他们对开源软件有了更高程度定制需求的话,他们很容就进入了第二阶段。

 

阶段二, 修改开源软件满足自己的需要。

开源软件的最大好处就是代码公开,用户在遵守相关开源软件许可的前提下,可以根据自己的需要修改代码。通过修改代码,用户可以获得对开源软件掌控权。这也是目前国内厂商以及高校科研机构所看重的,当然这也是培养软件研发的队伍的一个行之有效的手段。

 

在最近召开的开源大会上,我见到很多这样的用户:他们可能因为需要解决企业计算领域的问题,需要将多个开源软件结合在一起搭建业务系统,并且需要针对其特定功能对这些开源软件进行修改来满足自己的需求;他们有可能是以为项目课题的需要, 对某个开源软件进行了比较深入的研究之后,将其定制,包装之后。

 

对于这样的用户来说,开源软件就变成一个一个的砖块。用户只需要对这些砖块进行少量修补就可以搭建出满足自己的需求应用。听起来这视乎是一条阳关大道,但是当你深入下去的时候,你会发现前面的道路充满的荆棘。 

 

首先是缺乏技术支持,虽然大多数的开源项目都有文档,以及用户邮件列表提供免费的支持,但这些与商业软件提供的用户手册以及技术支持来说还是相距太远。如果你的问题很棘手,或者是项目进度很紧张的情况下,这样的免费支持是很难满足你的要求。

 

其次是要在漫漫代码中定位问题,寻找解决方案是一个比较漫长的过程,其时间成本是可想而知的,当然如果你有足够的时间和精力的话,这样的投入也是值得的。

 

最后就是版本管理的问题。如果你对开源软件代码进行修改,同时这些修改没有进入开源项目的主分支上,那么你就需要维护一个自己的版本。版本管理的成本随着你对开源软件使用和修改的程度一同增加,而且这样的成本在开始使用的时候 隐形的,随着时间的推移,成本会不断增大。这也是开源软件使用第三阶段试图解决的一个重要问题。

 

阶段三, 参与开源软件开发,在分享的知识的同时收获成长和快乐。

 

在开源社区里面有一句话,当你奉献的同时,你会收获更多。

 

拿前面提到的第二阶段版本管理来说, 如果你能把你的修改提交到开源项目的主线上,那你的版本维护成本就趋向于零;如果你在本地维护修改版本的话,一旦主线上进行的了相关bug的修改,你都需要同步过来,否则你本地版本的维护和升级都要你自己来做。

 

软件开发是一个螺旋上升的过程,这个过程需要开发者和用户直接不断反馈,磨合。很难想象某一个软件在1.0的时候就能把所有的功能都实现完。这也是众多软件开发者愿意参与到开源软件开发的一个重要原因。他们在扮演用户的同时也扮演着开发者的角色。如果他们不满意开源软件的某一项功能,他们会圈起袖子直接修改代码,并且将自己的修改反馈到社区,而不是锁在柜子里面让它烂掉。 这样的好处是今天修改的内容,可能一个小时,或者明天就有人会提供反馈,在不断的思维碰撞中,大家能想出更好的想法。 开源开发者虽然都分布在不同的地方,但是这样的共享协作开发机制,从分享代码的基础上最大限度的降低了开源软件开发知识沟通成本,通过审查代码,用户直接反馈等多种手段保证了软件研发和创新的效率。

 

目前国内进入这一阶段的开源用户还很少,有大量的用户还只停留在第二阶段。也许他们比较羞涩没有打算将自己的成果分享出来, 也许他们还没有体会到把这些成果分享出来会收获更多的乐趣。但是我有理由相信他们很快会进入到第三阶段的,因为只要经过适当的引导,由第二阶段进入到第三阶段是一个很自然的过程。