图灵访谈之三十(1):——专访Apache Member姜宁

2012年7月14日,图灵社区对来参加“我们的开源项目”的几位朋友进行了一系列访谈。他们中有十年前就涉足国内开源领域的开拓者,有作为Apache Member的技术精英,有在国内开源社区玩的不亦乐乎的极客,也有因为毕业设计而和开源结缘的毕业生。他们有着不同的梦想,不同的问题,却都有着相同的特点:对未来充满希望。从他们的身上,我们可以体会到这些朋友的苦楚和快乐。也通过这些截然不同的声音,让我们尝试着阅读中国开源社区的现状。

姜宁 微博:@姜宁willem 博客:http://jnn.javaeye.com

Apache Member, RedHat首席工程师,专职参与Apache旗下多个开源项目 Camel, CXF, ServiceMix, ActiveMQ 开发的攻城师一枚。

enter image description here

图灵社区:你的自由软件职业生涯是如何开始的?

我并没有刻意做这些事,开始的时候可以说机遇比较好,只是去公司上班而已,但是刚好有那么一个开源项目,我一看大家都去了,我也就搭顺风车一样的去了。我曾经有一篇文章就是说我如何拿到提交代码权限的,一开始的那个项目在初始化的过程中需要一些提交的人,门槛也很低,于是就签了协议上了项目。但是在之后做Apache camel的时候还是有一些困难,那个项目(准备过程)大概有半年的时间,前前后后提交了十几个patch,当时恰又赶上北京公司要关门,所以感觉很茫然。于是我写信给项目的创始人,询问有没有什么办法可以让我一直做下去。他说你已经达到要求了,我们可以开始投票了,我们会把你选成提交者的。

图灵社区:也可以说是在这样的机会下,你对开源软件产生了感情?

是的,我实际上是通过一个偶然的机会,和之后的不断学习,在接触更多的项目的过程中,逐步的才真正了解了开源项目。前段时间我也是刚被选成Apache Member。

Apache的项目绝大多数都是公司出资来雇人做。这和国内绝大多数人的情况有所不同,他们大多是自发的来做一个项目。我本人在Apache做了很多年,加之国内的开源环境还是不太理想,做国内的项目会很不习惯。就我现在的工作来说,起点和平时公司的项目差不多,但是同时还有做开源项目的机会。最重要的是,可以和世界级大师学到很多东西。这样得机会在国内还是比较少的,但是令人欣喜的是这样的机会也在增加,比如说象openstack这样的社区,以及很多大公司其实已经在这个领域有所动作。

图灵社区:到目前为止对软件行业最大的成就和贡献是什么?或者说你希望未来能做的贡献是什么?

要是拼写代码我是拼不过很多大牛的。我只是想在社区里继续混迹下去,其实成为Apache Member也是这其中的一部分。这其中没有什么大而虚的理念。去年在Apache meetup的时候我也和大家说过,其实现在很多人对这方面还不是很了解。oreilly做过很多这方面的书,图灵应该也比较了解。我就是想告诉更多人怎么玩。

一直以来我都没有刻意去做什么但是长时间下来这已经变成了一项事业,而不仅仅是一项工作。很多人自嘲为码农,就是好像被甩着鞭子来干活一样,很痛苦。我们在做的时候都是想怎么把代码做得更好更漂亮,因为那是要马上接受检验的。而如果是被催促着写代码的话,没有人会把一个功能写个三四遍,(程序员的)活只要对得起拿的钱就可以了。更有甚者,有人会故意写几个bug,反正我要走了(离职),等着别人来踩我的雷吧。没有人在这种情况下回想方设法再去提高自己的能力。而对于我们来说这(写代码)是一个自激励的过程,相当于一个自己养的孩子,你要从始至终对它负责。

图灵社区:跨文化协作也是你面临的一个问题吧?

