FireFox是如何工作的? 源代码遍历?

我想了解FireFox是如何在幕后工作的。 我想了解源代码和不同的组件,但代码库相当大,我不知道从哪里开始。

我想知道是否有任何人从Firefox或团队以外的任何人写的某种步行。

我看了一下: https : //developer.mozilla.org/En但我没有看到任何尖叫“从这里开始”。 我只是试图审查他们的代码基地[自我]教育的原因。

多伦多的塞内卡学院(Seneca College)有一个专门针对这个的程序 – 初学者到Mozilla的开发。

看看这些链接:

真实世界的Mozilla

2008年秋季每周时间表

一些实验室,如果你想潜水在:

实验室:学习协作开发(2008秋季)

实验室:build设开源项目(2008年秋季)

实验室:真实世界Mozilla – 源代码阅读

实验室:使用修补程序

实验室:潜入Mozilla – debuggingMozilla

实验室:雷鸟Bug修复

实验室:修改浏览器

实验:使用扩展名修改Firefox

实验室:真实世界Mozilla – 第一个XPCOM组件

实验室:真实世界Mozilla – 将Chrome添加到第一个XPCOM组件

如果您需要任何帮助,请在irc.mozilla.org上使用IRC:#seneca。 不要担心,如果你不是(Seneca)的学生,世界各地的许多人(来自Seneca的人,来自Mozilla的人等)都在这个频道上,目的是教育开发者关于开源的一般情况, Mozilla项目具体。

祝你好运!

这是一个自上而下的答案(其他大部分都是自下而上的):

Firefox是一个XUL应用程序(另见: XUL ); XUL是用于描述由渲染器解释的GUI的XML的变体,与在浏览器中呈现HTML的方式大致相同,但XUL包括浏览器的菜单,button,状态栏,键盘快捷方式等。 ; 我已经能够在XUL中比在其他框架中更快地将一些简单的GUI应用程序放在一起(并且它是独立于平台的!)。

如果您查看Firefox应用程序目录(无论您在系统上安装了哪个目录),您将看到一个带有一堆.jar文件的“chrome”目录。 这些只是具有特定结构(包括清单)的.zip文件,您可以自己查看。

大多数Firefox浏览器实际上是XUL + Javascript。 它确实利用了很多用C ++编写的低级库,并且可以通过XPCOM访问Javascript,但是如果您想要了解(和修改)更高级别的行为,XUL + Javascript部分可能就是开始的地方。

编辑:ps这里是一些教程/参考XUL: 1 2和O'Reilly书

编辑:XUL文档与用户+事件交互的方式非常类似于HTML文档(只有更多!)。 有一个用于dynamic修改 XUL的文档模型,并且有事件模型有事件监听器。 它们都像HTML + DOM +它的事件模型一样,但是具有更丰富的内build对象/接口/事件/等等。 事件处理程序是特定types的接口,可以通过Javascript对象实现(在XUL中用onclick="blah()" ,或者通过Javascript调用addEventListener()dynamic添加 – 两者的语法完全相同Firefox中的HTML事件)或C ++或其他可以使用适当接口实现XPCOM对象的语言。

一种开始的方法是查看Firefox中最近修复的一些bug(请参阅Bugzilla ),并查看它们是如何修复的。

那就说。 Firefox的代码库非常庞大,很可能没人会明白,所以最好从一小段(比如collections夹)开始,然后尝试为它find代码并查看它是如何工作的作品。 再一次,解决的错误和他们影响的文件将是一个很好的方式来确定一些相关的代码开始。

我使用Mozilla的代码(正是Mozilla / Nss /安全)。 就我对mozilla的理解而言:

它遵循与NSPR层(Netscape Portable Runtime)的分层体系结构,底层与​​操作系统交互。

从中获取源代码
https://developer.mozilla.org/En/Download_Mozilla_Source_Code并在你的工作环境中构build它(据我所知它支持各种平台/体系结构);

joinMozilla开发者社区/尝试通过testing一些组件来帮助。

代码为mozilla,通过: http : //www.mozilla.org/hacking/ (如果你是C ++程序员,C ++可移植性标准是必须的)。

希望以上的一些可能会帮助你入门。

最近发布了一组video(截至2015年初),浏览了部分Mozilla Firefox组件。 也许你会对他们感兴趣。

https://air.mozilla.org/search/?q=tag%3A+TorontoBootcamp

他们不是很新鲜,但仍然可以帮助我想。