What is it?
● Firefox OS. Referred to as Boot 2 Gecko or
● Firefox OS is an open source mobile
operating system from Mozilla, based on
Linux and powered by Mozilla's Gecko
●The idea behind Firefox OS is simple:
Building apps for the mobile web using exactly the same tools and
languages as the desktop web.
Simply it's aWeb App transformed in User
Interface for your smartphone.
Firefox OS is simple to create and work on.
It is completely based on HTML5 and CSS3
just like a browser running on your phone.
HOW IS IT BUILD?
ARCHITECTURE OF FIREFOX OS
Linux Core (GONK)
Firefox OS is based on the proven firefox engine (GECKO). Fully open
and standard proposed-APIs
UX layer (GAIA)
Gonk is the lower level operating system of the Firefox OS
Gonk is a very simple Linux distribution.
Gonk is a porting target of Gecko.
i.e there's a port of Gecko to Gonk, just like there's a port of
Gecko to OS X,Windows, and Android.
Porting target (in gecko there is a lot of code that is
platform agnostic, and some parts (like windowing
system, input system) that are platform specific. gonk is
the platform we use for b2g devices)
It consists of a Linux kernel (based on the Android Open Source
Project (AOSP)) and userspace hardware abstraction layer
HAL (set of user space libraries which are common open-source
projects: Linux, libusb, bluez. Some of the other parts of the
HAL are shared with the Android project: GPS, camera, and
Firefox OS project/Gecko has full control over Gonk, we can
expose interfaces to Gecko that can't be exposed on other
operating systems. For example, Gecko has direct access to the
full telephony stack and display frame buffer on Gonk, but
doesn't have this access on any other operating system.
Linux kernel ??
LINUX KERNAL & FLOW OF CONTROL
In Linux, the flow of control during a boot is from BIOS to boot
loader, to kernel.
(BIOS : initialize and test the system hardware components, and to
load a “bootloader” from a mass memory device ).
The boot loader often presents the user with a menu of
possible boot options.
The boot loader can be configured to time out if the user does
not interact with the boot loader, thus selecting a default kernel
and system configuration.
After the selection is made, or after reaching a selection time-out,
boot loader loads the kernel.
The boot loader starts the kernel(by calling calling start_kernel()) and the kernel
start_kernel() then performs the majority of system setup (interrupts,
the rest of memory management, device and driver initialization,etc.)
before spawning separately, scheduler, and the init process (which is
executed in user space).
(The kernel then starts the scheduler (to allow multi-tasking) and runs the
first program init (short for initialization: is a program for Unix-based
computer operating systems that spawns all other processes))
The init process executes scripts as needed that set up all non-operating
system services and structures in order to allow a user environment to be
created. Usually, these scripts then present the user with a way to
authenticate and thus login into the system
This is the Firefox OS application runtime; that is, the layer that
provides all of the support for open standards: HTML, CSS, and
sees on Firefox OS.
Gecko is a middleware composed of
layout engine (for rendering HTML content)
porting layers to the different platforms,networking stack,graphics
stack (which delegates-to give power/duty- operations to the GPU when needed)
Gaia is the user interface level of Firefox OS. Everything that appears on the
screen after Firefox OS starts up is drawn by Gaia, including the lock screen,
home screen, dialer, and other applications. Gaia is written entirely in
system and hardware is through standard Web APIs, which are
implemented by Gecko.
Because of this design, not only can Gaia be run on Firefox OS devices, but
also on other operating systems and in other web browsers.
UI implementation based on building blocks and JS libraries
Core - Certified Applications
Applications which are the backbone of a contemporary mobile device
Dialer, Messaging, Contacts, Media, Gallery, Clock, etc.
Pre-installed on the device .
Trusted Packaged Applications
Installed from marketplace.
Reviewed and cryptologially signed byApp reviewer.
Communication with Gecko??
COMMUNICATION WITH GECKO
The communication between Gecko and Gaia's System app is done via
mozChromeEvent and mozContentEvent.
mozChromeEvents are broadcast from chrome to content(i.e for messages
from chrome (parent window) to content(system apps))
mozContentEvents are broadcast from content to chrome.
This communication is used to control the creation and closure of the trusted
UI and to inject the required functions for notifications and other tasks,
including telling the System app to start an app.
FIREFOX OS APPS ARCHITECTURE
The app startup process
When the user selects an app,the home screen app starts by getting an
app reference from the “app API” ,then calling the “app.launch()”
method to launch.
Gecko receives that request and sends the “mozChromeEvent” to the
System app with the app's details.The System app handles that event
by inserting a new<iframe> into its DOM tree and loading the app
within the new <iframe>.That frame will be the app's home until it
Every app requires a manifest that describes the app.
Mozillian and FSA
SUPPORT OPEN WEB
Doing good is part of our code