首先是时差问题,这是必然的,项目大多数人员都在欧美,比如说开会时间可能在凌晨三点左右。Apache member一年会开两次会,虽然会考虑所有人的时间,但是到了咱们这也只能是三点了,就像看足球一样。然后就是文化方面了,比如说最近有一个很好的项目但是死掉了,很多人都曾为这个项目贡献代码,包括很多国内的团队。(死掉)的原因首先是冲突的许可证,但是还有另一个问题,就是因为国内没有专人来协调这个项目。Apache已经存在了十几年的时间了,他现存的逻辑和哲学还是很成熟的,Apache每年会开一次大会,其中有一个track完全是关于社区建设方面。但是国内没有人对这方面有足够的了解。国内的文化环境让很多人一直以来习惯于被动着做事,技术创新需要打破固有的一些东西,我们就很难产生杰出的领路人。但是现在的环境比起几年前已经在好转了,很多大互联网公司已经在投入人手专职来做这些事。现在很多人已经加入到社区里来了,这和以前有很大分别,原来我们还只限于使用者级别,现在还是在朝好的方向发展的。

国内环境的另一个问题就是很多很优秀的coder,写了几年代码就不再写代码了,他们会变成管理层。而开源社区是需要你长时间的投入,并以此为乐的,这样才是一个好的环境。我在现在的项目上已经六七年了,还没有做管理层的诉求。

图灵社区:这和你背后的公司对你的支持是分不开的

是的,他们是一家很不错的公司,找到了一条很好的道路,现在年收入已经融资超过十亿美元。我每天不需要上班,老板也很信任我们,管理很宽松。

图灵社区:你认为这有可能称为中国老码农的一条出路吗?

这是有可能的,比如说Nginx。其实只要你持续地做,最终的东西肯定会被大家所认可。只要你肯钻研,愿意坚持就可以做下来。其实语言并不是决定性的阻碍,只要你敢于参与和交流,在社区里积极地回答问题。

这是一条明摆着的路,但是需要个人投入时间和精力,只要投入,就一定会有回报。这个回报是多方面的,首先你的工作能力肯定会提高,另外还有一点,就是你不用再被逼迫着去做什么事,而是在工作中找到了乐趣。所以希望大家都可以知道有这么一个圈子,都来混吧(笑)。就像混江湖一样,在这过程中你的meritocracy(类似于声望)就会不断提高,你的等级就会越来越高。这和现在一些回答问题的网站的模式很类似。这样就可以鼓励大家为社区作贡献。象你们图灵社区不是有银子什么的吗(笑)。同样都是一种奖励机制,对会员起到正向引导作用。

图灵社区:你认为中国开源环境的最大问题是什么?

我觉得最大的问题是大家还没有找到门儿,不知道怎么进来“玩”,从这点上来说,其实开源是不分国界的。但话说回来,语言障碍还是有一些,有一个分析报告说咱们在这点上和日本的情况有点象。

但更重要的问题是我们仍然大多数停留在“用”的状态,而且是悄悄的用,这样一来社区的氛围就不是很浓。国外在开源方面做得比较好,和社区的健康发展是分不开的,其实我们(国内的工程师)人数很多,拿到项目是很容易的,一般来说有三分之一时候可以拿下来,但是真正能持续做的人很少。

真正在Apache上做开源的人不多,圈子很小,其实有感兴趣的人,比如学生,如果可以持续做下来,收益是很大的。比如说比较容易找工作,然后你就可以全身心的投入到项目中来了,没有了后顾之忧。这是一个成长的历程,从一开始类似于黑客这样以兴趣为导向的,然后到后来有一个商业环境来帮助你,这样才是一个成熟的链条。我认为这有可能是国内最缺乏的。这再一次说明国内的环境不太好,如果大家只是使用,而不去反哺社区。有些人甚至自己做出了patch也不愿意分享出来,这样就无法完成一个循环的全过程,这样社区就无法成长起来。

