我想了解FireFox在幕后的运作方式。我想了解源代码和不同的组件,但代码库相当大,我不知道从哪里开始。
我想知道是否存在某种行走方式,但任何人都可以从firefox团队或社区外部编写。
我看了一下:https://developer.mozilla.org/En但是我没有看到任何尖叫声“从这里开始”。我只是试图通过[自我]教育原因来审查他们的代码库。
答案 0 :(得分:36)
多伦多的塞内卡学院有一个针对这一目标的计划 - 初学者到Mozilla开发。
查看以下链接:
如果你想直接潜入某些实验室:
Lab: Learning Collaborative Development (Fall 2008)
Lab: Building Open Source Projects (Fall 2008)
Lab: Real World Mozilla - Source Code Reading
Lab: Dive into Mozilla - Debugging Mozilla
Lab: Modifying Firefox using an extension
Lab: Real World Mozilla - First XPCOM Component
Lab: Real World Mozilla - Adding chrome to first XPCOM component
如果您需要任何帮助,请在irc.mozilla.org上使用IRC:#seneca。不要担心,如果你不是(塞内卡)学生,世界上很多人(来自塞内卡的人,来自Mozilla的人和其他人)都在这个渠道,目的是教育开发人员一般的开源和特别是Mozilla项目。
祝你好运!答案 1 :(得分:30)
这是一个自上而下的答案(其他大多数都是自下而上):
Firefox是XUL应用程序(另请参阅:XUL); XUL是XML的一种变体,用于描述由渲染器解释的GUI,与在浏览器中呈现HTML的方式非常相似,但XUL包括浏览器的菜单,按钮,状态栏,键盘快捷键等。它非常整洁;我已经能够在XUL中将一些简单的GUI应用程序组装得比在其他框架中快得多(并且它与平台无关!)。
如果您查看Firefox应用程序目录(无论您在系统上安装它的哪个位置),您都会看到一个带有一堆.jar文件的“chrome”目录。这些只是具有特定结构(包括清单)的.zip文件,您可以自己查看它们。
很多Firefox浏览器实际上都是XUL + Javascript。它确实利用了许多用C ++编写的低级库,并且可以通过XPCOM访问Javascript,但是如果你想了解(和修改)更高级别的行为,那么XUL + Javascript部分可能就是起点。< / p>
编辑:p.s.以下是XUL的一些教程/参考:1 2以及O'Reilly book
编辑:XUL文档与HTML文档非常相似(只有更多!)与用户+事件的交互方式。有一个dynamically modifying XUL的文档模型,有event models个事件监听器。两者都像HTML + DOM +它的事件模型,但有更丰富的内置对象/接口/事件/等。事件处理程序是特定类型的接口,可以通过Javascript对象实现(在XUL中使用onclick="blah()"
声明,或通过Javascript调用动态添加到addEventListener()
- 两者的语法完全相同Firefox中的HTML事件或C ++或其他可以使用适当的接口实现XPCOM对象的语言。
答案 2 :(得分:5)
启动的一种方法是查看Firefox中最近修复的一些错误(请参阅Bugzilla)并查看它们是如何修复的。
那就是说。 Firefox代码库非常庞大,很可能没有人理解所有内容,所以最好先从一小部分开始(比如收藏夹),然后尝试找一下它的代码并查看它是如何实现的作品。同样,已解决的错误及其影响的文件将是识别一些相关代码的好方法。
答案 3 :(得分:2)
我使用了mozilla代码(恰好是mozilla / nss / security)。据我对mozilla的理解:
它遵循分层架构,底部有NSPR层(Netscape Portable Runtime),与操作系统交互。
从中获取源代码 https://developer.mozilla.org/En/Download_Mozilla_Source_Code并在您的工作环境中构建它(据我所知,它支持各种各样的平台/架构)
加入Mozilla开发者社区/尝试帮助测试一些组件。
代码为mozilla,通过: http://www.mozilla.org/hacking/(如果你是C ++程序员,C ++可移植性标准是必须的。)
希望以上某些内容可以帮助您入门。
答案 4 :(得分:0)
最近发布了一组视频(截至2015年初),其中介绍了一些Mozilla Firefox组件。也许你会对它们感兴趣。
https://air.mozilla.org/search/?q=tag%3A+TorontoBootcamp
他们不是新手,但我认为仍然可以提供帮助。