El título de tu charla va aquí

La tapa

High-five at the Mozilla Festival!

Firefox OS

Firefox OS

  • Firefox OS es el único sistema operativo móvil completamente abierto basado en estándares web
  • Está pensado para mercados que no tengan acceso a los sistemas operativos líderes actuales
  • Está basado completamanete en la Web, no hay una capa nativa. Tanto el sistema operativo como las aplicaciones estás escritas en HTML5. El acceso al hardware ocurre a través de un núcleo Linux que es el mismo que utiliza Android
  • HTML5 es un ciudadano de primera clase en Firefox OS, es el único SO que mantiene la promesa que otros dieron años atrás (No se necesita SDK)
  • Todo lo que necesitas saber para crear una aplicación para Firefox OS es conocer HTML5
  • Firefox OS es una realidad, tenemos teléfonos vendidos en España, Polonia, Venezuela y Colombia

Firefox OS

Firefox OS

La plataforma móvil que HTML5 merece

Keep calm and trust HTML5

Soporte del navegador predecible

firefox

Un nuevo mercado

World wide web

Mejorando el mundo móvil

Nokia couldn't take photos
  • Enfocado a mercados emergentes y nuevos
  • Hardware muy accesible
  • No se necesita tarjeta de crédito, se paga con la factura
  • Tecnologías web por todos lados
  • 18 telefónicas asociadas, 4 fabricantes asociados

Todo lo que forma parte del SO es tecnología web abierta y propuesto para estándar

firefox os emulator and source

Aplicaciones de la Web abierta

Aplicaciones

Firefox OS apps

¿Qué hace que una aplicación sea genial?

¿Aplicaciones Firefox OS?

  • Las aplicaciones de Firefox OS son aplicaciones de HTML5 con un archivo extra de manifiesto
  • El manifiesto define el acceso al hardware que necesitas, los íconos y la ubicación del código
  • Están resguardados por un modelo de seguridad de tres capas, permitiendo más o menos acceso dependiendo de la ubicación de la aplicación (alojada vs. enviada desde el marketplace)
  • Funcionan cuando no tienes conexión y funcionan a través de otras plataformas (cuando se preparan para eso)
  • Puedes encontrarlas e instalarlas desde la web o desde el marketplace

Definido en el manifiesto

        {
          "name": "Mi Aplicación",
          "description": "La descripción del uso",
          "launch_path": "/",
          "icons": { "128": "/img/icon-128.png" },
          "developer": {
            "name": "Tu nombre u organización",
            "url": "http://your-homepage-here.org"
          }
        }
      

Manifiesto de la App

Tres niveles de acceso…

  • Aplicaciones alojadas - guardadas en tu servidor, fácil de actualizar, acceso limitado.
  • Aplicaciones privilegiadas - revisadas por el marketplace, empaquetadas y firmadas
  • Aplicaciones certificadas - parte del SO, solo de Mozilla y asociados

App permissions

Instalar aplicaciones desde la Web

        var installapp = navigator.mozApps.install(manifestURL);
        installapp.onsuccess = function(data) {
          // La aplicación está instalada
        };
        installapp.onerror = function() {
         // La aplicación no está instalada, la información está en 
         // installapp.error.name
        };
        

WebAPIs

Web APIs

WebAPI wiki

Wiki de las WebAPI

Web APIs

  • Una especificación abierta para acceder al hardware de los dispositivos
  • Creadas con y enviadas a los estándares y otros desarrolladores de navegadores
  • Una forma de interactuar a través de JavaScript con el dispositivo
  • A través de eventos - cada acceso tiene un manejador de éxito o fracaso con un informe completo para saber qué salió mal
  • Protegido con un modelo de seguridad de tres capas que permite mayor o menor acceso dependiendo de la ubicación de la aplicación (alojada vs. brindada por el marketplace)

Wiki de las WebAPI

Web APIs (aplicaciones alojadas)

  • API vibración
  • Orientación de la pantalla
  • Geolocalización API
  • Control del mouse API
  • WebApps abiertas
  • Información de la red API
  • Estado de la batería API
  • Alarma API
  • Envio de notificaciones API
  • WebFM API / FMRadio
  • Pagos por Web
  • IndexedDB
  • Sensor de luz ambiente
  • Sensor de proximidad
  • Notificaciones