与之相对比的是很多牛人他们并不吝啬于自己好的点子,他们乐于分享和讨论。而且大多数这样的人是不爱说空话的,大家要是觉得好,他就会写出来,大家来用,他收到的反馈也会很迅速及时。这和(在)商业公司(里工作)是完全不同的,很多代码提交之后,可能要等半年才有人反馈,这在开源界是无法想象的。在开源领域快速反馈和迭代可以使项目迅速的成长。而这都是社区这样的环境所能给予项目的,可能只需要3、4个人领着头向前走,经费的投入也会较少,因为(我们)利用了社会化的网络来完成一个项目。

图灵社区:这也正是社区存在的意义吧?

Apache更看重的并不是你能写出多棒的代码,而是你能为社区所作的贡献。现在来说,比如说github上面会有很多各种各样的项目,你总能在上面发现很有趣的项目。

开源的许可证在这其中是个有意思的东西,它放开了许多口,但是如果你不抓住社区的话,(项目)最终有可能会不为你所控,比如说我可以很容易作出一个山寨版。但是只要你抓住社区,你就可以继续做你的项目。比如说Hudson开发者社区的那个例子,这缘起它与Oracle硬件套件之间在java.net上的各种摩擦,开源的持续构建项目Hudson计划另开分支并更换名称,而社区上的人都会跟随社区离开Oracle。这就是这样的一个例子,社区是十分重要的,而国内(包括淘宝)的社区建设还不是很成熟,不够透明和开放,需要克服这些障碍(社区)才会吸引更多的人进来一起“玩”。

图灵社区:你个人倾向的开源许可证是什么?其背后的原因呢?

许可证是这样一种东西,它允许你修改代码和改进,并用各种各样的协议来保证它。其实什么样的许可证就会决定社区朝什么方向发展。商业公司之所以愿意雇人在Apache上作共享,其实就是因为他们的许可证是商业友好的。如果他们投入一些人力,就可以确保项目朝着期望的方向发展,同时还可以用项目进行商业化的运作,这样就可以给这些人开工资,达到商业上的平衡。为什么大家愿意用(Apache许可证),就是因为(商业上)使用起来很方便,这样用的人多了,社区自然就壮大了。

我做过的camel项目有些不同,因为它需要用到各个方面的库,所以会涉及到第三方。比如说会涉及到GPL协议,这样就迫使我们必须使用GPL协议。所以我们只能另起了一个项目,用GPL协议,其实对于终端用户来说,这没什么区别,但是对于我们来说则不同,因为我们需要发布这个软件。许可证这东西细说起来规矩很多,但是在国内大多得不到尊重。大家都是随意拿来用,这时我就会说:出来混迟早是要还的。这是原则性问题,很多互联网公司存在这样的问题,用开源软件肯定可以降低成本。

国内对于盗版的使用变成了一种氛围,这其实是践踏了许可证。通常人们不会阅读用户协议,比如说很多人做了qq插件然后被抓,这其实都是在协议里面写着的。但是对于开源来说,对于终端用户的限定是非常小的,几乎没有什么限制。这也是开源软件的初衷。越是面向于极客类型的用户,就越合适,因为他们就是想要改变一些东西。这个时候其实无论给不给他们源代码他们都想去改。

图灵社区:对开源软件有兴趣的人,你有什么建议?

找到你感兴趣的点来入手,然后就来社区上混就可以了,否则只是看文档什么的其实是很无聊的。但是有一点要注意,在问问题的时候一定要经过思考,而不是一有问题就马上发问。我也经常会看见这样的问题,但是如果你有更好的建议,或者你能说出功能上哪些地方有问题,你就可以把想法写出来,甚至是把代码写出来,这样就会收到有效的反馈。甚至你的英文不太好,都不是什么问题。只要你肯持之以恒、足够勤奋就可以了。还有一点就是要积极地回答问题。只要掌握这三点,其实一个普通程度的人就可以启动了。知识改变命运,想通过开源项目获取知识,只要你愿意,地球上没有人能阻挡你。 在这里不拼爹,不拼公司背景,拼的是对技术追求的那颗心。


更多精彩,加入图灵访谈微信!