章文嵩:谈LVS及阿里开源背后的精彩故事

阿里集团副总裁、高级研究员章文嵩是Linux内核开发者,LVS项目的发起人,同时,也是淘宝开源委员会负责人。

章文嵩早在读书时代就开始做LVS,其背后有哪些精彩的开发故事?他与开源之间又有着怎样的不解之缘?他有怎样的宝贵经验分享给正在从事或准备从事开源项目的开发者呢?《程序员》杂志2012年8月刊就个人和企业参与开源项目等话题对章博士进行了访谈。

收获开源的乐趣

《程序员》:请你谈谈开发LVS的经过。

章文嵩:LVS是我在1998年5月开始做的,那时我还在读书。在那之前,我写过很多软件,但出于种种原因,那些软件的生命周期并不长,LVS是我目前写过的软件中生命周期最长的一个。

我在1995年底开始接触Linux,并不算早,当时只是装机器给同学们玩儿,并没真正在Linux上写过代码。不过因为使用Linux,便开始接触到互联网上的开源思想,我也读过Richard Stallman的故事,对他的观点很认可。

在我1997年硕士毕业时,曾问老师能否把硕士课题的成果开源出来,但老师说这是国家课题,不能开源。所以,那个软件只能锁在抽屉里,至今也没有发挥出更大作用。

一开始写LVS,我只花了两个星期的时间,完成了一个很简单的版本。它是我的个人项目,与学校无关,所以不需要做任何申请,我就能决定将它开源。

因为我接触互联网较早,所以自己搭建了网站并将源代码放上去。一个星期后,LVS就被一家澳大利亚小公司用起来了。这家公司为社区提供上网服务,那时互联网的带宽比较贵,它通过正向代理服务器缓存之前用户访问的数据,并提供给后来的用户。这样到海外的流量只有一次,对ISP来说可以节约很多成本。但随着社区上网人数增多,一台机器已经忙不过来了,这时它们发现了LVS,然后立刻用起来。公司的负责人写邮件感谢我,说效果很好。我觉得这件事挺有意思,因为自己写的软件被别人用起来了,为他人创造了价值。

在软件的整个开发过程中,逐渐有许多其他人参与。比如一开始,项目的英文介绍过于简单,这时一位美国朋友帮我写了英文的HowTo,后来有其他开发者陆续加入进来,有人贡献过一两个Patch;也有人持续了很长时间,帮助我一起做LVS。

LVS进入官方内核之后,维护工作就相对简单了。以前,每个版本发布我都需要检查与系统其他部分的兼容性。进入官方内核之后这些工作有更多人完成,其上的开发也要照顾到LVS。目前,我们正在实现一些新功能,比如对IPV6的支持是Google的两个工程师帮我完成的。我们也正在把对SCTP协议的处理加进来。这是开源项目的好处,不需要所有事情一个人单干,可以在全世界范围聚集一群有相同兴趣的人一起完成。

《程序员》:LVS是你在读书时完成的,在学校,你是怎样了解到生产环境中真实用户的需求呢?

章文嵩:我认为对于一个开源的项目来说,搜集需求很重要,因为真正有用的软件来源于实际应用,不同于闭门造车想象出来的功能。

我确实是见到这样的问题,才有了开发LVS的想法。我在国防科大学读书之余,也帮湖南电信做一些系统集成项目,见到许多服务器忙不过来的情况。这时就需要考虑负载均衡。那时业界也有一些商用方案,常用的是思科LocalDirector。我希望在Linux内核上写点东西,又知道思科LocalDirector的工作原理。所以我当时就花了两个星期写了一个最简单的版本,那是1998年5月。LVS网站上最早的一个Logo,是一个箭头进来分成三叉,跟思科的LocalDirector差不多,只不过我在上面又添了一只企鹅。后来这个Logo变成一群企鹅,是别人给我的启发,因为软件是关于Linux集群的。

在开发LVS的过程中,我收集了很多来自真实用户的需求。即使我没有接触到某些应用场景,但会有其他能接触到这些场景的用户协助我进行测试,这种方式把软件的开发成本降低了很多。

《程序员》:你为什么决定将LVS开源,而不是像思科LocalDirector一样,也做成商业产品?

章文嵩:一套LocalDirector当时价值几万美元,我那时心里有疑问——这东西并不难写,为什么卖那么贵?而我做开源项目纯粹是为了好玩,只要有人用我就很开心,哪怕有时跟用户交流到很晚,需求来了,我半夜还在写程序。

2000年前后,收到了许多用户的感谢邮件。也有公司给我捐送服务器,有个瑞士用户寄了一大包饼干来感谢我。我把饼干拿回家,被丈母娘看到了,她说原来你半夜这么辛苦地工作,就是为了一大包饼干啊。

做这些事是很有成就感的,更多的是乐趣。

《程序员》:对于正在从事或准备从事开源项目的开发者,你有哪些建议和经验希望分享?

章文嵩:我觉得做开源项目,迈出第一步很重要。代码不在于多与少,项目也不在于大与小,先开源了再说。因为开源是指整个的开发过程,并不单单指代码。代码开源只是一个结果,更关键部分还在于整个开发过程。在LVS的开发过程中,虽然没有很多金钱回报,但其他方面回报是有的。比如出国参加演讲一般会有人资助,可以全世界跑一跑。在整个开源的过程中,我自己学到很多东西,比如与人交流,因为这是一个世界舞台,有机会接触到世界上第一流的编程高手。

想想看,当年我只花两个星期写出的代码,会很复杂吗?但就像埋下一颗种子,只要继续投入,就有可能生根发芽,长成大树。

《程序员》:你是怎么想到一开始就把项目文档写成英文?又是如何推广的?

章文嵩:我接触互联网时,很多资料是英文的,自然而然也想到用英文写项目文档。那时候的社区都是通过邮件列表交流,语言也是英文。当我完成了这个项目,就希望请大家看看LVS有没有价值。于是想到发邮件到社区上推广。否则仅是建立一个网站,可能没有人知道,必须要寻找一个渠道,让更多人看一看。

我们从中学就开始学英语,写一些简单的英文不会很困难,只要把想到的东西用英文列出来,大部分老外都能看得明白。当然,现在国内整个技术发展氛围也越来越好,写中文文档我觉得也不是问题。

比如我们的Taocode、盛大和金山卫士的开源平台背后都有公司支持,肯定会长久做下去。即使在Github上用中文交流也没问题。因为国内受众也很多,用中文交流有时候更直接。当然,如果想发展国际用户,需要写英文文档。

让企业拥抱开源

《程序员》:你在工作中同时负责商业化和开源方式开发的软件,对比这两种方式,你觉得哪种效率更高、质量更好?

章文嵩:我认为开源方式的效率更高、质量更好、成本更低。

游手好闲会使人心智生锈

章文嵩:谈LVS及阿里开源背后的精彩故事

相关文章:

你感兴趣的文章:

标签云: