conceptual architecture of firefox 6.0 rob staalduinen 06009513 katie tanner 06060742 gordon krull...

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

Upload: albert-atkinson

Post on 22-Dec-2015

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Conceptual Architecture of Firefox 6.0 Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736 By Fully Optimized

Conceptual Architecture of Firefox 6.0

Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736

By Fully Optimized eXperience (FOX)

Page 2: Conceptual Architecture of Firefox 6.0 Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736 By Fully Optimized

What is Firefox?

No, but really…

http://xkcd.com/198/

Page 3: Conceptual Architecture of Firefox 6.0 Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736 By Fully Optimized

What is Firefox?

A free, 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

Page 4: Conceptual Architecture of Firefox 6.0 Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736 By Fully Optimized

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

Page 5: Conceptual Architecture of Firefox 6.0 Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736 By Fully Optimized

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

Page 6: Conceptual Architecture of Firefox 6.0 Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736 By Fully Optimized

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

Page 7: Conceptual Architecture of Firefox 6.0 Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736 By Fully Optimized

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

Page 8: Conceptual Architecture of Firefox 6.0 Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736 By Fully Optimized

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

Page 9: Conceptual Architecture of Firefox 6.0 Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736 By Fully Optimized

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

Page 10: Conceptual Architecture of Firefox 6.0 Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736 By Fully Optimized

Gecko

Primarily it is the Browser 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

Page 11: Conceptual Architecture of Firefox 6.0 Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736 By Fully Optimized

Gecko Conceptual Architecture

Page 12: Conceptual Architecture of Firefox 6.0 Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736 By Fully Optimized

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

Page 13: Conceptual Architecture of Firefox 6.0 Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736 By Fully Optimized

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

Page 14: Conceptual Architecture of Firefox 6.0 Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736 By Fully Optimized

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

Page 15: Conceptual Architecture of Firefox 6.0 Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736 By Fully Optimized

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

Page 16: Conceptual Architecture of Firefox 6.0 Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736 By Fully Optimized

Necko Conceptual Architecture

Page 17: Conceptual Architecture of Firefox 6.0 Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736 By Fully Optimized

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

Page 18: Conceptual Architecture of Firefox 6.0 Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736 By Fully Optimized

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

Page 19: Conceptual Architecture of Firefox 6.0 Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736 By Fully Optimized

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 by Gecko (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

Page 20: Conceptual Architecture of Firefox 6.0 Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736 By Fully Optimized

Rendering a cached webpage

(Sequence Diagram)

NeckoGecko SpiderMonkey Display Backend Data PersistenceUI

Check for cached page(found)

Send page to Javascript interpreter

Send page to Display Backend to be rendered

Page 21: Conceptual Architecture of Firefox 6.0 Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736 By Fully Optimized

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

Page 22: Conceptual Architecture of Firefox 6.0 Rob Staalduinen 06009513 Katie Tanner 06060742 Gordon Krull 06003108 James Brereton 06069736 By Fully Optimized

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/