[关闭]
@hanting003 2016-05-24T11:58:05.000000Z 字数 2942 阅读 1525

专访奇虎360陈斌:开源与安全并存,阶梯助技术成长

参加开源社区的活动,将自己的代码开源,为知名的开源框架做出自己的贡献,这对于很多技术人员来说,都是提高技术水平的阶梯。然而,很多公司并不支持技术人员这样做,他们担心开源会给自己的产品带来安全问题,技术人员也因此丧失了很多学习机会。那么,开源真的不能与安全并存吗?

奇虎360(下文简称“360”)作为一家以安全平台为支撑的公司,在企业内部建立了一套开源体系,不仅推出了优秀的企业级开源框架,还帮助了技术人员成长和学习,得到了很多意想不到的收获。奇虎360是如何做到这些的呢?为此,InfoQ采访了360技术委员会主席,360开源委员会成员,Web平台部总监的服务端技术专家陈斌老师,让我们一起来了解开源背后的工作。

InfoQ:360目前开源现状是什么样的?有哪些代表性的开源项目?

陈斌: 360的开源现状是由下至上形成的。三年前,360的一些小团队就开始做了开源分享,去年,我们整合了360内部的GitHub账号,设置了主账号,开始着手进行统一的管理。

目前,360在GitHub的开源项目约为20个。其中,比较有代表性的有三个。一是被成为安卓黑科技的DroidPlugin,它可以在Android上免安装、免修改来运行一个APK,是一款比较成熟的插件化开发框架。还有一个比较成熟的MVC框架——ThinkJS它是一款使用 ES2015/2016 特性全新开发的 Node.js MVC 框架。三是Atlas,它是一个基于MySQL协议的数据中间层项目。这三个开源项目影响都比较大,其中,DroidPlugin目前已有三千多个star。

InfoQ:360有参与过OpenResty这样的国际型的开源项目,时是否有相关制度?是否patch或fork过大型的开源项目?

陈斌: 对于国际的开源项目,我们主要是关注和使用。获取到开源项目后,我们会进行使用,根据具体情况做一些修改,遇到bug时会提交给官方。这方面没有统一的制度去参与

像Redis、OpenResty,包括一些iOS的相关项目,我们都有提交过一些patch。由于我们是做安全行业的,所以在使用开源项目时,会做一些特殊规定,所以会fork一些分支出来。

InfoQ:360的开源理念是什么样的?

陈斌:我们是鼓励开源的,并且认为开源会更有利于项目。首先,我们不担心核心技术被别人学习。现在互联网如此发达,核心技术早已不是最重要的核心,而快速提高技术水平才能保持领先,才是最关键的核心。开源是一种趋势,也是提高自身水平的一种手段,因此,我们认为,该开源技术的都应该开源,而且要给予正确的导向,鼓励开源的同时保证做到安全地开源。

InfoQ:请介绍一下360开源委员会,主要成员以及运作模式等。

陈斌: 360开源委员会是今年成立的,主要包括四个部门:技术分委会、安全审查部门、法务和市场。

每个部门都有其专门的职责:技术分委会的主要成员是架构师和工程师,负责鉴定项目用到的的技术是否适合做开源;安全审查主要是对开源项目的安全性进行审查,防止泄露公司的账号等对安全造成威胁的信息;法务部门会审核是否符合我们的开源协议;市场部门负责对开源项目做推广工作,例如做开源大会等。

InfoQ:360内部的开源流程是怎么样的,大概周期需要多久?

陈斌: 360内部的项目想要开源有规范的流程的。

大致步骤如下:

  • 技术审查。要经过技术委员会的审查。他们会分析其中的技术要点以及用户场景,来评判项目是否适宜开源。
  • 安全审核。由安全部门对源代码进行审核,确保不会对敏感信息造成威胁。
  • 法务审查。由法务审查是否遵循相关协议,例如BSD协议。
  • 开放代码。在GitHub上建立仓库,提交开源代码了。
  • 推广使用。接下来,我们还会推动开源项目的使用,不仅推动内部使用,还会由市场部来做相关的推广。
  • 长期维护。一个好的开源项目,必须有人对其进行维护,我们会将项目绑定到团队身上,由团队来负责长期维护。

