Facebook y la pugna entre lenguaje nativo y HTML5, API y SDK

Hoy al levantarme y como de costumbre echarle un ojo a Google Play en mi dispositivo Samsung Galaxy SII, me encontré con una grata sorpresa. Entre algunas actualizaciones menores (nada menos que cuatro apps que uso a diario), estaba facebook, y después de leer los comentarios de la actualización, no me dejaba duda alguna: Facebook volvía a desarrollar en lenguaje nativo.

facebook_nativo

Lo cierto es que todos los que como un servidor usan un dispositivo Android, habrán notado que la aplicación de Facebook hasta hoy era lenta como ella sola. De hecho, esto hace que la mayoría de las veces la use únicamente cuando estoy con wifi (por eso de que al menos los datos tardan menos en actualizarse).

El problema, según ingenieros de FB, era la decisión de haber desarrollado su app tanto para iPhone como Android con HTML5, un lenguaje intérprete, y diferente de otras propuestas en lenguajes nativos del propio sistema, como es java para Android y C@ para iOS.

Me apena profundamente el hecho de este menosprecio por un lenguaje que seguramente sea básico en el futuro. Está claro que estamos ante un lenguaje que acaba de nacer, que le falta optimización (y sobre todo aprendizaje por parte de la comunidad de desarrolladores), y que no verá la expecificación final la luz hasta 2014, pero aún así, no me canso en repetir que actualmente, siempre y cuando tengas detrás a un equipo de expertos, puede ofrecer experiencias simplemente increíbles, como lo que ha conseguido Microsoft como promoción de su IE10 (que por cierto he de decir que rompe con el tópico de navegador malo) en su videojuego Contre Jour, y del que tenéis un vídeo al final de la entrada (actualmente hay 30 niveles disponibles gratuitamente, siendo 10 de ellos únicamente para dispositivos táctiles).

Os recomiendo encarecidamente (más si cabe si sois desarrolladores de juegos o queréis acercaros a este mundo) el análisis del proyecto Contre Jour BehindTheScenes (en español, con vídeo en inglés con subtítulos para los excépticos). Un desarrollo complejo y no exento de problemas, pero que ofrece algo que por ahora se le escapa al lenguaje nativo, y multiplataforma.

Para mostrar todos estos elementos, utiliza cuatro o más cuadros en tándem, donde la mayoría de los sitios web sólo usan uno a la vez. Sólo la aceleración por hardware de navegadores como Internet Explorer 10 puede unir estos canvas para crear la experiencia rápida y fluida […]

Que ahora me venga Facebook a decir que HTML5 no sirve para hacer aplicaciones, cuando un juego pide mil veces más rendimiento que una app social…

Lo cierto es que, sacrificando las prestaciones de HTML5, ahora la app de FB para Android sí funciona como debería funcionar (y como ya lo hacía en iOS), y no es una auténtica desesperación esperar a que se cargue todos y cada uno de los elementos para que luego tenga que cargarse el contenido multimedia.

Además de esto, quería resaltar algo que sí ha hecho bien Facebook, y es liberar la API y el SDK nativo a la comunidad de desarrolladores, lo que a grandes rasgos, ofrece más integración con otras aplicaciones y el propio sistema operativo, y por tanto mejora la experiencia de usuario.

Recordemos que iOS, al ser software propietario, tiene muy complicado llegar a ofrecer las prestaciones integradas de terceros en su propio sistema (puesto que para tenerlo, lo tienen que implementar ellos mismos). Esto es quizás una de las características más sobresalientes que ofrece Android en comparación con iOS, frente a desventajas como la fragmentación de versiones, y de lo que ya hablamos en las 6 razones para decidirse entre Android o iOS.

Gracias al nuevo SDK, en versión 3.0., se ha mejorado enormemente la sincronización con cuentas de usuario (prevesiblemente para logear con la cuenta de FB en apps de terceros) y la posibilidad de loguearse sin salir de la aplicación (algo que actualmente pasa, al tener que cargar el navegador para el logueo).

Resumiendo, una gran actualización, que esconde un motivo más bien pobre.

 

Edit a día 19 de Diciembre del 2012: Sencha acaba de publicar FastBook, un fork privado de la aplicación para Android de Facebook diseñada enteramente en HTML5 que demuestra que el problema no viene de la ineficiencia de los lenguajes web, sino de los programadores de Facebook. Por supuesto, se trata únicamente de una prueba de concepto, y no está disponible para su descarga.