firefox os / b2g and the future of the web

62
FIREFOX OS / B2G The Web as a platform Chris Heilmann & John Hammink This is a talk about the Mozilla Boot to Gecko project, the technologies involved, and what it means for the Web.

Post on 12-Sep-2014

6.911 views

Category:

Technology


0 download

DESCRIPTION

Presentation by Chris Heilmann and John Hammink about Firefox OS at FISL13 in Porto Alegre, Brazil.

TRANSCRIPT

Page 1: Firefox OS / B2G and the future of the web

FIREFOX OS /

B2G

The Web as

a platform

Chris Heilm

ann & John Hammink

This is a talk about the Mozilla Boot to Gecko project, the technologies involved, and what it means for the Web.

Page 2: Firefox OS / B2G and the future of the web

http://openwebdevice.com by Telefonica is talking about a mobile device completely powered by HTML5.

Page 3: Firefox OS / B2G and the future of the web

Boot to Geck

o (B2G)

The Web as

a platf

orm

Boot to Gecko, referred to as B2G, is a full operating system and platform for mobile devices.

Page 4: Firefox OS / B2G and the future of the web

Gecko GaiaB2G is mainly two separate things; Gecko and Gaia.

The Gecko side is the hardware-related stuff and JavaScript APIs that we need to make the phone work.

The Gecko side is pretty much everything that you don’t see.

Page 5: Firefox OS / B2G and the future of the web

Photo by Alesa Damhttp://www.flickr.com/photos/alesadam/3869366195/

GAIAThe user interface

of B2G

GONKThe low level OS

for B2GGECKOThe application runtime

of B2G

Page 6: Firefox OS / B2G and the future of the web

Gaia is the front-end operating system and application stack that hooks into the APIs that B2G provides.

Gaia is basically everything that you can see and interact with.

Page 7: Firefox OS / B2G and the future of the web

At the basic level, B2G is powered by HTML5 and JavaScript – the same technologies that you already use to create websites.

This makes it incredibly fast. I’m talking really fast, it boots and shuts down in a fraction of the time that an iPhone does.

Page 8: Firefox OS / B2G and the future of the web

Why B2G?

What is al

l the fu

ss about?

But why is B2G important?

Well to put it simply, HTML5 & JavaScript are the underlying technologies behind everything related to the future of the Web.

Pretty much every new technology that is coming out within the browser-space is connected to HTML5 and JavaScript in some way.

And what’s great is that every major browser has invested in them, so they won’t be going anywhere any time soon.

But there’s more to it than that.

Page 9: Firefox OS / B2G and the future of the web

Open technologies

Anyone can view

the source

code

It is created with open technologies.

Anyone can get involved in their creation; through browser developers like Mozilla, or through standards organisations like the W3C.

Also, these technologies are open in that anyone can view the resulting code that is used within Web pages, which is a fantastic way of learning.

Page 10: Firefox OS / B2G and the future of the web

Free tec

hnologies

Free to

use. Fre

e to develo

p with

It is created with free technologies.

Anyone can use these technologies without having to pay anything, both for using the technology and developing with it.

This is unlike closed environments like iOS where you have to pay to use official code editors and production environments.

Page 11: Firefox OS / B2G and the future of the web

Firefox Persona

B2G

Web Apps

B2G is also part of the Kilimanjaro event.

Kilimanjaro is a milestone across several of the Mozilla products; Firefox, B2G, Web Apps, and Persona.

The Kilimanjaro Event is not a single release, it is an incremental effort that results in an coherent experience across those products.

When we reach the Kilimanjaro milestone we will have an elegant and simple experience for HTML5 Web apps in Firefox on multiple devices that puts the user in control of their apps and identity.

‘Kilimanjaro’ is planned to be reached by September 2012.

https://wiki.mozilla.org/Kilimanjaro

Page 12: Firefox OS / B2G and the future of the web

Demo

