Daniele Scasciafratte

##Firefox OS per utenti e sviluppatori

Scopriamo le sue caratteristiche!

Debian/Ubuntu Community Conference
Relatore: Daniele Mte90 Scasciafratte (@Mte90Net)

##Chi sono

Sono Daniele Scasciafratte conosciuto nel web come Mte90

##Cos’è Firefox OS
Firefox OS nome in codice Boot to Gecko è un sistema operativo basato su Linux ed Android, utilizza standard completamente aperti e il suo codice è disponibile durante lo sviluppo delle varie versioni (Android mi leggi?)

Fonte: https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS

##Screenshot

##Screenshot

##Screenshot

##Screenshot

##Perchè solo dispositivi economici?

##Gonk, Gecko e Gaia
Un sistema Firefox OS è diviso in tre layer o livelli:

Fonte: https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Architecture

##Gecki dappertutto
L’interfaccia non è altro che un browser che sfrutta il motore grafico Gecko per mostrare le varie applicazioni

Tutte le applicazioni sono realizzate con i tre Assassini ovvero HTML/CSS/JS

Il sistema è integrato pesantemente con Gecko quindi non si può sostituire con WebKit!

##La leggenda delle Web App lente
I browser hanno fatto passi da gigante negli ultimi anni in termini di performance!
Specialmente in ambito mobile dove un app fatta bene é irriconoscibile da una nativa.

##Web App è fico In Firefox OS si possono ottenere app con le stesse performance di una nativa

Alcuni esempi di tool/librerie/linguaggi:

##Web App Hosted vs Packaged Firefox OS ha due tipi di applicazioni che si differenziano dai permessi che hanno sul dispositivo e se si scaricano fisicamente sul dispositivo

##I permessi Firefox OS specifica i permessi di ogni app nel suo manifest e se permesso dall’utente verranno eseguiti.

I permessi di root servono solo agli sviluppatori: per il flash semplificato delle rom e si attivano solo con un kernel compilato con l’opzione abilitata

Fonte:https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Security, Apps CSP

##Hosted



App di esempio:

##Privilegi per app Hosted Privilegi non critici


Fonte: https://developer.mozilla.org/en-US/docs/WebAPI/Permissions

##Packaged



App di esempio:


Fonte: https://developer.mozilla.org/en-US/Apps/Developing/Packaged_apps

##Quante API in giro
Le API sono presentate al W3C come draft!
Alcune API native di Firefox OS

WebTelephony, Vibration API, WebSMS, Idle API, Screen Orientation, Settings API, Power manager API, Mobile Connection API, TCP Socket API, Geolocation API, WiFi Information API, Device Storage API, Contacts API, Mouse Lock API, Open WebApps, WebBluetooth, Network Information API, Battery Status API, Alarm API, Browser API, Time/Clock API, Web Activities, Push Notification API, Permission API, WebFM API, FileHandle API, Network Stats API, WebPayment

Alcune API sono disponibili solo per App certificate

##App a pagamento
Mozilla ha realizzato un API in JavaScript per i pagamenti

Fonte: https://developer.mozilla.org/en-US/docs/Web/Apps/Publishing/In-app_payments
Approfondimento: Working with receipts for paid apps

##Il boilerplate Pubblicità!
Firefox OS Boilerplate App è uno strumento che vi permetterà di provare sul campo la maggior parte delle API e la gestione multilingua senza grandi difficoltà per scoprire il codice “semplice” che contiene

##Cos’è il Manifest Il file manifest.webapp è un file JSON contenente le informazioni sull’applicazione

##Marketplace
Il Marketplace è gratuito, semplice ed intuitivo e multipiattaforma

Tutte le app vengono analizzate da tool automatici e successivamente testate da volontari (con dispositivi fisici) per controllare i requisiti e se funziona!

Fonte: https://marketplace.firefox.com/developers/

##Requisiti per lo store ufficiale

Fonte: https://developer.mozilla.org/en-US/docs/Web/Apps/Publishing/Marketplace_review_criteria

##Cosa consiglio

