作者:陈刚,桂林人,97年毕业于广西师范大学数学系,暂于IBM中国研究中心兼职从事软件开发(2004.2-?),专注基于java平台的软件开发。
email: glchengang@hotmail.com
blog: glchengang.yeah.net
5.1只放了三天假,感觉和过个双休没太大区别,坐在从五道口到上地五街365公车只有稀落落的两三人,和平时的拥挤比起来,好象做梦在另一个世界。中午Team Leader说:项目将延期到7月底。天啊比原计划5月底,足足延长了近两个月,而我回家休长假,游遍家乡山山水水的美梦又得推后了,也许是无限期的推迟。原因是项目中的Hibernate出了问题。
Hibernate是一种JAVA数据库工具、开放源代码的对象关系映射(O/R映射)框架、EJB的实体Bean的最佳替代品。实际上Hibernate要比实体Bean灵活好用得太多,EJB发布这么多年,国内鲜有应用EJB中的实体Bean并成功的案例,因为实体Bean太笨重难用了,但Hibernate刚出没多久,就在全世界悄然漫延开来,但国内用的还比较少。如对Hibernate有兴趣的可以访问Hibernate中文网。项目中Hibernate出的问题并不是不好用,而是出在公司与客户方(一家知名银行)就Hibernate的合同约定:如果Hibernate出了问题谁来负责? 对于一般公司当然无所谓,把责任担下来就是了,Hibernate也不会出什么问题,然而IBM公司做为一个知名的国际商业集团,其对商业合同有着规范而严格的规定,如果要由IBM公司来承担这个责任,须向公司总部申请才行。另一种做法是叫一个第三方公司来承担这个责任。头也没选择这两种方案,最后的决定是放弃Hibernate,改代码。但现在项目已近完成,并开始测试了,对于数据层的改动无疑将对系统代码架构将大动手术。仅因为项目初期的一点点考虑不周,项目就得延期了两个月,由此可见项目审查的重要性。不过这也怪不得,因为这个项目原本只是一个研究性质的项目,所以商业化后必然有些"不适应"要拉肚子。
Hibernate是一个公开源代码的软件,由一个成员分散在世界各地的团队维护开发,他们通过互联网聚合在了一起,开源社区 是他们的大本营这里有着数千个各种类型的开源项目。所有项目使用CVS来进行源代码管理(还在用VSS吗?试试CVS吧,非常棒也易用)。我曾经觉得开源是一种不可思议的事情,程序源代码本来是一个公司或个人最宝贵的财富,微软死死抓着源代码不放,国内的公司又有那个不是这样?然而却有这一帮人,他们将自己的成果公开在网上,让人免费的使用,让人免费的修改研读源代码,听起就象当代的活雷锋。开源项目发展到今天硕果累累,象Linux、JBoss、MySql、PHP、Hibernate、Eclipse。。。等等都影响巨大深远,特别是Linux成为微软帝国的最大威肋,并成为开源模式成功的象征性旗帜。
Hibernate最初是一个年轻数据库工程师开发的,然后他将源代码公开在互联网上,继而世界各地(有中国的吗?)自发成立起一个无偿开发的团队,这些团队虽是无偿的,但也是优秀的,所有申请加入开发团队的成员都是经过项目组的审核,必须要有一定的技术背景才能加入。是什么驱使这些“雷锋”从事这些公益事业呢?应是兴趣吧,当初Linux就是一个芬兰的大学生的玩票性质的作品。开源的项目大都发展得非常快,是什么使这些项目飞速发展呢?是整个热心于代码的程序员阶层和社会对廉价优质软件的巨大需求。程序员都有这样一种特质:他们渴望完美并优雅的代码、渴望自己的代码形成对社会普遍的价值。而且社会也厌倦了那些动则几十万上百万的商业软件。当初我在中国电信做的一个项目,其支撑软件WebLogic 7就是几十万¥,我难以理解为什么不用免费优质的JBoss,是钱太多,还是和IBM公司碰上一样的问题?
开源在中国还是新鲜的东东,大家都知道但少有人试过。为什么?首先是中国程序员每天忙项目都忙不完,中国程序员脑力工作量和做民工的体力工作量不相上下,加班是平常事,那还有精力去做开源软件。其次中国程序员很穷(至少本人很穷):买台电脑都会用去一个月以上的薪水,如辞职两个月专心做开源,只怕会饿死。另一方面技术落后:想三五年前JAVA国外风行时,国内还是C++和VB、Delphi的天下,JAVA鲜有人问津。现在Eclipse开发在国外热火朝天,但很多JAVA程序员还死抱着JBuilder不放,当然国内外程序员的这种距离也正不断的缩短。最近在CSDN上看到一遍文章说有某国(巴西?)开发了一种正开始普遍应用的语言是用纯ASNI C写的,于是借题就把国内现在热心学C#的狠批一通,说他们只会盲目追赶新技术。但孰不知,有多少系统是用ASNI C?你不可能开发个应用系统也用C来吧,C和C#完全是两个应用层面的事,搞C和C#也是两个方向的事,所以追踪最新最前沿的技术是绝对有必要的。累、穷、差都不是最终原因,要说累,外国程序也要工作,我估计也轻松不到那去;要说穷,BT的开发者每月靠申请新信用卡还旧信用卡的债来生存,这够穷了吧;要说技术差:勤能补拙,再说中国人程序员不比别人笨,实在技术不是很行,做一个简单一点的开源项目或者加入一个开源项目做个小兵总成吧,通过这个过程,还能学到不少东西呢。其次最后一个开源项目在中国不火的最重要原因是(很难以启齿)我认为是:中国人基本都用盗版,开源最大优势:免费,根本没法在中国体现,开源软件在中国市场需求力不够。
开源项目有商业价值吗?它的商业价值在哪里?在服务。可以把做软件比喻成养鸡,这只鸡如果你关着养(不开放源代码),大都会因营养不足而发育不良,但如果放到水草肥美的山林(开放源代码),它将生长极度快速,而且肉质优良。开源让软件拥有了免费高质高量的开发队伍,这些样的队伍是不用监工盯着看是不是偷懒的,他们有着完全自发的热情。他们不会为了赶任务而编写流水帐式的代码,他们追求优质完美的代码实现,因为源代码是公开的,有千万双眼睛看着,没有那个程序员拿自己的尊严和荣誉开玩笑。更重要的是:因为开源免费,使用者极多,有更多的人免费为软件提供需求和BUG测试,软件推广速度极快,不需要任何宣传费用(微软windows系列的宣传费用N亿美元记)。当开源软件这只鸡快速成长后,我们就可以品尝它鲜美的蛋了,我们可以提供相应的软件服务(没有售后两字因为大家可以免费使用),可以提供软件附属相关项目的开发服务,可以提供咨询、提供教育培训......。更重要的是我们所开发的不再是那种开发一两月、卖给一两家、用它一两年,便永远寿终就寝的没有生命力的软件垃圾,我们开发是可以不断生长完善、广泛并长期使用的社会财富,而程序员自身的价值通过这样软件也得以实现。
好了,说了这么多,为什么不选一个感兴趣的专题来尝试一下开源软件的开发模式呢?总之,我会认真的试试,不知诸位如何?