The best way to explain B2G and to show it’s current state is to give you a quick demo.

Page 13: Firefox OS / B2G and the future of the web

Technology behind B2G

The same st

uff you build website

s

B2G is created from a whole variety of technologies, from pre-existing ones to brand new ones that have been created specifically.

Page 14: Firefox OS / B2G and the future of the web

Firefox Gecko

The Gecko engine lays at the core of B2G, the same engine that powers Firefox.

Needless to say, B2G isn’t just Firefox running on a phone. It’s much more than that.

Page 15: Firefox OS / B2G and the future of the web

Multitouch

WebBluetooth

WebGL

WebTelephony

WebSMS

WebNFC

Geolocation

CameraWebUSB

Battery API

WebContacts

Full Screen API

Settings API

WebVibration

At Mozilla we’re working on the WebAPI effort which is our attempt at creating the APIs needed to run a B2G device.

In other camps it might be referred to as DAP, which is the Device APIs Working Group who are producing a W3C specification for accessing various parts of a device through JavaScript.

The illustration above shows just a few of the APIs for B2G that we’re working on right now.

Page 16: Firefox OS / B2G and the future of the web

Some favourite

s

APIs for B2G

There are so many WebAPIs and technologies in the pipeline that relate to B2G in some way.

The following are just a few favourites.

You can find the rest of the WebAPIs here: https://wiki.mozilla.org/WebAPI

Page 17: Firefox OS / B2G and the future of the web

Touch Events

Multitouch an

d gestures

Touch Events

https://developer.mozilla.org/en/DOM/Touch_events

Page 18: Firefox OS / B2G and the future of the web

Camera API

Accessin

g the camera

The Camera API lets you access the camera on a device.

Being able to do this with JavaScript will make a whole world of difference in so many areas.

For example, instead of requiring a user to upload a profile image you could take one using the webcam and use that instead. Simple but effective.

https://wiki.mozilla.org/Platform/Features/Camera_API

Page 19: Firefox OS / B2G and the future of the web

WebSMS API

Sending tex

ts with Jav

aScript.

The WebSMS API isn’t the most glamorous, but the idea of sending text messages with JavaScript is quite appealing.

https://bugzilla.mozilla.org/show_bug.cgi?id=674725

Page 20: Firefox OS / B2G and the future of the web

WebTelephony A

PI

Make and rec

eive calls

The WebTelephony API allows you to make and receive phone calls using JavaScript.

I can just imagine something like this being used to hook into a Web-based version of Siri that answers your calls for you if you’re busy.

https://bugzilla.mozilla.org/show_bug.cgi?id=674726

Page 21: Firefox OS / B2G and the future of the web

WebVibration API

Vibrating yo

u with open

WebVibration API, previously known as the WebVibrator API

https://bugzilla.mozilla.org/show_bug.cgi?id=679966

Page 22: Firefox OS / B2G and the future of the web

WebNFC API

RFID-like w

ireless

communication

The WebNFC API is pretty cool.

It gives you the ability to transmit and receive data within distances no larger than a few centimetres.

The idea is that it can be used in phones for things like payment (like the new Barclaycard), travel (think Oyster Card), and file transfer.

https://bugzilla.mozilla.org/show_bug.cgi?id=674741

Page 23: Firefox OS / B2G and the future of the web

WebBluetooth API

Access t

o bluetooth hard

ware

WebBluetooth API

https://bugzilla.mozilla.org/show_bug.cgi?id=674737

Page 24: Firefox OS / B2G and the future of the web

Battery A

PI

Monitoring power usag

e

Battery API

https://bugzilla.mozilla.org/show_bug.cgi?id=678694

Page 25: Firefox OS / B2G and the future of the web

Full Scree

n API

Simple, y

et powerfu

l

The Full Screen API allows you to expand any HTML element to fill the users screen, even if the browser isn’t running full screen itself.

