什么是 Chromium
这里我就不多介绍了,分享下来自中文维基百科的词条内容。根据 zh.wikipedia.org/ 的定义
Chromium是Google为发展浏览器Google Chrome而开启的免费开源软件项目,以BSD许可协议等数种许可发行并开放源代码。Chromium与Google Chrome共享大部分代码和功能,但功能和商标之间有一些细微差别。
Google使用该代码来制作其Chrome浏览器,该浏览器比Chromium具有更多功能。许多其他浏览器也基于Chromium的代码,例如Microsoft Edge和Opera。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的可视化浏览等等
代码搜索
其中最有意思的就是搜索框。可以用一些搜索规则,搜到你想要的一切。例如我想搜索关于 console 的相关 c++ 源码,可以输入 lang:cpp console :
此外,也可以输入后直接按下回车,查看更多搜索细节:
想要更多搜索技巧,可以参阅:developers.google.com/code-search… 官方的搜索语法指引
Chromium Bugs
想之道 Bug 的修复都讨论了什么内容以及修复历程?可以前往 Chromium Bugs 查看。Chromium Bugs 是Chromium官方上报 Bug,开启 Issue 的平台。有点像一个小型的项目工具
在这里你可以看到全世界的
Chromium 使用者实时上报的Bug,以及如何进行修复的,讨论的修复内容。
这里我们以 Chrome 90 要上线的一个已修复的Bug为例子。Bug的内容是: setTimeout(..., 0) 在源码中会被设置为延时 1ms 执行,而不是立即执行回调函数。 Chrome 90 中修复了这个Bug:bugs.chromium.org/p/chromium/…
我们详情页面,可以看到有许多关于Bug的信息。例如指派给了哪些官方人员,详细内容信息,状态,以及Bug发生的问题模块。
这是个开启于2014年的bug,一路看下去会发现很多有意思的故事和观点。
翻到最后,还可以看到修复此Bug所更新的代码提交记录,这里画红框的是当次提交的 commit 。每条commit都会关联一个 Bug 的 id ,且会在下面要提到的 Chromium Gerrit 平台中生成一条 review log 。
Chromium Gerrit
Chromium Gerrit 是 Chromium 的代码合并 review 平台。在这里可以看到每次代码更改的文件变动,更新记录等等。
还是接着以 setTimeout(..., 0) 这个Bug为例,我们可以通过Chromium Bugs这个平台找到修改他的CR记录:chromium-review.googlesource.com/c/chromium/…
通过这个平台,我们可以清晰地看到每次CR都修改了啥,以及如何进行修改。
Chrome Platform Status
Chrome Platform Status 则是公布 Chrome 迭代进展情况、版本预告、和公布一些匿名数据的地方。在这里可以看到下一代 Chrome 要更新的内容以及修复的问题。
最后
以下是文中提到的平台链接:
另外开了个讨论群,欢迎加群(二维码点这里)