Chromium 源码学习生态

5,269 阅读4分钟

什么是 Chromium

这里我就不多介绍了,分享下来自中文维基百科的词条内容。根据 zh.wikipedia.org/ 的定义

ChromiumGoogle为发展浏览器Google Chrome而开启的免费开源软件项目,以BSD许可协议等数种许可发行并开放源代码。Chromium与Google Chrome共享大部分代码和功能,但功能和商标之间有一些细微差别。

Google使用该代码来制作其Chrome浏览器,该浏览器比Chromium具有更多功能。许多其他浏览器也基于Chromium的代码,例如Microsoft EdgeOpera。Chromium的更新速度很快,每隔数小时即有新的开发版本发布。由于新功能会先在Chromium上测试,等待认证后才会应用在Google Chrome上,所以Chromium相当于Google Chrome的先行版。

和 Chrome 的区别

根据 zh.wikipedia.org/ 的定义

  • Chrome具有与Chromium相同的用户界面功能,但Chrome将配色方案更改为Google品牌的配色方案。
  • Chromium 是开源软件,以 BSD许可协议发布;Google Chrome则不开放源代码,因此其二进制文件根据Google Chrome服务条款被许可为免费软件[13]
  • Google Chrome 增加Google Update自动更新系统。
  • Google Chrome 增加自动发送使用统计资料及死机报告给Google的选项。
  • Google Chrome 增加Widevine数字版权管理模块。
  • 当Chrome用作市场推广及分销合作伙伴时会记录并发送用户纪录,如何时何处下载的信息。2010年6月,Google解释任一版本的Chromium或是从Google官方网站上下载的Chrome都不带有这一记录用户信息的功能。同时也公开了这些记录的源代码,以便开发者了解此功能是如何运作的[14]
  • Chromium不包含Google API Key,导致部分功能仅Google Chrome能使用[15]

Chromium Code Search

正文从这里开始。首先我们先看源码学习的核心平台 —— Chromium Code Search 。这是Google官方推出的在线浏览 Chromium 源码的平台。

其功能像一个小型IDE。包含快速转到代码的定义,全局代码搜索,文件树,Markdown的可视化浏览等等 image.png

代码搜索

其中最有意思的就是搜索框。可以用一些搜索规则,搜到你想要的一切。例如我想搜索关于 console 的相关 c++ 源码,可以输入 lang:cpp console : image.png 此外,也可以输入后直接按下回车,查看更多搜索细节: image.png

想要更多搜索技巧,可以参阅:developers.google.com/code-search… 官方的搜索语法指引

Chromium Bugs

想之道 Bug 的修复都讨论了什么内容以及修复历程?可以前往 Chromium Bugs 查看。Chromium Bugs 是Chromium官方上报 Bug,开启 Issue 的平台。有点像一个小型的项目工具 image.png 在这里你可以看到全世界的 Chromium 使用者实时上报的Bug,以及如何进行修复的,讨论的修复内容。

这里我们以 Chrome 90 要上线的一个已修复的Bug为例子。Bug的内容是: setTimeout(..., 0) 在源码中会被设置为延时 1ms 执行,而不是立即执行回调函数。 Chrome 90 中修复了这个Bug:bugs.chromium.org/p/chromium/…

我们详情页面,可以看到有许多关于Bug的信息。例如指派给了哪些官方人员,详细内容信息,状态,以及Bug发生的问题模块。

这是个开启于2014年的bug,一路看下去会发现很多有意思的故事和观点。 image.png

翻到最后,还可以看到修复此Bug所更新的代码提交记录,这里画红框的是当次提交的 commit 。每条commit都会关联一个 Bug 的 id ,且会在下面要提到的 Chromium Gerrit 平台中生成一条 review log 。 image.png

Chromium Gerrit

Chromium Gerrit 是 Chromium 的代码合并 review 平台。在这里可以看到每次代码更改的文件变动,更新记录等等。

还是接着以 setTimeout(..., 0) 这个Bug为例,我们可以通过Chromium Bugs这个平台找到修改他的CR记录:chromium-review.googlesource.com/c/chromium/… image.png image.png 通过这个平台,我们可以清晰地看到每次CR都修改了啥,以及如何进行修改。

Chrome Platform Status

Chrome Platform Status 则是公布 Chrome 迭代进展情况、版本预告、和公布一些匿名数据的地方。在这里可以看到下一代 Chrome 要更新的内容以及修复的问题。 image.png

最后

以下是文中提到的平台链接:

另外开了个讨论群,欢迎加群(二维码点这里)