Core Technologies
Gaia - the user interface application for Firefox OS devices; this is a Web application running atop the Firefox OS software stack.Gonk - the operating system layer underneath Gaia. This consists of a Linux kernel and a hardware abstraction layer to which Gecko communicates.
Gecko - is the layer of Firefox OS that provides the same open web standards implementation used by Firefox and Thunderbird, as well as many other applications
![]() |
| platforms |
GAIA
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, dialler, and other applications.
Gaia is written entirely in HTML, CSS, and JavaScript. Its only interface to the
underlying operating system and hardware is through standard Web APIs, which
are implemented by Gecko.
Because
of this design, Gaia can not only be run on Firefox OS devices, but on other
operating systems and in other web browsers (albeit with potentially degraded
functionality depending on the capabilities of the browser).
Third
party applications onto the device installed alongside Gaia can be launched by
Gaia.
Components of Gaia
Gaia
consists of mainly Apps and JS libraries. It is also called the application
layer. Following are the types of apps:
- Core-certified apps
- System apps
- Trusted package apps
- Hosted apps
The Gaia lock screen
By default, the lock screen is enabled, and the default PIN
to unlock the device is "0000". This most likely will change over
time as this feature is fleshed out.
![]() |
| lock screen and home screen |
The default Gaia interface
The default interface in Gaia is similar to what you see on
most typical smartphone, as seen here.
This
image is obviously of a pre-release version of the operating system, with
placeholder icons (and some test applications). The status bar at the top
indicates the network on which the phone is operating (or "No SIM
card" for a device without a network), the network strength, Wi-Fi signal
strength, battery level, and current time.
The
middle area of the display shows icons for the applications; swiping left and
right pages through screens of icons.
At the
bottom of the screen is a dock with room for up to seven of your most commonly
used applications. You can drag and drop apps to the dock from the middle area.
GONK
Gonk is the lower level operating system of the Firefox OS platform,
consisting of a Linux kernel and userspace hardware abstraction layer (HAL).
The kernel and several of the user space libraries are common open-source
projects: Linux, libusb, bluez, and so forth. Some of the other parts of the
HAL are shared with the Android project: GPS, camera, and others. You could say
that Gonk is a very simple Linux distribution. Gonk is a porting target of Gecko;
that is, there's a port of Gecko to Gonk, just like there's a port of Gecko to
OS X, Windows, and Android. Since the Firefox OS project 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.
Components of Gonk
Gonk consists of following :
- Linux Kernel
- Hardware Abstraction Layer (HAL)
- Libraries : OSS (Open Source Software) and OEM (Original Equipment Manufacturer) libraries
- Modem firmware
The Linux Kernel
The
Linux kernel(s) used by Gonk is very similar to the upstream Linux from which
it's derived. There are a few changes made by the Android Open Source Project that have not yet been up streamed. In
addition, vendors sometimes modify the kernel and upstream those changes on
their own schedule. In general, though, the Linux kernel is close to stock.
The start-up process for Linux is well-documented elsewhere on the
Internet, so this article won't cover that. At the end of the process, a user
space
init process is launched, as it is in most UNIX-like operating
systems. At this point in execution, the only mounted "disk" is a RAM
disk. The RAM disk is built during the Firefox OS build process, and contains
critical utilities, such as init, as
well as other start-up scripts and loadable kernel modules.
Once the
init process
is launched, the Linux kernel handles system calls from user space, and
interrupts and the like from hardware devices.
The init process
The
init process in
Gonk handles mounting the required file systems and spawns system services.
After that, it stays around to serve as a process manager. This is quite
similar to init on other UNIX-like operating systems. It interprets scripts
(that is, the init*.rc files) that
consist of commands describing what should be done to start various services.
The Firefox OS init.rc is typically
the stock Android init.rc for that
device patched to include the things required to kick-start Firefox OS, and
varies from device to device.![]() |
| user-space architecture |
The user space architecture:
b2g
The
b2g process may,
in turn, spawn a number of low-rights content
processes. These processes are where web applications and other web
content are loaded. These processes communicate with the main Gecko server
process through IPDL, a
message-passing system
rild
The
rild process
is the interface to the modem processor. rild is the daemon that implements the Radio Interface Layer (RIL). It's a proprietary piece of
code that's implemented by the hardware vendor to talk to their modem hardware. rild makes it
possible for client code to connect to a UNIX-domain socket to which it binds.
rilproxy
In
Firefox OS, the
rild client is the rilproxy process. This acts as a dumb forwarding proxy between rild and b2g. This proxy is
needed as an implementation detail; suffice it to say, it is indeed necessary.
The rilproxy code can
be found on GitHub.
mediaserver
The
mediaserver process controls
audio and video playback. Gecko talks to it through an Android Remote Procedure
Call (RPC) mechanism. Some of the media that Gecko can play (OGG Vorbis audio,
OGG Theora video, and WebM video) are decoded by Gecko and sent directly
to the mediaserver process. Other media files are decoded by libstagefright, which
is capable of accessing proprietary codecs and hardware encoders.
netd
The
netd process
is used to configure network interfaces.
dbus-daemon
The
dbus-daemon implements D-Bus, a
message bus system that Firefox OS uses for Bluetooth communication.
wpa_supplicant
The
wpa_supplicant process
is the standard UNIX-style daemon that handles connectivity with Wi-Fi access
points.GECKO
Gecko is the name of the layout engine developed by the Mozilla
Project. It was originally named NGLayout.
Gecko's
function is to read web content, such as HTML, CSS, XUL, JavaScript, and render it on user's
screen or print it. In XUL-based applications Gecko is used to render the
application's user interface as well.
Gecko is
used in many applications, including a few browsers, such as Firefox,
SeaMonkey, etc.
Gecko
provides the foundation needed to display content on the screen, including a
layout engine and a complementary set of browser components. However, Gecko
does not package all of these components alongside other interface modules in a
coherent, use friendly application (including menus, toolbars, etc.), such as
Firefox.
Components of Gecko
Gecko consists of :
- Web APIs
- Security
- Gecko runtime – Graphics stack, layout engine, virtual machine, porting layers
![]() |
| Three Layers of Firefox OS |




No comments:
Post a Comment