专栏名称: 京东成都研究院
京东商城成都研究院信息平台
目录
相关文章推荐
51好读  ›  专栏  ›  京东成都研究院

CDRD TALK | Chromium项目质量管理初探

京东成都研究院  · 公众号  · 成都  · 2018-01-24 17:24

正文

01

什么是Chromium项目?

Chromium是由Google公司主导开发的一个开源项目,其中Chrome浏览器就是基于该开源项目的一个商业化产品,Chromium提供一个快速、安全、稳定的web运行平台,促进了Web应用(尤其是HTML5)的发展。


Chromium是一个复杂而庞大的开源项目,其中包含了许多开源的子项目,如浏览器渲染引擎WebKit/Blink、JavaScript脚本引擎V8、2D图像绘制库Skia、还有Web实时视频通信库webrtc等等。


Chromium支持的操作系统众多,如win32、win64、mac、linux、android、ios等,众多的产品基于Chromium内核,如360安全浏览器、搜狗浏览器、QQ浏览器、百度浏览器、有道云笔记、Android4.4之后系统原生浏览器、Android WebView等等。


下图展示了Chromium项目的架构及其包含的模块,可知渲染引擎Webkit只是其中一个模块,和它并列的还包括CPU/CommandBuffer(硬件加速架构)、V8 JavaScript引擎、沙箱模型、PPAPI扩展、NPAPI插件等等。Content模块和Content API将下层的渲染机制、安全机制和插件机制等隐藏起来,提供一个接口层,被其他项目包括Chromium浏览器、Content Shell、Android Webview等使用。


02

Chromium开源项目的社区活跃度

1、代码行数2017年11月大概为1800W行,下图是Chromium项目的代码量增长趋势。

2、2017年10月代码提交次数为7534次,2016年11月底~2017年11月底共计85000+次提交,同比上年度增加16%。

3、单月的contributors数:2017年8月有1095人,2016年11月底~2017年11月底共计2695个Contributor,同比上一年度增加58%。

4、项目的语言使用情况分布,主要使用C++语言,占比接近一半,其次是HTML、JavaScript、Python、shell等语言。


03

项目的发布周期

1.Chromium项目包含以下四种版本发布类型:

  • Canary Channel 金丝雀版本,展示最新功能,每日构建,构建即发布,主要报crash和使用率。

  • Dev Channel    1~2周,主要展示最新工作。

  • Beta Channel   每周更新最新功能,6周一个迭代,比stable版本早一个月发布。

  • Stable channel  所有测试case通过,且chrome测试团队保证质量,2~3周小版本发布,6周大版本发布

2.主要支持的操作系统有以下几种:

  • Windows 64-bit

  • Windows 32-bit

  • Mac

  • Linux

  • Android

  • iOS

网址 http://omahaproxy.appspot.com/ 中包含了chromium项目近期发布的所有版本信息。


04

Chromium项目的代码提交管理

1、如何向Chromium项目中提交代码?

  • Chromium要求所有patch都有对应的issue,如果你解决的问题并不是一个已知问题,需要提交issue。

  • 如果你自行提交issue,需要与Chromium的测试人员沟通,确保他们能重现问题,否则这个issue不会被分配。

  • 一旦issue被确认,Chromium测试人员会将issue的状态置为Assigned。如果你有解决方案,建议事先与代码Owner沟通,确认你的解决思路可行。

  • 若Owner接受你的解决思路,就可以开始提交patch,如果第一次提交代码,首先要在线签署CLA。

  • 迁出需要修改的Chromium分支,通常是trunk,然后新建一个分支,命名随意,比如你解决的issue是319619,可以命名为bug-319619。

  • 代码修改,使用chromium自带的git-cl工具提交到Chromium强大的Code Review系统Rietveld。

  • CL成功后你将会在Rietveld看到你的Outgoing reviews一项有了新的条目,接下来的工作,就是等待reviewer们反馈。

  • 在这个issue下的所有回复都会自动发送email,只需要等待reviewer们的意见,并随时准备修改你的代码。

  • 一旦你收集到足够的“LGTM” (“Looks Good To Me”)评论,你可以点击Rietveld上对应的issue页面的“commit”项 ,Patch会被提交到CommitQueue,稍后Rietveld会通过Trybot运行大量自动化用例验证你的修改是否引入新的问题。

  • 一旦你的patch通过了所有trybot的考验,你的patch将被正式提交到Chromium上。


2、代码提交的三种角色

  • Contributor与committer

    有代码提交权限的称为committer,没有权限但通过别的方式贡献代码的叫contributor。

  • 成为committer

    简单来说就是提交10到20个有价值的patch并请至少3个以上不同的人review过,然后请某人提名你作为committer候选人并获取另外两个committer对你提名的支持。

  • 成为code owner

    拥有chromium项目的代码提交权限6个月以上,并在相应代码目录下提交过大量重要的代码,且最近90天做了大量代码提交或者评审工作。


3、代码提交过程中频繁使用的四种系统

  • Bug提交与管理系统:

    https://bugs.chromium.org/p/chromium/issues/list

  • Code Review系统Rietveld和Gerrit:

    https://chromium-review.googlesource.com/q/status:open

  • Commit Queue:代码提交队列

  • CI系统BuildBot、Tryserver、Trybot: https://ci.chromium.org/p/chromium/g/main/console


4、严格的代码审查制度

  • 所有代码在check in之前必须经过code review,未经评审的代码无法被提交到代码仓库。

    Code Riew是Chromium保证代码高质量的重要手段,整个Google的代码库是树状目录结构,根节点下是各个大产品、基础模块的目录,下面又分各子模块目录,依此类推。每个目录都有几个“owners”,通常是相应产品或模块的Tech Lead或者资深开发人员,所有发生在这个目录下的代码更改必须发送给他们进行review


  • 代码质量与风格的标准严格统一

    每个工程师到Google第一件事情就是要掌握所用语言的标准并通过练习与测试,在做code review时,各reviewer也会事无巨细的针对系统的设计、实现的正确性、复杂度、代码风格和测试完整性等各方面一丝不苟的进行评审,通常代码更改几乎不可能一次性通过。Chromium项目开发中执行的代码规范在网址

    https://chromium.googlesource.com/chromium/src/+/master/styleguide/styleguide.md 中有详细介绍,主要包含C++、Object-C、Java、Python、JavaScript、Html、CSS规范等。


  • 严格的测试

    测试从单元测试开始,每个新开发的类、函数或者逻辑更改必须包含相应单元测试。每次代码更改除了“生产性”的代码,必须包含单元测试代码,否则Code Review无法通过。提交代码前,除了所更改代码本身的单元测试必须通过外,系统通常还会根据依赖自动执行所更改代码影响到的其它编译单元的单元测试,有任何一个单元测试失败,代码就不得提交。因此,在整个系统中,单元测试是基石,对于系统的健壮性有举足轻重的地位。


5、Code Review

CodeReview系统Rietveld或Gerrit

  • Rietveld网址:







请到「今天看啥」查看全文