##Il tuo Marketplace Con le Open Web App, uno standard per l’installazione delle web app ed accesso ad alcuni API del browser più avanzate, è possibile far installare le app dal proprio sito


Un esempio?


Firefox OS Bookmark for Wordpress
Permette di installare il proprio sito come app e di caricarla sul marketplace


Poche righe di codice ed un manifest!

##Come testare la propria applicazione Esiste il simulatore di Firefox OS che è una estensione per Firefox disponibile per Windows, Mac e Linux

Le versioni disponibili attualmente sono 1.3-1.4-2.0-2.1-2.2-3.0 insieme ad ADB Helper per il debug remoto.

##Differenze tra simulatore e device fisici
Il simulatore sfrutta l’hardware del computer e la versione Gecko di Firefox usata!

Alcune API non sono supportate
Fonte: https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Feature_support_chart

##Cosa sono le Web Activity Pubblicità
Permettono di interfacciare le applicazioni tra di loro (esempio scattare una foto e caricarla su Facebook con l’app ufficiale), per gli sviluppatori Android ricordano gli Android Intents

Fonte: https://hacks.mozilla.org/2013/01/introducing-web-activities/

##Debugging remoto Tramite Firefox e un dispositivo con Firefox OS o Firefox for Android collegato al pc è possibile farlo

Fonte: https://developer.mozilla.org/en-US/docs/Tools/Remote_Debugging

##Web Components Pubblicità
Sono in Working Draft dal W3C e supportati da Chrome e Firefox.
Si trattano di nuovi elementi (i widget in poche parole) con tag HTML personalizzati
Le librerie Polymer di Google e Gaia Componenets di Mozilla ne includono già pronte come un calendario o la barra di stato.

Fonti: HTML5Rocks, Web Components in Firefox OS

##Come fare un’Open Web App

##Quante volpi
Le app presenti sul Marketplace sono per quattro tipi diversi di interfacce/dispositivi

##Le differenze tra Firefox Il marketplace è disponibile per questi quattro ambienti ma la differenza principale è l’API che supportano (es: la versione desktop non ha l’Orientation API) e la risoluzione

Se installate un’app su desktop creerà una icona nel menu del sistema, su mobile invece nello screen o nel menu

##Workflow di sviluppo

##Varie
Quei dettagli che fanno la differenza ma che non sapevo dove mettere

I crash


Le applicazioni sono sotto sandbox!

Ogni file Javascript ha un suo processo, quindi isolamento dei crash (il file và in crash non l’applicazione o il sistema) con un facile debug

Niente Account

Per usare il telefono non è necessario avere un account impostato sul dispositivo

##Giochi
La Disney realizza giochi per Firefox OS, c’è anche Cut the rope
Quake Benchmark è un esempio WebGL!

Sul marketplace ce ne sono 2000 (un terzo): https://marketplace.firefox.com/category/games

Approfondimento: Optimizing your JavaScript game for Firefox OS,E-Book

##Firefox OS multi dispositivo Firefox OS è scaricabile e compilabile tramite la guida per molti dispositivi ma pochi sono supportati ufficialmente, si trovano ROM giá pronte su firefoxos.mozilla.community

La pagina su XDA Developers contiene diversi esperimenti di porting
I requisiti per la compilazione, ambiente per la compilazione, come fare un porting e la guida per la compilazione si trovano su MDN

##Durata della batteria

La batteria dura molto, per esempio una settimana con wifi (me lo ero scordato acceso più di una volta)

##Italiano
Firefox OS è tradotto in italiano!
Per chi vuole approfondire c’è la community Mozilla Italia

##Mozilla Italia cerca te!
Cerchiamo traduttori, grafici, volontari, markettari, sviluppatori, amanti dell’Open Source.
Cerchiamo anche un grafico per la realizzazione vettoriale del logo!

http://whatcanidoformozilla.org/
http://codefirefox.com/

##Siti web di riferimento

##Applicazioni di esempio

##
Se avete domande fatele adesso o mai più (scherzo)

Link presentazione: http://mte90.github.io/Presentazione-FirefoxOS
Presentazione di:
Daniele Scasciafratte - @Mte90Net - Mte90.net