Thursday, June 26, 2014

Mozilla Firefox OS

Firefox OS is designed to provide a "complete" community-based alternative system for mobile devices, using open standards and approaches such as HTML5 applications, JavaScript, a robust privilege model, open web APIs to communicate directly with cellphone hardware, and application marketplace. As such, it competes with commercially developed operating systems such as Apple's iOS, Google's Android, Microsoft's Windows Phone and Jolla's Sailfish OS as well as other community-based open source systems such as Ubuntu Touch.

For Web/platform developers, the most important part to understand is that the entire user interface is a Web app, one that is capable of displaying and launching other Web apps. Any modifications you make to the user interface and any applications you create to run on Firefox OS will involve standard web technologies, albeit with enhanced access to the mobile device's hardware and services.

From a product perspective, Firefox OS is Mozilla's branding and support services on top of Boot to Gecko (B2G), which is the operating system product's engineering codename. The user interface of Firefox OS is called Gaia, and includes the OS's default apps and system functions.

Architecture of Firefox OS


Gonk consists of a Linux kernel and user-space hardware abstraction layer (HAL). The kernel and several user-space libraries are common open-source projects: Linux, libusb, BlueZ, etc. Some other parts of the HAL are shared with the Android project: GPS, camera, among others. Gonk is basically an extremely simple Linux distribution and is therefore from Gecko's perspective, simply a porting target of Gecko; there is a port of Gecko to Gonk, just like there is a port of Gecko to OS X, and a port of Gecko to Android. However, since the development team have full control over Gonk, the developers can fully expose all the features and interfaces required for comprehensive mobile platforms such as Gecko, but which aren't currently possible to access on other mobile OSes. For example, using Gonk, Gecko can obtain direct access to the full telephony stack and display framebuffer, but doesn't have this access on any other OS.