https://bugzilla.mozilla.org/show_bug.cgi?id=545812https://wiki.mozilla.org/Platform/Features/Full_Screen_APIs

Page 26: Firefox OS / B2G and the future of the web

Screen Orien

tation

Changing and locking of

The Screen Orientation APIs allow you to do things like changing and locking, you guessed it, the orientation of the screen.

Before now, it’s been incredibly difficult to lock orientation on a website or game using nothing but JavaScript.

https://bugzilla.mozilla.org/show_bug.cgi?id=740188http://dvcs.w3.org/hg/screen-orientation/raw-file/default/Overview.html

Page 27: Firefox OS / B2G and the future of the web

WebGL

Hardware

-acceler

ated grap

hics

WebGL brings the ability to provide advanced hardware-accelerated 2D and 3D graphics directly within the browser.

https://developer.mozilla.org/en/WebGL

Page 28: Firefox OS / B2G and the future of the web

Open Web Apps

Building upon the Web as

a

Open Web Apps is an initiative that is core to B2G and one that is important to the Web as a whole.

It’s a way of creating and distributing apps that puts the developers and users of apps back in charge.

It’s a way that embraces open technology and is for the good of the Web.

Page 29: Firefox OS / B2G and the future of the web

Reach

Apps can be u

sed cro

ss-platf

orm

It allows you to create rich HTML5 app experiences that run across multiple devices and form factors (desktop, mobile, tablet, etc.)

Page 30: Firefox OS / B2G and the future of the web

Open technology

What you alr

eady u

se to make

It allows you to use Web standards and open technologies such as HTML5, CSS and JavaScript.

Anything you currently use to build a website with can be used to build an app.

Page 31: Firefox OS / B2G and the future of the web

Freedom of ch

oice

Putting devs an

d consumers in

It puts you in control of every aspect of the app experience; from easy development, to distribution, to direct communication with your customers.

Page 32: Firefox OS / B2G and the future of the web

The Mozilla Marketplace is our own platform for selling and distributing Web apps.

It’s in development right now but we plan to open the doors later this year.

However, there’s nothing to stop you creating your own marketplace though. All the APIs to do that are documented and built into Firefox today. In fact, we encourage it!

https://marketplace.mozilla.orghttps://developer.mozilla.org/en/Apps

Page 33: Firefox OS / B2G and the future of the web

Getting sta

rted

How to create

an ap

p

Creating a Web app isn’t crazy hard, it’s just a case of understanding the new features in browsers.

https://developer.mozilla.org/en/Apps

Page 34: Firefox OS / B2G and the future of the web

Apps are w

ebsites

They use t

he same te

chnology

Apps are websites and are built using the same technology and processes.

If you already know how to make a website then creating your first Web app is a breeze.

Page 35: Firefox OS / B2G and the future of the web

Application manifes

t

Turning a website

into an ap

p

The only thing that you need to do to turn a website into app is create an application manifest.

Page 36: Firefox OS / B2G and the future of the web

{ "version": "1.0", "name": "MozillaBall", "description": "Exciting Open Web development action!", "icons": { "16": "/img/icon-16.png", "48": "/img/icon-48.png", "128": "/img/icon-128.png" }, "developer": { "name": "Mozilla Labs", "url": "http://mozillalabs.com" }, "installs_allowed_from": [ "https://appstore.mozillalabs.com" ], "default_locale": "en" }

This is a JSON file that effectively describes your application; it’s name, icons, and other related data.

Page 37: Firefox OS / B2G and the future of the web

Manifest re

quirements

Important to

remem

ber

There are a couple of important things to remember when creating an application manifest.

Page 38: Firefox OS / B2G and the future of the web

Same domain

An element of se

curity

The first is that it needs to be hosted from the same domain as your Web app.

This is pretty straightforward and it adds an element of security in that it is unlikely that a rouge manifest file will be able to be put on the same domain without your knowledge.

