FIREFOX OS
Pavel Ivanov
UX Engineer at Mozilla
pivanov@mozilla.com
@ivanovpavel
Bringing the Open Web to Mobile
Devices OS
Bringing The Boot to Gecko project
was launched to enable the Open
Web as a platform for mobile devices.
We’re making innovation possible by
driving the development of new Web
standards.
Freedom From Proprietary Mobile
Platforms OS
Operators and developers write apps and
services for one platform and then rewrite
them for others.
!

Users who want to buy phones, e-readers
and game consoles from different
manufacturers often need to re-purchase
apps for each device.
Opportunities for Developers
Using HTML5 and the new Mozilla-proposed
standard APIs, developers everywhere will be
able to create amazing experiences and apps.
!

Developers will no longer need to learn and
develop against platform-specific native APIs.
Customization for OEMs & Operators
OEMs and operators will be able to provide
content and services across their entire device
portfolio, regardless of OS.
!

And they will be able to customize user
experiences, manage app distribution and
retain customer attention, loyalty and billing
relationships.
New Web Standards
Firefox OS produces an implementation of these
new Web standards to free mobile platforms from
the encumbrances of the rules and restrictions of
existing proprietary platforms.
Components
GONK

GECKO

GAIA
GONK
Lower level operating system, consisting of a Linux
kernel and HAL (Hardware Abstraction Layer).
!

Possibility to expose anything from the hardware
to Gecko.
GECKO
The application runtime. The rendering engine in
Firefox for HTML5, CSS & JavaScript. Implements a
number of APIs.
GAIA
The user interface, built entirely by HTML5 &
Open Web APIs.
FIREFOX OS
WebAPIs & UI hacking
Using HTML5, CSS and JavaScript
together with a number of APIs to
build apps and customize the UI.
Web APIs
The Boot to Gecko project is based entirely on
open standards and the source code is open and
accessible to all. Where open standards are
missing, we're working with standards bodies and
other vendors to create them.
WebTelephony
!

Vibration API
!

WebSMS
!

Idle API
!

Screen Orientation
!

Settings API
!

Resource lock API
!

Power Management API
!

Mobile Connection API
!

Socket API
Sensor API
!

WiFi Information API
!

Device Storage API
!

Contacts API
!

Camera API
!

Peer to Peer API
!

Open WebApps
!

WebNFC
!

WebBluetooth
!

WebUSB
Network Information API
!

Battery Status API
!

Alarm API
!

Browser API
!

Time/Clock API
!

Intents/Activities/Actions
!

Keyboard/IME API
BATTERY STATUS
API
var battery = navigator.mozBattery

if (battery) {

var batteryLevel = Math.round(battery.level * 100) + "%",

charging = (battery.charging)? "" : "not ",

chargingTime = parseInt(battery.chargingTime / 60, 10,

dischargingTime = parseInt(battery.dischargingTime / 60, 10);



// Set events

battery.addEventListener("levelchange", setStatus, false);

battery.addEventListener("chargingchange", setStatus, false);

battery.addEventListener("chargingtimechange", setStatus, false);

battery.addEventListener("dischargingtimechange", setStatus,
false);


}
Web Apps from Mozilla
Dialer

Alarm Clock

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

Contacts
Settings
SMS
Web browser
Gallery
Video Player
Music Player
E-mail (POP)
!

Calendar

Camera
Notes
First Run Experience
Notifications
Home Screen
Mozilla Marketplace
System Updater
Localization Support
Demo App :)
It's time for questions?

FirefoxOS Introduction

  • 1.
    FIREFOX OS Pavel Ivanov UXEngineer at Mozilla pivanov@mozilla.com @ivanovpavel
  • 2.
    Bringing the OpenWeb to Mobile Devices OS
  • 3.
    Bringing The Bootto Gecko project was launched to enable the Open Web as a platform for mobile devices. We’re making innovation possible by driving the development of new Web standards.
  • 4.
    Freedom From ProprietaryMobile Platforms OS
  • 5.
    Operators and developerswrite apps and services for one platform and then rewrite them for others. ! Users who want to buy phones, e-readers and game consoles from different manufacturers often need to re-purchase apps for each device.
  • 6.
  • 7.
    Using HTML5 andthe new Mozilla-proposed standard APIs, developers everywhere will be able to create amazing experiences and apps. ! Developers will no longer need to learn and develop against platform-specific native APIs.
  • 8.
  • 9.
    OEMs and operatorswill be able to provide content and services across their entire device portfolio, regardless of OS. ! And they will be able to customize user experiences, manage app distribution and retain customer attention, loyalty and billing relationships.
  • 10.
  • 11.
    Firefox OS producesan implementation of these new Web standards to free mobile platforms from the encumbrances of the rules and restrictions of existing proprietary platforms.
  • 12.
  • 13.
  • 14.
  • 15.
    Lower level operatingsystem, consisting of a Linux kernel and HAL (Hardware Abstraction Layer). ! Possibility to expose anything from the hardware to Gecko.
  • 16.
  • 17.
    The application runtime.The rendering engine in Firefox for HTML5, CSS & JavaScript. Implements a number of APIs.
  • 18.
  • 20.
    The user interface,built entirely by HTML5 & Open Web APIs.
  • 21.
  • 22.
    Using HTML5, CSSand JavaScript together with a number of APIs to build apps and customize the UI.
  • 24.
  • 25.
    The Boot toGecko project is based entirely on open standards and the source code is open and accessible to all. Where open standards are missing, we're working with standards bodies and other vendors to create them.
  • 26.
    WebTelephony ! Vibration API ! WebSMS ! Idle API ! ScreenOrientation ! Settings API ! Resource lock API ! Power Management API ! Mobile Connection API ! Socket API
  • 27.
    Sensor API ! WiFi InformationAPI ! Device Storage API ! Contacts API ! Camera API ! Peer to Peer API ! Open WebApps ! WebNFC ! WebBluetooth ! WebUSB
  • 28.
    Network Information API ! BatteryStatus API ! Alarm API ! Browser API ! Time/Clock API ! Intents/Activities/Actions ! Keyboard/IME API
  • 29.
  • 30.
    var battery =navigator.mozBattery
 if (battery) {
 var batteryLevel = Math.round(battery.level * 100) + "%",
 charging = (battery.charging)? "" : "not ",
 chargingTime = parseInt(battery.chargingTime / 60, 10,
 dischargingTime = parseInt(battery.dischargingTime / 60, 10);
 
 // Set events
 battery.addEventListener("levelchange", setStatus, false);
 battery.addEventListener("chargingchange", setStatus, false);
 battery.addEventListener("chargingtimechange", setStatus, false);
 battery.addEventListener("dischargingtimechange", setStatus, false); 
 }
  • 31.
  • 32.
    Dialer Alarm Clock ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! Contacts Settings SMS Web browser Gallery VideoPlayer Music Player E-mail (POP) ! Calendar Camera Notes First Run Experience Notifications Home Screen Mozilla Marketplace System Updater Localization Support
  • 33.
  • 34.
    It's time forquestions?