Desarrollando para Firefox OS I: Primeros pasos

¿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.

firefox os app days

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: