Facebook: historia de una app y un hack. Sólo podía ser en Android
Por mucho que uno pueda preferir G+, Twitter o MySpace (cuenta la leyenda que aún existe) como red social, no se puede negar que el gran gigante de este campo es Facebook. La fuerza del titán azul no ha hecho más que aumentar con los juegos con versión móvil como Candy Crush, lo cual es irónico teniendo en cuenta que su aplicación nativa dejó mucho que desear durante muucho tiempo. El caso es que Facebook decidió rehacer (o tal vez re-rehacer ya que no eran los primeros cambios) su aplicación. Todo parecía salvado…, hasta que resulto que los cambios propuestos funcionaban…, casi siempre. Mejor dicho se encontraron con que la nueva aplicación tenía fallos para versiones de Android Gingerbread, es decir 2.3. Como toda historia veamos las tres partes
La introducción
Facebook se enorgullece de la cantidad de horas que sus usuarios pasan de forma activa en su red. Por eso a la mayoría nos chocaba que su aplicación estuviera tan atrasada. Cuando por fin la gran y azul F decidió poner las pilas a su equipo contrató a Nerdy Ranch, una empresa encargada de enseñar a desarrolladores para que estén entre los primeros del mundo de los terminales móviles, que añade a Facebook a una lista de clientes que ya incluía Google y Apple. A medida que salían de los cursos, los ingenieros se ponían a pasar la app de JavaScript a Java para que funcionara mejor e implementar las nuevas opciones. Más de 450 empleados ya han pasado por los cursos intensivos de Nerdy y los resultados son más que palpables.
El nudo
El problema surge cuando la aplicación realizada no es compatible con diversos dispositivos. ¿El motivo? Al intentar mejorar la app, pasando cada paquete y método a Java, resultó en más de 3 millones de métodos. Más allá de que eso nos parezca una burrada (la aplicación funciona bien, pero no es que baile macramé, como para necesitar tal complejidad), el caso es que el proceso encargado de instalar aplicaciones no permite más de 3 millones de métodos por app para Gingerbread.
La solución
Sencillamente Facebook mejoró su código (que imagino que tiene bastante donde mejorar con tales cantidades) y todos fuimos felices… Pues va a ser que no. En palabras de Mike Shaver, jefe de desarrollo Mobile de Facebook “vimos tres opciones: reducir las características de la app, no ofrecer nuestra app para Gingerbread (que aún representa más de la mitad de dispositivos) o dejar de desarrollar para Android.” Así que se pusieron en contacto con Google y trabajaron para encontrar una solución en conjunto ya que como dijo Shaver “Somos una aplicación importante para ellos y ellos una plataforma importante para nosotros”.
Y encontraron una solución: básicamente intentaron romper la aplicación en trocitos a ver si colaba… Y no coló, ya que la limitación no estaba solo en la instalación sino en al máquina virtual Dalvik, que afecta todas las apps de Android. Pero los de Facebook no se rindieron así que siguieron adelante.
Ahora es cuando viene la locura del asunto. Uno pensaría que Facebook debería plantearse optimizar el código y punto. Pero, ¿para que sirve llevar a tus ingenieros a súper cursos de informática si no son capaces de romper el código de un sistema abierto como es Android? Tal y como lo oís: la solución de Facebook es un hack a la propia máquina Dalvik para que instalar un proceso que sí permita su app, en lugar del que viene de serie. La modificación se le envió a Google, que dio el visto bueno.
¿Genialidad o torpeza máxima?
Pues un poco de ambas. Todo el que haya trabajado de informático sabe que el uno tiene que comerse el código erróneo de los demás y que los jefes no suelen dar demasiado tiempo para arreglarlo. Así que a menudo se ponen parches uno encima de otro. Pero la mayoría de empresas no son Facebook. No tienen su presupuesto ni su “libertad”, y es que nadie perseguía a la gran “F” para que mejorara su aplicación. O sea, todos decíamos que debería hacerlo, pero nadie dijo que lo hiciera rápido o todo de golpe.
Así que en lugar de planificar una reescritura, se hizo una “traducción” y en lugar de reconocer un fallo, se hizo una brillante escritura de código. Unas seis líneas que arreglaron todos los problemas, al menos hasta que resulte que la limitación de Dalvik en Gingerbread es por motivos de limitación de los mismos teléfonos y la aplicación se encienda pero cuelge el teléfono, ya que ahora son más de 3 millones de métodos, pero visto lo visto esto solo puede ir a más.
La culpa es del cha cha cha, o en este caso de Android
Voy a decirlo sin tapujos, esto no habría pasado en iOS. Antes de que los anti-Nico y droidfans varios saquéis las picas y antorchas, dejad que me explique. La limitación podría pasar en iOS perfectamente, lo que no podría haber hecho Facebook es solucionarlo. El caso es que como Android es un sistema abierto (o mayoritariamente abierto) Facebook pudo acceder al código fuente y buscar solucionar el sistema en lugar de su aplicación. Google estuvo de acuerdo con la solución, mitad porqué el apaño parecía fiable y mitad porqué era Facebook y se necesitan mutuamente.
Qué significa esto al final
Para el usuario general no significa absolutamente nada, sólo una anécdota graciosa y útil para comentar las ventajas de Android. Para los que entiendan un poco de informática, seguramente se lleven las manos a la cabeza y se replanteen trabajar en Facebook dados sus métodos de programar. Y para los Androides es un ejemplo de como la apertura de un sistema es la única forma correcta ya que permite encontrar fallos y soluciones que de otra forma sería imposibles.
Fuente | Techcrunch, Jaxenter