¿Pensábais que me había olvidado de vosotros? Jamás. Después de empaparme durante el día de ayer con todo el conocimiento de Guillermo López (@WillyAranda) y Mozilla Hispano (@mozilla_hispano), y con la suerte de haber conocido en persona a Alejandro Sánchez, (@AlejandronW), con el que ya había mantenido correspondencia para la entrevista que os traje ya hace unos meses sobre el framework de desarrollo multiplataforma eMoBC del cual es fundador, vuelvo por estos lares con dos entradas sobre todo lo necesario para adentrarse en el desarrollo de aplicaciones para Firefox OS Mobile.
Primero de todo, deciros que si como un servidor venís de entornos de programación web, pasaros a aplicaciones de Firefox OS es tan sencillo que parece hasta insultante que no lo hagamos. Ya hemos hablado largo y tendido sobre Firefox OS, pero para los que acaban de llegar, estamos ante una plataforma creada por Mozilla, en unión con algunas operadoras, entre las que destaca Telefónica.
El proyecto, como no podría ser de otra manera, es libre, basado en el kernel de Linux, y funciona a nivel de frontend con lenguajes web (HTML5, CSS3, JavaScript,…).
En esta primera entrada de la serie #FirefoxOSDeveloper, quería adentrarme más en la arquitectura de SO, sobre todo de cara a que los desarrolladores que como un servidor estáis interesados por comenzar en esta plataforma conozcáis de antemano cómo funciona a nivel interno.
Arquitectura Firefox OS
A grandes rasgos, y como ya dejaba intuir hace unos meses en mi primer encuentro real con la plataforma, Firefox OS cuenta con tres grandes capas.
- Gonk: estamos ante la capa más baja, una suerte de kernel Linux destilado, y que adquiere cuerpo gracias a un gran número de librerías de código abierto. Por supuesto, encontraremos en él una capa de abstracción de usuario (HAL). Hay que dejar claro que comparte software con Android, pero no lo hereda de él. De hecho, se podría decir que estamos ante un SO más cercano a Linux que la niña bonita de Google.
- Gecko: Hablar de Gecko a estas alturas es hablar del motor de renderizado más conocido, y que podemos encontrar en todos los productos de Mozilla. En firefox OS encontraremos todo el potencial de Gecko, desde su capacidad para ejecutar cualquier tipo de API de HTML5, CSS3 y JavaScript, hasta el resto de motores gráficos que ya nos tienen acostumbrados los navegadores más concienciados con la estandarización. Esto quiere decir que una aplicación de Firefox OS puede correr en un terminal con Firefox OS, pero también en cualquier lugar donde podamos instalar el navegador Firefox (de hecho yo lo tengo en mi android, mi portatil windows 8 y mi iMac).
- Gaia: La capa visible, encargada de servir la interfaz. La mayor ventaja que ofrece Firefox OS en este sentido es que toda la comunicación con los diferentes elementos de un dispositivo (GPS, conectividad, SMS,…) se hace mediante APIs ya estandarizadas, y otras pendientes de estandarización.
Tenéis más información al respecto (procesos, funciones usadas de linux, y codificación de las capas) en la propia Mozilla Developer.
Tenemos que darnos cuenta que estamos ante un SO que acaba de nacer, que se adentra en un terreno complicado (HTML5 no recibirá estandarización final hasta 2014), y es por ello que debemos agradecer a Mozilla el gran esfuerzo que está llevando a cabo para generar APIs que el día de mañana quizás acaben usándose para otros dispositivos totalmente diferentes (hay que entender que hasta la llegada de Firefox OS, nadie había desarrollado/necesitado APIs para el control de aspectos de un smartphone como pueden ser los SMS).
A esto se une el hecho de que Mozilla está abierta a ayuda y aportaciones. Es realmente sencillo ponerse en contacto con los propios desarrolladores (por el IRC mismamente), y comentarles tus dudas, o aquellas consideraciones que te parece que han de tener en cuenta.
Una de las cuestiones que más debate formó en el evento de ayer, era precisamente el hecho de que las aplicaciones no tengan capacidad de hacer llamadas a recursos que interfieran con la interfaz propia del SO. Actualmente, es imposible conseguir que, por ejemplo, a la hora de elegir un número en la agenda de teléfonos, nos ofrezca la posibilidad de llamarlo, o bien usar una de las aplicaciones que hemos desarrollado para llamdas VoIP.
Este tipo de características ofrecen en principio la seguridad de que los permisos con los cuales dotamos a la aplicación no jugarán en nuestra contra, aunque quizás llevados al extremo. Son temas interesantes y que están en manos de la comunidad. Cualquiera puede ofrecer su punto de vista, y seguramente se tome en cuenta.
También decir que por lo visto, se está trabajando a contrareloj (de hecho en medio del evento nos avisaron que se había habilitado una nueva sección en la web sobre responsive design, creada en inglés por la noche y traducida al español en la mañana).
En la siguiente entrada, que llevará por hashtag #FirefoxOSDeveloper, os explicaré qué herramientas hacen falta para programar aplicaciones en Firefox, así como alguna plantilla de ejemplo para que trasteéis y veáis lo verdaderamente sencillo que resulta programar para este nuevo sistema operativo.
Para facilitaros el seguimiento del tutorial, os dejo los enlaces a cada una de las entradas anteriores:
- Desarrollando para Firefox OS 0: Introducción
- Desarrollando para Firefox OS I: Primeros pasos
- Desarrollando para Firefox OS II: Herramientas y paquetes
- Desarrollando para Firefox OS III: Archivos de una aplicación
- Desarrollando para Firefox OS IV: Diseño de aplicaciones e instalación
- Desarrollando para Firefox OS V: Configurando el Keon y el Peak en el simulador
- Desarrollando para Firefox OS VI: Flasheos y últimas versiones de GAIA
Atentamente esperaremos los próximos capítulos. Si bien será imposible que le gane a Android en popularidad, será una muy buena plataforma sobre la cual desarrollar nuestras aplicaciones móviles.
iré publicándolas durante la semana. En principio habrá otra más, pero preveo que acaben siendo dos o tres más, ya que tiene una gran acogida.
Tenéis ya disponible la segunda entrega del tutorial:
https://www.pabloyglesias.com/desarrollando-para-firefox-os-ii-herramientas-y-paquetes/
Buenas,
Antes de todo darte las gracias por compartir esta serie de artículos para ayudar a los que queremos aprender a crear aplicaciones para firefox OS. Pero me surge una duda, según he leído, este sistema operativo utiliza lenguajes web que llamaríamos «del lado del cliente». Pero siempre es interesante guardar información como por ejemplo puntuaciones en caso de un juego, nombres de usuario en una base de datos… En el caso de «puntuacion» de un juego ¿Se podría guardar esta información en el movil de alguna manera para acceder posteriormente a ella? y, en el caso de una aplicacion con usuarios ¿Se podría guardar la información en una base de datos?
Un saludo
¡Muchas gracias por todo!
Buena pregunta Juanma. Por supuesto que puedes guardar información. Si necesitas guardarla del lado del cliente (por ejemplo, configuraciones del usuario), se pueden usar varios métodos. O bien caché, o bien cookies, o bien algún almacén local del tipo IndexDB. Si lo que necesitas es guardar o consultar información en la nube, puedes usar la base de datos que quieras, sabiendo que al menos lo que ejecute el cliente es puro lenguaje web (es decir, en el servidor puedes gestionar con PHP, pero en el cliente usarás HTTPRequest para acceder). Otra opción es usar node.js o algún lenguaje web que te permita comunicarte directamente con BBDD.
Saludos!