1 / 22

Conceptual Architecture of Firefox 6.0

Conceptual Architecture of Firefox 6.0. By Fully Optimized eXperience (FOX). Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736. What is Firefox?. No, but really…. http://xkcd.com/198 /. What is Firefox?. A free, open source web browser

margit
Download Presentation

Conceptual Architecture of Firefox 6.0

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Conceptual Architecture of Firefox 6.0 By Fully Optimized eXperience (FOX) Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736

  2. What is Firefox? No, but really… http://xkcd.com/198/

  3. What is Firefox? • Afree, open source web browser • Developed and managed by the Mozilla corporation • Has approximately 25% of worldwide usage share of web browsers as of September 2011 • Moved to a rapid release cycle in 2011 releasing a new version every 1 to 2 months

  4. Research Overview • Began by reading reference architecture for web browsers provided in the paper “A Case Study in Architectural Analysis:The Evolution of the Modern Web Browser” by Alan Grosskurth and Michael W. Godfrey • We did general research on Firefox as a whole before isolating different subsystems • Then did in-depth research on each subsystem and began mapping out the architecture • Important sources of Documentation • Mozilla Developers Network (MDN) • Mozilla Wiki

  5. Conceptual Architecture • Initially, we were expecting a layered architecture for Firefox • Within the layers, we expected that the distinct components were implemented in an object oriented architectural style • We were surprised to see that many of the elements of the lower layers were combined with the upper layer

  6. Conceptual Architecture with Reference Architecture Image source: Figure 3 from “A Case Study in Architectural Analysis: The Evolution of the Modern Web Browser” by Alan Grosskurth and Michael W. Godfrey

  7. XUL & XULRunner • XUL = XML UI Language  • Firefox’s user interface is not hardwired into the application, but loaded from a separate UI description. XUL is the language in which these UI descriptions are built. • Based on XML (extensible markup language) • Used to communicate data between applications • XULRunner • Runtime package that can be used to bootstrap XUL & XPCOM applications such as Firefox • Its goal is to facilitate development and deployment of internet applications • Includes mechanisms for installing, upgrading, and uninstalling Firefox

  8. Data Persistence • Session Store API • Makes it possible for extensions to easily save and restore data across Firefox sessions • Key scenario in which supporting this feature can be crucial for an extension: Firefox 2 and up lets users undo the closing of tabs • Implemented using the nsISessionStore interface • nsISessionStore: provides a means for extensions and other code to store data in associations with browser sessions, tabs and windows • nsISessionStartup: handles session restore process

  9. Data Persistence • Storage (mozStorage) • Is a SQLite database API • It is available to trusted callers, meaning extensions and Firefox components only • DOM Storage • Designed to provide larger, securer, and easier-to-use alternative to storing information in cookies • A means through which string key/value pairs can be securely stored and later retrieved for use • Useful because there are no good browser-only methods exist for persisting reasonable amounts of data for any period of time • Allows for “working offline” for extended periods of time

  10. Gecko • Primarily it is theBrowser Engine and Rendering Engine • Gecko lies at the heart of the Firefox Conceptual Architecture • Uses an Object-Orientated Architecture to implement the different components • Has support for many different standards • Through evolution from previous versions, Gecko now contains more than just the tools to render pages but also contains things such as: • Networking and Security Libraries • JavaScript Interpreter • XML Parser (Expat) is now a library in the HTML Parser

  11. Gecko Conceptual Architecture

  12. Gecko Components • Document Parser (HTML & XML Parser) • Parses both the HTML code and XML code and passes it on to the Content Model for further use • Style System • The Style System contains the CSS Parser and is responsible for getting the CSS data from Necko and parsing it before sending it to the frame constructor • Platform-Specific Rendering and Widgets • Acts as a Library for the frame constructor to call upon specifics of the platform the browser is running on using the GTK+/X11 libraries before passing it on to the UI • Image Library • Interacts with Necko in order to retrieve image data before sending it to the Frame Constructor

  13. Gecko Components • Content Model • Interacts with the various components of Gecko, DOM Storage to gather all the data needed before sending it to the frame constructor • Frame Constructor • Carries out the task of piece together all the information and actually from the rendered web page before sending it back to the UI through the Platform-Specific Rendering subsystem

  14. SpiderMonkey • SpiderMonkey, contained within Gecko, is Firefox’s JavaScript engine, written in C/C++ • Its components are a compiler, interpreter, 2 just-in-time (JIT) compilers, a decompiler, garbage collection, and a standard library • Also contains a few public APIs

  15. Necko • Necko is the main networking library for Mozilla Firefox • This library is platform independent, allowing Firefox to be versatile, true to its open source nature • Necko itself is split into a layered architecture, with a pipe-and-filter style flow of execution • It relies heavily on the XPCOM library, and uses the NSS library for its network security

  16. Necko Conceptual Architecture

  17. NSS & PSM • NSS • Network Security Services • Set of libraries, APIs, utilities and documentation designed to support cross-platform development of security-enabled client and server applications • PSM • Personal Security Manager • Consists of a set of libraries that perform cryptographic operations on behalf of a client application • Built on top of NSS

  18. XPCOM • XPCOM = Cross-Platform Component Object Module • Breaks up large software projects into modular components, which are reassembled at runtime • Provides tools and libraries that enable the loading and manipulation of these components • XPCOM provides the means of accessing the Gecko library functionality and embedding or extending Gecko • This modular programming benefits the reuse, updates, performance, and maintenance of software

  19. GTK+/X11 Libraries • GTK+ and X11 are used to create Graphical User Interfaces (GUIs) on multiple platforms • Form the Display Backend of the Architecture • They are used byGecko (specifically the Frame Constructor) to provide platform specific data • The User Interface (XUL) calls upon the libraries along with Gecko to display the page in the format for each platform

  20. UI Gecko Necko SpiderMonkey Display Backend Data Persistence Check for cached page (found) Send page to Javascript interpreter Send page to Display Backend to be rendered Rendering a cached webpage(Sequence Diagram)

  21. Summary • Firefox overall is implemented in a layered architectural style with Gecko containing most of the subsystems • Gecko uses an Object Oriented Architecture to organize and implement the components needed to render web pages • Necko is now within Gecko along with the security protocols it relies on. • The documentation was largely out-of-date or incomplete which made extracting the architecture difficult, due to the nature of open-source projects

  22. Resources • https://developer.mozilla.org/en/Mozilla_Application_Framework_in_Detail • https://developer.mozilla.org/en/Necko • https://developer.mozilla.org/en/Necko_Architecture • http://www.w3counter.com/globalstats.php • https://developer.mozilla.org/en/Creating_XPCOM_Components/An_Overview_of_XPCOM • https://developer.mozilla.org/En/SpiderMonkey/Internal • https://developer.mozilla.org/en/DOM/Storage • https://developer.mozilla.org/en/Session_store_API • https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsISessionStore • https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsISessionStartup • https://developer.mozilla.org/en/XUL_Tutorial/Persistent_Data • https://developer.mozilla.org/en/NSS • http://www.mozilla.org/projects/security/pki/nss/ • https://developer.mozilla.org/en/NSS_FAQ • http://www.mozilla.org/projects/security/pki/psm/ • https://wiki.mozilla.org/Gecko:Home_Page • https://wiki.mozilla.org/Gecko:Overview • https://developer.mozilla.org/en/Gecko_FAQ • http://research.cs.queensu.ca/home/emads/teaching/readings/emse-browserRefArch.pdf • http://www.gtk.org/ • https://developer.mozilla.org/en/Gecko_Embedding_Basics • http://xkcd.com/198/ • https://wiki.mozilla.org/Firefox/Roadmap • http://www.x.org/wiki/

More Related