Page 39: Firefox OS / B2G and the future of the web

Content-type header

application/x-web-app-manifest+json

The second is that it needs to be served with a specific content type (application/x-web-app-manifest+json).

This is probably the most tricky process in turning a website into an app as it involves changing settings on your server or a bit of hackery in your manifest file.

If you don’t want to fiddle with your server then you can always set the content-type header using something like PHP or Node.js.

Page 40: Firefox OS / B2G and the future of the web

Manifest va

lidator

Making sure e

verything is

ok

If you want to make sure your manifest is valid you can have it checked at http://appmanifest.org

Page 41: Firefox OS / B2G and the future of the web

Installing apps

Through the browser

or

You can install apps in B2G through the browser or the Mozilla Marketplace.

You can also install apps on the desktop and Android using Firefox.

Page 42: Firefox OS / B2G and the future of the web

Installing an app

navigator.mozApps.install(manifestUrl)

Behind the scenes, installing an app is achieved through the new mozApps JavaScript API.

By passing the ‘install’ method a string URL to the app’s manifest file you will trigger the installation process.

An example of when you would call this method is after a user clicks on an “Install this app” button on your own website.

It would be called automatically if your app was installed from the Mozilla Marketplace, or any other external website.

Page 43: Firefox OS / B2G and the future of the web

The install method triggers an installation dialogue within the browser that allows the user to decide what to do with the app.

On Windows, a desktop shortcut is created for the app you installed and it will also be in the start menu.

On Mac, the app is added to your /Applications directory.

On B2G, the app is added to your homescreen.

Page 44: Firefox OS / B2G and the future of the web

Native ex

perience

Apps are n

o longer just g

lorified

What is most interesting about the apps project is the ability to break away from the concept of apps being nothing more than glorified websites.

Instead, the new functionality allows Web apps to look and act much like native applications that you would find in an operating system, rather than a website running within a browser.

We call this WebRT (Web run-time) and it’s really cool.

Page 45: Firefox OS / B2G and the future of the web

It’s really easy to use and you don’t need to do anything special as a developer to enable it in your app.

Whenever a user requests to install an app it be be installed natively by default.

Page 46: Firefox OS / B2G and the future of the web

Launch fro

m the dock

…or desktop, or home sc

reen

Apps installed using WebRT are no different to any other native application that you have on your computer.

They’re installed in the standard native applications location and can be launched in the same way that you launch any other application.

Page 47: Firefox OS / B2G and the future of the web

No browser UI

The applica

tion is yours a

nd yours

WebRT applications use a browser rendering engine behind the scenes but don’t display any normal browser UI that would clutter your app.

Instead, WebRT apps look and feel like native applications while actually using HTML and JavaScript behind the scenes.

Page 48: Firefox OS / B2G and the future of the web

This is an example of a Web app installed as a native application. Notice the lack of browser UI.

Right now WebRT uses the version of Firefox you already have installed to grab the rendering engine.

In the future you won’t necessarily need a browser installed and WebRT will handle grabbing a relevant rendering engine behind the scenes.

Page 49: Firefox OS / B2G and the future of the web

Using B2G today

There are

a few options

There are a whole bunch of ways to start using and testing B2G today.

Page 50: Firefox OS / B2G and the future of the web

If you have some knowledge of git, you can clone the Gaia repository and launch Gaia using a recent Firefox Nightly build.

Pros: - No build system  and very little setup required- Can use the Firefox dev tools

Cons:- The viewport is based on the size of the browser window- Many device-like things won't work- Apps are launched in separate, pinned tabs- Firefox Nightly might be unstable

http://nightly.mozilla.orghttps://github.com/mozilla-b2g/gaia/

Page 51: Firefox OS / B2G and the future of the web

There is also gaia-devserver, a node-based tool for developing Gaia in Firefox Nightly.

https://github.com/jrburke/gaia-devserver