Usar WebAPIs para hacer ampliar la capacidad de la capa web

Batería API

          var b = navigator.battery;
          if (b) {
            var level = Math.round(b.level * 100) + "%",
                charging = (b.charging) ? "" : "not ",
                chargeTime = parseInt(b.chargingTime / 60, 10),
                dischargeTime = parseInt(b.dischargingTime/60,10);
            b.addEventListener("levelchange", show);
            b.addEventListener("chargingchange", show);
            b.addEventListener("chargingtimechange", show);
            b.addEventListener("dischargingtimechange", show);
          }
        

Web APIs (aplicaciones privilegiadas)

  • Memoria del dispositivo API
  • Navegador API
  • TCP Socket API
  • Contactos API
  • systemXHR

Usar WebAPIs para hacer ampliar la capacidad de la capa web

Contactos API

          var contact = new mozContact();
          contact.init({name: "Christian"});
          var request = navigator.mozContacts.save(contact);
          request.onsuccess = function() {
            // contact generated
          };
          request.onerror = function() {
            // contact generation failed
          };
        

Web APIs (aplicaciones certificadas)

  • WebTelephony
  • WebSMS
  • Espera API
  • Opciones API
  • Adminstración de energía API
  • Conexión móvil API
  • Información WiFi API
  • WebBluetooth
  • Permisos API
  • Estadísticas de red API
  • Cámara API
  • Fecha/Reloj API
  • Atención de la pantalla
  • Correo de voz

Usar WebAPIs para hacer ampliar la capacidad de la capa web

Web Activities

Web Activities

  • Una propuesta para tener acceso al hardware manteniendo al usuario con el control en lugar de autentificar en su nombre
  • Comparabl e a Android Intents, pero con un horizonte más limitado que tiene más sentido en la web
  • Una técnica para crear un ecosistema de aplicaciones en el dispositivo, las aplicaciones pueden registrarse como con la posibilidad de brindar ciertas tareas y otras aplicaciones pueden usarlas
  • Una forma simpre de acceder al hardware e información sin tener que empaquetar tu aplicación y enviarla al marketplace
  • Muy seguro ya que no sucede nada sin que el usuario lo inicie

WebActivies Wiki

Web activities

  • configure
  • costcontrol
  • dial
  • open
  • pick
  • record
  • save-bookmark
  • share
  • view
  • new, p.e type: “websms/sms” o “webcontacts/contact”

Enviar un número al teléfono

        var call = new MozActivity({
          name: "dial",
          data: {
            number: "+1804100100"
          }
        });
      

Obtener una imagen del teléfono (1/2)

Pick activity
        var getphoto = new MozActivity({
          name: "pick",
          data: {
            type: ["image/png", 
                   "image/jpg", 
                   "image/jpeg"]
          }
        });
      

Obtener una imagen del teléfono (2/2)

        getphoto.onsuccess = function () {
          var img = document.createElement("img");
          if (this.result.blob.type.indexOf("image") != -1) {
            img.src = window.URL.createObjectURL(this.result.blob);
          }
        };
        getphoto.onerror = function () { // error
        };
      

Activities y aplicaciones alojadas en Android

Foxkeh loves android

Búsqueda dinámica de aplicaciones

Búsqueda dinámica de aplicaciones

  • La interfaz de búsqeuda de Firefox OS no solo busca nombres de aplicaciones o contenido en tu dispositivo
  • También busca coincidencias con aplicaciones por temática.
  • Por ejemplo, puedes escribir el título de una película y encontrarás aplicaciones relacionadas con películas
  • Estos resultados de aplicaciones están preparados para diferentes mercados, lo que significa que no encontrarás Netflix entre las opciones, si no está dispoinble en tu país.

