QCon 杭州讲师专访:Red Hat 首席软件工程师方越

阅读数:1314 2012 年 9 月 28 日

话题:JavaQConApacheDevOps语言 & 开发架构文化 & 方法

编者按:由 InfoQ 中文站主办的2012 杭州 QCon即将召开。我们对一些专题的讲师进行了采访,谈谈他们要讲的议题。

本次采访的是Red Hat 首席软件工程师方越,在此次 QCon,他将会主持“Java20 年”的专题,并会做主题为“开源,从另一个角度看世界”的演讲。

方越自 2005 年以来全职参与企业级中间件领域多个开源项目的开发, 是 WebService/SOA/ESB/OSGi 等领域的专家。方越目前活跃在多个有影响力的国际开源项目中:

  • Apache CXF initial committer/PMC member
  • Apache Karaf initial committer/PMC member
  • Apache Servicemix committer/PMC member
  • Apache Camel committer
  • Apache Felix committer
  • OPS4J Pax Web committer
  • OPS4J Pax Logging committer

方越 70 年代出生于中国中部的一个城市,现居住在北京,日常在家工作。工作之余,他很享受和刚满周岁的儿子一起玩耍的时光。他的微博是@Freeman 小屋,他的博客在blogspotsina

InfoQ:您将在 10 月份举行的 QCon 大会上演讲。能介绍一下您关注的领域吗?

方越: 我主要关注企业级中间件领域需要用到的技术,主要集中在 ESB,SOA,例如 WebSerivce,OSGi 容器,EIP 等等。

InfoQ:开源的目的是要解构商业社会吗?

方越: 不是。我认为开源是商业社会的有益补充,甚至本身就是商业社会的一部分。有这样一种开源商业模式,围绕开源社区和开源软件, 通过雇用主要的开源项目开发者,向外提供付费的商业服务,这种付费服务包括订阅、咨询、培训等。在我看来,这种开源商业模式下,开源项目和开源社区因为有了商业公司的介入更加活跃,开源开发者有了稳定的收入获得了可持续发展,付费用户由于有了商业支持能更有效地使用开源软件,非付费用户也能从活跃的开源社区获得支持,构成了一个共赢的生态环境。

InfoQ:互联网产品开源与不开源的利弊有哪些?

方越: 我并不很熟悉互联网产品,因此这个回答我不想限定于互联网产品,从软件本身谈谈开源的优点,我想这个也适用于互联网产品。

  1. 成本优势,不是说开源不用花钱,而是说你在确定某开源软件能否符合你的需求之前不需要一次性投入太多的钱。
  2. 代码可见,可深度定制。
  3. 系统高度自由,无需绑定到特定厂商。
  4. 更敏捷, 一个活跃的开源社区,对问题的反馈速度超乎你的想象,有的时候你的问题报出来,半天就给你解决了,因为有源代码,你也可以很方便的自己打 patch,编译和替换有问题模块。
但是要想用好开源软件,需要自身的研发团队有较强的技术实力,具备把开源软件吃透的能力。 更多的时候,开源项目(尤其是企业级应用)的背后都有商业公司的支持,你可以购买相关的服务,这样你的问题可以得到更有保障的解决。开源可以为有钱的人省时间,可以为有时间的人省钱。

InfoQ:怎样加入一个开源项目?

方越: 我认为正确的使用邮件列表参加讨论是一个好的开始。可以首先选择自己工作中用到的或者是感兴趣的项目, 订阅该项目的邮件列表,看别人是怎么讨论的, 然后参与讨论,比如提问题,回答问题。参与邮件列表的讨论是一个很好的提高自己的方式,通过讨论,你可以极大的扩展自己的眼界,看世界级别的技术大牛是如何工作的,以及他们所能展现出来的能力,从而你会对自身有一个重新认定的过程进而设定更高的目标,这个过程你会得到很大的收获;参与讨论也是融入社区的一个好方法,我一直认为社区其实比代码本身更重要。另外就是通过提交 patch 做贡献,你可以为自己发现的问题提交 patch,也可以为别人发现的问题提交 patch。 Apache 下项目是这样的,你的 patch 会被一个 committer review,如果没有问题会被提交到代码库中,如果有问题会公开讨论,直到 patch 被接受。如果你在邮件列表足够活跃和提交了足够数量的高质量的 patch,达到了某个项目的准入门槛,PMC 会发起 VOTE,如果 VOTE 通过,会邀请你成为该项目的 commiter。

InfoQ:如何更有效地学习开源项目的代码?

方越: 从我的经验来看,首先要了解这个项目主要要解决的问题和架构,这些信息一般都能从项目的官方网站上找到。如果要了解更细节的实现,我推荐一种测试驱动的学习方式,任何一个好的开源项目都会有数以千计的 testcase,这些 testcase 保证了 feature 是工作的,也是代码可以不断重构的基石。如果你想了解某个 feature 是如何实现的,建议你看这个 feature 的 testcase, 通过单步跟踪的方式把代码走几遍, 这样你会很快对代码有一个很直观的了解。除了 testcase,开源项目附带的例子也很有用,把例子搞明白,对学习这个开源项目也会很有帮助。

InfoQ:Apache 基金会的资金来源是什么?基金会下面的程序员有没有薪水,如何领薪水?

方越:Apache 基金会的资金来源主要靠公开捐助。Apache 基金会会有极少数的雇员可以从 Apache 基金会领到薪水,从事基础性的服务工作,例如维护 infrastructure(邮件, jira, svn 等)。至于各个 Apache 项目的 committer,是不会从 Apache 基金会领到薪水的。但是正如我前面提到的基于开源的商业模式,会有一些商业公司基于开源社区和开源软件,提供商业服务,如果你在某一个开源项目中贡献足够大,有相当的影响力,会有商业公司愿意雇佣你,让你全职为开源做贡献。

InfoQ:随着这几年国内传统软件以及互联网公司的发展,越来越多的公司走向开放,拥抱开源,但是有没有一种可能,大家也把这种对技术发展和分享的集中起来,使得国内出现像 Apache 一样的开源组织?

方越: 国内有很多开源小组 / 社区,会定期组织交流分享,这是很积极的一面。但是要达到像 Apache 基金会的这个高度和影响力,可能性是有的,但是我不知道具体什么时候会出现。就我了解的情况,国内的公司目前主要是使用开源项目,对开源社区的回馈相对还比较少,据我所知也没有能像 Apache 下项目那样得到全球范围内广泛使用的原创性的开源项目。实话说,虽然有些令人沮丧,但是我们还有很长的路要走。