所在的位置: C++ >> C++前景 >> 揭秘百度开源治理实践

揭秘百度开源治理实践

白癜风该如何治疗 http://baidianfeng.39.net/a_yufang/131119/4293352.html

近日,百度开源办公室开源工作组组长、开放原子开源基金会TOC成员沈朝华在GOTC全球开源技术峰会专场中,介绍了百度的开源实践,系统全面地梳理了百度开源的历史和治理经验。本文根据直播内容整理。

年,百度需要做大数据相关的业务,此时内部有两种声音出现,一是自己从头做起,二是基于Hadoop,最终百度决定基于开源大规模定制Hadoop,这是百度首次大规模部署开源软件,从此也渐渐拉开深度参与开源的序幕:

年,Echarts对外开源图标和数据可视化库,目前已经毕业。

同年,内部提出平台化思维提升创新效率,在百度开源发展历程中,平台化是非常重要的一步,它鼓励内部共享,帮助百度在内部逐渐推动开源建设。

年,飞桨(PaddlePaddle)正式对外开源。

平台化进入2.0,内部开源兴起。实际上,在年百度开始开源平台化建设之后,内部共享平台野蛮生长了三年,年之后百度希望内部共享和平台化也能够有序发展,开启了内部开源的兴起。

年,百度开源迅速发展的一年:Apollo自动驾驶正式对外开源;百度以金牌身份加入Apache、CNCF、Linux基金会,并持续至今;正式对外开源数据库Doris;正式对外开源RPC开发框架brpc。

年,Echarts、Doris、brpc捐献给Apache基金会进行孵化,百度以Premier身份加入LFAI基金会。

平台化进入3.0,进入云上百度时代。用云的方式解决内部开源共享、效率提升的问题。

年,百度以Premier身份加入LFEdge基金会;全球首个通用安全计算平台Teaclave进入Apache孵化;对外开源负载均衡和流量转发引擎BFE。

年,创始白金身份加入开放原子开源基金会;XuperChain捐赠给开放原子;ApacheEcharts以顶级项目身份毕业。

年,理事单位加入开源创新联合体。

截至目前,百度共主导开源+项目、0+社区贡献者、30万+GitHubStar,多个项目已经广泛应用于实际业务生产。

引入外部开源

整体上,百度对于引入开源的原则是平衡效率与安全。

沈朝华介绍,从Hadoop开始,百度很早就意识到需要依赖开源,包括大量的服务器是跑在Linux上,以及大量代码依赖GCC等等,拥抱开源势在必行。

但百度也很快的意识到,开源有风险,包括安全漏洞,高危Bugs,以及法律合规问题,比如GPL协议的传染性风险。此前,百度开源主要推动者谭中意在GOTC直播中也详细介绍了开源软件供应链安全问题。

所以百度在引入开源方面,会设置一些相应的规范防范风险,包括两个鼓励和两个禁止,通过规范化高效和合规使用开源:

鼓励使用开源软件,尤其是各语言委员会推荐的。百度是根据内部使用到的各种语言,包括C++,Java,等等,相应地会成立不同语言的语言委员会,对每种语言怎样引入开源软件做规范和参考建议。

鼓励使用各种语言的标准包管理方式来使用开源软件。

禁止使用安全指定的高危开源软件。百度安全部负责列出所有高危安全软件,列出禁止使用的高危软件名单。

禁止直接Copy开源代码到业务代码库中。此举是为了规范第三方的管理,在供应链里也讲到,这里的重要问题是要解决安全的问题,如果代码没有集中管理,是很难监控和了解有哪些代码在用,很难及时修复这些问题。

此外,百度在引入开源方面也做了一些规范和基础设施的建设。首先是建立第三方开源软件管理规范,包括:

引入:

自查。百度制定了自查指南,说明需要自查的方面,比较重要的两点包括该开源代码是否在安全黑名单中、软件的License是否符合要求,是否有风险。

引入方式。目前有包管理和统一源码管理方式。百度的源代码统一托管在内部代码托管平台上,对于第三方源码,要求必须放在third-party目录下统一进行管理。

终止。设置此条的主要原因并非指开源软件无人使用,而是指存在较大风险时,如何限期整改、删除。当发现一些软件有较大风险时,安全部会梳理出有哪些业务在使用该风险软件,并通知相应业务部门限期整改。

审计。开源软件引进之后还会伴随着不断地更新,百度会定期做代码安全扫描。

维护:明确Owner、维护团队和机制。由于有些开源软件在引入之后也会更改,所以每一个第三方软件代码引入之后,会有明确的Owner负责维护,并建立相应的维护团队和机制。

第二是开发相应代码相关工具,包括:

安全扫描工具:发现风险、CVE漏洞等。

代码搜索工具,主要解决两个问题:重复代码检测,包括代码是否重复引用,代码是否被直接应用到业务中去;代码引用问题,通过搜索工具知道third-party下面的代码到底有哪些业务在使用,有任何问题时可及时通知并跟踪解决。

搭建包管理平台,如mvn、npm等。

第三也是非常重要的——持续对全员进行开源知识培训。因为规范和工具只能解决大部分问题,大家是否真正了解开源软件的风险,是否知道如何正确使用开源软件也很重要。

百度在这方面的措施包括:产研相关的新员工入职培训中会专门设置章节,讲平台化和开源的内容。同时,内部会提供开源相关在线课程,如有关开源规范的讲解、律师整理的开源相关的法律规范及介绍等等。

通过这些原则和规范,百度希望在开源的引入上,既能比较好地利用开源的价值,也能更好地防范风险。

内部开源

沈朝华介绍了百度在集团内部的开源举措。内部开源的一个重要问题是布道,“不是所有的产研同学都会去


转载请注明:http://www.aierlanlan.com/cyrz/1957.html