除了听取Richard Stallman演讲之外,我们还采访了阿里集团副总裁、LVS项目的发起人、阿里开源委员会负责人章文嵩博士(淘宝正明),请他来讲讲阿里内部开源的那些事!
一个软件项目能否开源,决定权主要在业务部门。
首先是项目的直接主管需要同意,再获得所在的BU技术主管同意,然后将项目开源申请提交到集团开源委员会,法务会审核知识产权和授权协议,并给相关开源授权协议的建议,安全团队会审核代码和文档,确保我们生产系统相关的信息如配置和Hashkey等没有在代码和文档中泄露出去,不能因为开源我们的系统受到攻击。都通过之后,开源委员会备案,代码可以上传到淘蝌蚪或同步到Github上,或回馈到开源社区。这样,完成一个基本开源流程。后续开发者要对开源的质量和安全持续负责。
不同的项目情况是不一样,有的项目开源之后就放在淘蝌蚪平台上的,开发和提交都在上面,使用同一代码的repository,这样维护比较方便,开发过程和结果都是开源的。有的项目是开发过程没开源,开发完成后开源。
开源项目每年都会有,没有什么具体的计划,也不会有规定说今年要开源多少个项目的说法。开源过程都是自下而上进行的,主要是开发者们自己想开源,我们阿里的开源文化比较浓厚,他们有这个兴趣参与到开源中来。项目开源了就意味着责任,要把文档写得简洁明了,让使用者很快明白这个软件解决什么问题并能很快把它用起来。如果有人在平台上问这些开源项目相关问题的话,我们要及时回答、响应。平时开发者都会抽时间去维护开源项目。
我们的开源项目有100多个,可能从质量上来讲,会有好的,也会有不好的,参差不齐的现象有可能会出现。各个开源项目维护主要靠项目开发者自己,看在里面花多大的心思和时间来改进代码和经营开源社区。
一个项目是否适合开源,首先要看他是不是我们的核心竞争力,尤其是技术上的,搞清楚我们的核心竞争力是什么,若不是主要的核心竞争力,就可以开源。对于阿里来说,阿里未来的定位是一家数据公司,数据是最宝贵的资产,是日积月累的,而软件则是一种能力的表现。未来的挑战更多地是来自我们本身,我们的技术能否满足业务的飞速发展,所以在这个大的前提下,阿里才能走得更加开放。事实上,阿里的很多基础平台已经开源了,我们以更开放的方式和业界进行技术创新,积累更好的口碑,凝聚人才,迎接未来更大的技术挑战。
现在的开源环境相对于以往来说当然好了很多。对于一些假开源现象,我觉得那就是自找麻烦嘛!开源了不能用或者不好用的软件,不能增加技术品牌,反而是一种伤害。
没有额外的奖励机制,大部分还是开发人员在开发过程中获得的成就感、个人满足感占大多数成分。大概两年前,阿里内部为开源项目的发起者、贡献者颁发过我们公司内部的荣誉证书,作为对他们在开源上的鼓励,同时也是为了激励更多的开发者走向开源道路。
就拿LVS来说,也是比较幸运的,当时整个Linux上做网络负载均衡的几乎没有,先写了一个实现NAT方式的负载均衡软件并开源了,正好那个时候在学校已经把网络负载均衡的技术挖掘到极致了,独创了用IP隧道实现负载均衡,然后实现了直接路由方式的负载均衡。
我想如何把开源项目做好主要有几点:一是开源项目解决了一个恰当的需求,二是要持续改进,三是写好文档,让用户一看就知道它解决了什么问题,QuickStart文档让用户做这几步就一定能把系统转起来。
我平时花在开源项目上的时间不是特别多,我们主要是制定相应的流程、方案,来帮助、指导如何将开源的事情做得更好。我们阿里巴巴开源委员会主要目的是起着指导作用,希望更多的年轻人能够参与到开源活动中来。
我自己做过开源项目、自由软件,最典型的就是LVS,1998年我还是学生的时候就开始做这个项目,让我感觉还不错的就是它现在还活着,到现在已有16年了,全球估计有好几万或者是近十万套这样的软件一直在跑着。我倒没觉得自己的开源上所做的事情称得上是什么贡献,当初写开源软件觉得好玩,有人用它们我就很高兴了,这也是我坚持项目开源的初衷,仅此而已!