一个项目由提交,经过各种审查,到最后开源至GitHub上,大约需要两周。这些过程都是在工作时间完成的,因为360不仅仅是一家安全服务公司,也是一家技术公司。

InfoQ:刚才提到对开源项目进行维护,那么360如何保证公司级开源项目的持续维护呢?

陈斌:公司级的开源项目需要投入源源不断的人力,而单个的人是具有不稳定性的,假如将它绑定在个人身上,是要冒着很大风险的。所以我们将开源项目和团队绑定在一起,由固定的团队来负责某一开源项目。这样一来,实现持续维护就容易多了。同时,由于项目的持续维护有了保障,口碑必然增强,不管是个人还是团队,荣誉感都会大大提升。

InfoQ:请介绍一下360技术委员会,它的主要职责是什么?

陈斌: 360技术委员会是我们的一个虚拟组织,对应各个领域(如前端)设立相应的分委会。具体的成员是由技术人员推选出来的,比例为5%,即100位技术人员中会推选出5位委员。

技术委员会的职责主要有以下三方面:

  • 技术评级。360内部建立了评级体系,帮助技术人员成长。很多程序员都遇到过这样的问题:刚入职时被分配到某个项目中去,这个项目由于各方面的原因做的并不成功,而后续的发展却要与该项目挂钩。这对程序员来说是非常不公平的,因为一个项目的好坏并不能代表程序员技术的高低。我们给技术人员建立了一个成长的阶梯,不以项目论成败。而360技术委员会在这个体系中担负着重要的职责,就是为技术人员进行评级。

  • 内部沟通。由于360内部的管理比较扁平化,所以会带来很多沟通上的问题。360技术委员会会来改善这种情况,打通各个团队之间的交流通道,横向沟通,学习各个团队的经验,避免重复“踩坑”。

  • 对外宣传。360技术委员会还肩负着对外宣传的职责。我们每个月的第3周的周六都会有对外交流的活动,而且还有360培训营,所有技术人员都可以免费参加这些培训活动。

InfoQ:360内部有一些非常优秀的技术团队,如何保持它们的成长?

陈斌:保持团队的成长就要保证对技术人员有正确的发展导向。首先,我们将薪资与技术级别挂钩,从薪资上直接激励技术人员提高自身技术水平。其次,我们还会为优秀的技术人员提供学习机会和环境,例如参与技术大会等。另外,我们还设有一系列的荣誉,例如对高级别的技术委员会委员颁发奖杯。

InfoQ:360内部的团队非常扁平化,能说说它所带来的好处和坏处吗?

陈斌:扁平化的管理的一大好处就是可以更好地适应变化,因为扁平化的团队更加灵活,能够快速解决问题、快速发展。而与此同时,却带来了沟通减少、继承性差、难以积累所学等问题。总体来讲,其优势还是大于劣势的。我们正从各个方面进行努力,来消减扁平化管理所带来的坏处。

InfoQ:扁平化的管理会造成公司业务由众多的小团队去分别完成,那么如何避免他们踩同样的“坑”?

陈斌: 我们有专门的技术部门,例如Web平台部,它们不直接和业务挂钩,有自己的KPI和工作职责,来做技术方面的总结和升华。这样可以避免小团队难以积累的缺点。

InfoQ:公司内的开源项目如何在不同团队进行推广?

陈斌: 推广的方式有很多,除了进行宣传外,我们还会在评级时对使用了360开源项目的人员进行加分,这可以直接促使他们使用公司内的开源项目。

InfoQ:感谢您接受我们的采访。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注