Page 52: Firefox OS / B2G and the future of the web

Gaia in Nightly

You’ll have to resize the browser to get it looking right but it’s a great way to quickly play with Gaia and start developing for it.

Page 53: Firefox OS / B2G and the future of the web

OSX Simulator

There is also a build for OSX you can use with simple instructions.

Page 54: Firefox OS / B2G and the future of the web

$ git clone git://github.com/canuckistani/gaia-rocking.git$ cd ./gaia-rocking$ git submodule init$ make setup

Run, B2G run:

1. via make > cd to the gaia-rocking directory > make run

2. via Finder, open the gaia-rocking/bin directory and double click on 'Launcher.app'

Page 55: Firefox OS / B2G and the future of the web

B2G Simulator

It is also possible to build a Boot to Gecko 'simulator' and run Gaia using this application. This software is based on Firefox but behaves similar to the on-device experience of Boot to Gecko.

If you are familiar with building the Firefox code-base or C++ projects, you can build this application yourself.

Pros: - Mobile viewport, similar experience to a mobile device in most respects- More device apis (not all)

Cons:- Need to install a C/C++ build system and build gecko- The Firefox dev tools are not available

https://wiki.mozilla.org/Gaia/Hacking#Building_B2G

Page 56: Firefox OS / B2G and the future of the web

B2G Device

The last option is to build B2G on your own device.

This is the most difficult option and is only recommended on a spare device by someone who knows what they’re doing.

We’re constantly improving the method of getting B2G onto your own device so we hope that it will be a lot more reliable and safer in the near future.

https://developer.mozilla.org/en/Mozilla/Boot_to_Gecko#Setting_up_.26_building_Boot_to_Gecko

Page 57: Firefox OS / B2G and the future of the web

It should be pointed out that right now Windows is unsupported as a development platform.

However, there is nothing to stop you running Ubuntu in Windows through a VM.

http://www.howtogeek.com/howto/11287/how-to-run-ubuntu-in-windows-7-with-vmware-player/

Page 58: Firefox OS / B2G and the future of the web

Contributing to B2G

You can help

create

the future

There are plenty of ways to get involved with B2G, from development all the way to general testing.

The best way to keep up to speed with things is to frequent the B2G mailing lists.

- https://lists.mozilla.org/listinfo/community-b2g- https://groups.google.com/forum/#!forum/mozilla.dev.b2g

If you want to help with development then the best place to do that is on the B2G and Gaia GitHub repositories.

- https://github.com/mozilla-b2g/B2G/- https://github.com/mozilla-b2g/gaia/

Page 59: Firefox OS / B2G and the future of the web

Talk to us

We live o

n Mozilla IR

C

The general rule of thumb at Mozilla is to look for the relevant people on IRC if you want a quick response, we tend to live on there.

The server you want is irc.mozilla.org

The channels you want are #b2g and #gaia for B2G-related stuff, #openwebapps for Open Web Apps, and #webapi for anything about WebAPIs.

Page 60: Firefox OS / B2G and the future of the web

Threshold of so

mething cool

This is ju

st the b

eginning

It’s amazing that we can now build an entire operating system for a phone using Web technologies. It just blows my mind.

We really are on the threshold of something awesome here.

You should definitely start checking out B2G and the related projects, developing for them, and helping with their development.

We’re on the path to see a day where all sorts of devices are powered by the Web, like TVs and set-top boxes.

Perhaps we’ll even get those Internet-enabled fridges that we desire so much!

Page 61: Firefox OS / B2G and the future of the web

Photo by William Quivigerhttp://www.flickr.com/photos/28959625@N04/6120450372/

Code FeedbackWrite apps,

contribute to Gaia,contribute to B2G

Give your input on APIs,request features, test

and log bugs

UseUse Marketplace,Use the Web API,

Use B2G

Page 62: Firefox OS / B2G and the future of the web

THANK YOU

Any questions?

Thank you.