Búsqueda dinámica de aplicaciones para el usuario

  • Los usuarios no necesitan saber el nombre de la aplicación, si no que realizan la búsqeuda por lo que les interesa
  • Las aplicaciones son realmente "probar antes de comprar": al hacer clic en uno de los resultados de la lista abrirá la versión preparada para dispositivos móviles de la aplicación. Sin necesidad de descargar, instalar o desinstalar.
  • Una vez que el usuario está contento con la aplicación, pueden hacer un clic largo para instalarla y obtener todos los beneficios de una aplicación de la web abierta
  • El usuario puede usar la aplicación una sola vez, sin que queden registros en el dispositivo

Búsqueda dinámica de aplicaciones para desarrolladores

  • Tu aplicación se encontrará por lo que haga, no por el nombre o la publicidad cara que puedas haber puesto en ella.
  • La versión en HTML5 de tu aplicación es tu publicidad, nada se desperdicia
  • Encuentras usuarios rápidamente que prueban la aplicación sin tener que descargarla ni instalarla
  • Puedes convertirte en la aplicación local más importante de una temática, sin tener que competir con otros en mercados cerrados

Caso de uso a aplicación

The search interface of Firefox OS

Caso de uso a aplicación

Herramientas

Herramientas para Firefox OS / HTML5

  • Al contrario de iOS y Android, no hay un SDK o conjunto de IDEs/herramientas para Firefox OS.
  • Las aplicaciones de Firefox OS son aplicaciones de HTML5, y nunca tendremos un conjunto de herramientas definitivas para escribir HTML
  • Dicho esto, hay algunas cosas que harán tu vida más fácil y que te permitirán empezar más rápidamente
  • Muchas de ellas vienen con el navegador, o como complementos del navegador. De esa forma podrás usar la computadora con la que te sientes cómodo para desarrollar el código
  • No necesitas un un dispositivo con Firefox OS para empezar, posiblemente necesites uno para probar la interacción y el rendimiento
  • Esto es algo que evoluciona, más herramientas están en camino

Herramientas para Firefox OS / HTML5

  • Mozilla tiene algunas cosas en el espacio de las herramientas
  • Asegurate de mostrar las herramientas de desarrollo que se encuentran en Firefox (NO, y repito, NO Firebug) y la vista de modo adaptable que permite cambiar el tamaño del navegador al tamaño del teléfono
  • Muestra el simulador funcionando, cambai alguno de los CSS para mostrar que las aplicaciones son solo sitios web
  • Asegurate de comentar que los componentes del SO son para Gaia, no para cualquier aplicación externa.

Los navegadores son editores

Developer tools

Simulador de Firefox OS

Simulator

Simulador de Firefox OS

Prototipos con JSFiddle

  1. Escribe tu código como harías normalmente con JSFiddle
  2. Agrega /webapp.manifest a la URL del Fiddle y pega el enlace en el simulador de Firefox OS para instalar la aplicación
  3. También puedes agregar /fxos.html a la URL del Fiddle para obtener una página de instalación como tendrías con una típica aplicación alojada de Firefox OS

Usar para prototipos de aplicaciones de Firefox OS

Componentes de la interfaz de Firefox

Building Firefox OS

Crear FirefoxOS

Bloques de Firefox OS

Firefox OS UI components

FirefoxOS edit mode

Mozilla Brick

Mozilla Brick

BrickPresentamos Brick

Modelo de Web Activities

Firefox OS Boiler Plate

Modelo de aplicaciones para Firefox OS

En breve: Mozilla Flathead

Mozilla Flathead

URL de prueba de Flathead

Conversión de HTML5 a código nativo

Phonegap

http://build.phonegap.com/

Recursos

Recursos para comentar

Vistazo de Firefox OS

Firefox OS for end users

http://www.mozilla.org/en-US/firefox/os/

Firefox OS Marketplace

Firefox OS Marketplace

https://marketplace.firefox.com/

Centro para desarrolladores

Developer Hub

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

El blog de Hacks

Hacks Blog

https://hacks.mozilla.org/category/firefox-os/

Serie de videos sobre Firefox OS

Firefox OS Video Series

https://hacks.mozilla.org/category/videoseries/

El Wiki de Firefox OS

Firefox OS Wiki

https://developer.mozilla.org/en/docs/Mozilla/Firefox_OS

Gracias

Red panda (Firefox)
  • {name}
  • {title}
  • {@twitter}
  • Slides: {slideurl}
Photo by Yortw