王开源的事情已经过去一段时间了,看过太多对这件事情的评论,这些评论或者是口出污言秽语的谩骂或者是狂热的非理性的力挺(在这件事的初期属于后者)。很多人对开源的评论也使得我这个投身于开源一年多的新人感到过迷茫。这件事过去好久,我一直在思索一个问题:开源在目前中国的意义究竟是什么,开源在中国这种大环境下究竟应该如何发展。
开源在国外现在是火的一塌糊涂,Linux、Eclipse、Hibernate、Spring、Python、Ruby、MySQL等等或大或小的开源产品的发展大大推动了软件开发这个行业的高速发展,apache、sourceforge等开源社区中也是百花齐放,开源产品的开发者、推动者、推广者也得到了各自想得到的回报,更不用说使用这些开源产品进行开发的用户得到的开发效率的提升。反观国内开源的发展则相对滞后很多:违背Linux开源协议进行商业化Linux开发的厂家被开源社区骂的狗血喷头;屈指可数的几个开源爱好者组织的开源团队在个人的意志与信念的坚守下苦苦支撑着,很多因为种种原因中途夭折;商业公司对开源社区的几次推广行动也胎死腹中,比如CSDN的开源社区、Apusic的Operamasks;更有甚者打着开源的旗号却从事着根本与开源不搭边的事情。国内大部分人对开源更是有着很深的误解:“你凭什么叫人家开源,不就是想看看Windows的代码吗?”、“人家商业公司做出来的产品是你们几个技术疯子做出来的东西能比的吗?”、“把别人写好的东西拿来抄一抄改一改我的任务就完成了,钱就到手了,开源真好”、“我做的项目用了很多开源的东西,很牛吧!”。
我认为开源对于整个软件行业有如下几个作用:使用开源产品搭建出的产品有更好的安全性和可控性;开源的产品能得到开发社区的广泛支持,从而使得产品能够成熟的更快;使用开源产品搭建出的产品有更好的安全性和可控性;开发、学习开源产品能够提升开发人员的技术水平。
对于第一个作用这里不做过多解释,相信大部分人都能理解。
开源产品是在全世界所有技术牛人的手下开发出来的,并且有千万双眼睛盯着它,众多的使用者可以完善它,这使得开源产品的成熟速度也十分惊人,Linux、Eclipse的成熟就是最典型的证明。各种开源产品层出不穷,相似功能的产品就有几十种甚至上百种,一个开源产品如果想要在这些产品中脱颖而出,不仅需要强大的技术做支撑,更需要非常强的商业化推广,否则做出来的产品只能成为少数技术人员把玩的玩物。如果没有IBM对Eclipse的巨额投入,Eclipse会发展成现在的规模吗?这些开源项目的后面通常都是有一个非常强大的开源基金会在做支撑。遗憾的是,目前国内还没有一家公司能够进行对开源社区如此大的投入,因此国内大部分的开源团队都是在自己开发着自己的开源产品,放到网站上供他人下载,然后梦想着自己的开源产品能够有一天会像Hibernate、Struts一样成为风靡全球的产品,但是如果没有强大的商业推广的话这肯定是一场白日梦。
鉴于此,我认为目前国内的开源产品商业化的可能性是非常小的,因此开源的对于广大开发人员的意义更多的在于使用和学习,而且我们使用开源产品快速的搭建出满足需求的产品,这本身也是对开源的学习过程。这里提到的“学习”包含下面几个含义:学习开源产品的使用;学习开源产品的实现原理;学习模仿开源产品;学习开源社区的运营。
(1)学习开源产品的使用:成熟的开源产品是非常优秀的,如果能够学会它们的使用,这对于开源人员来说就是一种很大的收获,因为通过使用这些产品就能认识到这些产品的功能、特性以及优缺点。
(2)学习开源产品的实现原理:开源产品的代码都是开放的,我们可以深入产品的内部学习其实现原理,从而提高自身的开发水平。不得不承认的是国内开发人员的技术水平还是非常低的,通过学习开源产品的代码,就可以提高整体的技术水平,从这个层面来讲哪怕是非开源的源代码开放产品(比如Borland的VCL)对我们也是同样有帮助的。值得高兴的是,国内很多开发人员已经开始尝试着深入开源产品的内部去探寻这些产品的实现原理,并把它们的学习成果与更多人分享。开源对开发人员的提升也是显而易见的,最明显的就是微软开发社区中开发人员的普遍技术水平是低于Java等开源社区中开发人员的普遍技术水平的(注意,这里说的是“普遍技术水平”,请微软社区中的高人不要动怒)。中国计算机业的发展必须依靠核心技术,而提高技术水平是拥有核心技术的大前提!
(3)学习模仿开源产品:弄懂了开源产品的实现原理以后就可以尝试模仿它们开发自己的产品,这和“重复造轮子”是没有关系的,模仿是学习他人技术的最佳途径。因此大家应该多多的“造轮子”,越多越好,哪怕造完就扔掉也是可以的。
(4)学习开源社区的运营:国外很多开源人员都有在开源社区中开发的经验,因此他们对于开源这种协同开发方式就有更多的经验,因此我们可以加入他们的开发团队,可以帮他们做文档、界面的本地化,更可以参与产品功能的完善,从而学习他们的协作方式,更可以和他们做朋友,了解更多“外面的世界”。国内很多朋友都参与了开源产品的文档中文化、产品的推广等工作,这都是有深远意义的。我们CowNew开源团队参与JodeEclipse、DWPL等国外项目就是基于这一点考虑的。
相信经过一段时间学习之后,我们的开发人员将有能力开发出世界级的产品,如果我们的民族企业能够得到长远的发展,并且在商业上帮助国产开源真正走向强大,从而使得中国的开源社区也能跻身“世界开源之林”!
上边是我一点愚蠢的看法,仅供各位看管参考。希望开源能够在中国发展、壮大,希望中国早日成为软件强国!