OpenWapp y su historia

OpenWapp es una app para Firefox OS que permite (o permitía) el acceso a Whatsapp a través de dispositivos con el sistema Firefox OS.

Como podréis entender, Firefox OS necesitaba de ciertas aplicaciones para que fuera “mainstream”. Estas aplicaciones las pedía todo el mundo: “¿ah, pero que no tiene Whatsapp?”, “¿pero que no tiene Instagram?”.

De ahí surgió el proyecto OpenWapp. Pero comencemos por el principio.

El principio de todo es la necesidad de que hubiera Whatsapp para Firefox OS, y para eso se necesitaba:

  1. Un servidor intermedio que conectara los terminales con Whatsapp (un proxy, básicamente)
  2. Una librería en el teléfono que conectara directamente con Whatsapp

Los antecedentes

Hubo gente que ya estaba haciendo apps de Firefox OS para conectarse con servicios de mensajería, entre la que destacaba LoquiIM, una app de Adán que presentó en un hackaton que hicimos en Mozilla Hispano y con la que flipé muchísimo. Muchísimo. Ya que tenía una interfaz muy cuidada, el código era muy limpio y tenía la capacidad de acceder a muchos servicios de mensajería, ya fuera ICQ, Facebook Messenger u otras redes Jabber propias o de terceros. Era, simplemente, una pasada. “La app que necesita Firefox OS”.

Pero claro, Loqui tenía un grave problema: no tenía acceso a Whatsapp.

Y aquí apareció otra app, Wassap, creada por Luis Iván Cuende:

Su idea era simple usar un servidor intermedio para hacer de proxy con WhatsApp, y tener un protocolo “privado” entre tu teléfono y su servidor, que después creaba una sesión con WhatsApp y enviaba todos los datos.

Lo bueno de esta idea, es que ya había habido gente que había hecho esos servidores, y estaban disponibles en Github, libres para todo el mundo. Había uno en PHP, y otro en Python, llamado Yowsup, el más usado, más actualizado y el más probado.

Así que Luis Iván hizo eso: creó una app para Firefox OS que se comunicaba con Yowsup en uno de sus servidores, que después se comunicaba con Whatsapp para enviar y recibir mensajes (y todo lo necesario para poder realizar esto). También añadió la comunicación entre Yowsup y su app, mediante comunicación WebSockets, una idea magnífica (Whatsapp en general mantiene un socket para el tiempo real, pues para la web, usar websockets era la idea perfecta).

Esto, por supuesto tenía varios problemas:

  1. Si la app se hacía viral, WhatsApp pediría a Mozilla que eliminara la app (como así pasó).
  2. Si la app se hacía viral, todas las conexiones a WhatsApp no vendrían de diferentes teléfonos, si no de un mismo lugar: el servidor de Luis Iván, con una única IP, fácilmente baneable, por lo que todo el mundo acabaría bloqueado.
  3. Los datos de login/registro/conversaciones pasaban a través del servidor de Luis Iván, por lo que podría hacer incluso cosas maliciosas con los datos si hubiera querido.

Así que había que hacer otra cosa, algo un poco locura, pero que no quedaba otra si se quería que Firefox OS tuviera Whatsapp: que el propio teléfono se comunicara con WhatsApp.

La idea: CoSeMe

Como Wassap de Luis Iván, estaba usando un API muy similar a la de Yowsup, pero portada a WebSocket (permitidme esta licencia técnica, pero a alto nivel), lo mejor era hacer un port completo de Yowsup (en python, pensado para ejecutarse en un servidor), a JavaScript, corriendo como una librería en un cliente final (básicamente, una página web).

De aquí nació CoSeMe: “Conocido Servicio de Mensajería” 😁

La librería sería un port, en un momento determinado del tiempo de Yowsup a JavaScript, con un API tan similar, que cualquier aplicación usando Yowsup, o un wrapper HTTP o WebSockets, podría usar sin demasiados problemas CoSeMe.

CoSeMe funcionó: registro, login, subir y bajar imágenes, protocolo binario, criptografía in-place (modificar datos, y no copiar, debido a la poca capacidad de cálculo y de memoria de los primeros dispositivos Firefox OS).

Acoplando CoSeMe a Wassap y LoquiIM

Una vez estaba la librería lista, era el momento de que tanto Wassap (por ser la app que ya estaba en el Marketplace y que funcionaba con Whatsapp a través del proxy Yowsup), como LoquiIM (muchos protocolos, pero sin soporte para Whatsapp), hiciera uso de ella.

Tanto Luis Iván como Adán hicieron un trabajo increíble en sus respectivas aplicaciones, llevando Whatsapp a dos aplicaciones diferentes, con sus características respectivas, pero usando un mismo backend: la librería de CoSeMe, y con la idea de que, para triunfar, Firefox OS necesitaba urgentemente WhatsApp y un buen cliente

La app: OpenWapp
openwapp

Una vez que había dos aplicaciones que usaban CoSeMe, podría tener sentido hacer una app propia, sobre todo cuando LoquiIM era multi-protocolo, y Wassap fue retirada del Marketplace, sin más actualizaciones.

OpenWapp fue creado en base a código de una aplicación de mensajería, y modificado para funcionar con Whatsapp: registro, login, contactos, conversaciones uno a uno, grupales… Todo lo que teníamos en Whatsapp hasta hace dos años, así que nada de doble check azul, ni varios administradores en los grupos, ni llamadas de audio, ni grabaciones o audio en las conversaciones, ni compartir documentos, ni cifrado en las conversaciones, ni notificaciones push…

OpenWapp hizo su aparición en el Marketplace el 22 de mayo de 2014, con la versión 1.0.0 y se ha ido actualizando hasta hace un par de meses, con los cambios básicos en el protocolo de WhatsApp para que pudiera seguir funcionando de la forma básica: registro en el sistema, poder hacer “login” (que para un usuario final no se ve), enviar y recibir mensajes, última conexión, actualización de tokens, subida y descarga de imágenes y vídeos…

La muerte

OpenWapp Dead

Hace unos pocos días, y dado que no hay desarrolladores interesados en CoSeMe (porque en el 90% de los casos, el desacople es tan importante entre OpenWapp y CoSeMe, que los cambios que hay que realizar para que OpenWapp siga funcionando es cambiar la librería de CoSeMe), he decidido “darla de baja” del Marketplace.

Básicamente enviar una actualización con un mensaje dando las gracias a la gente que ha usado la aplicación y que ha contribuido para que sea una aplicación con 1.5 millones de descargas durante su vida, 2800 revisiones, y con una valoración de unos 3.8 estrellas sobre 5.

Agradecimientos

Ni CoSeMe, ni OpenWapp ni nada de todo esto hubiera sido posible sin los apoyos que tuvo el proyecto en sus inicios, con código, documentación, diseño, ideas, ayudas varias y tiempo. Como open-source, hay que dar las gracias a Adán de Loqui por sus ganas de seguir con la aplicación, y a los contribuyentes de Loqui, que siguen dando guerra con la aplicación, añadiendo cifrado y otras características. También a Salva de la Puente por el apoyo que ha dado al proyecto con sus increíbles conocimientos técnicos. Y a Giovanny y a Adrián por sus revisiones en el Marketplace.

Y por supuesto, a todos los que han usado OpenWapp, han abierto issues en Github, y han añadido pull-requests para cambiar cosas.

Ha sido un viaje de unos dos años y medio. Intenso, bonito, y con la convicción de que, con más apoyo, WhatsApp en Firefox OS hubiera sido una realidad oficial, y no extraoficial como éramos.

Happy hacking.

Por qué voté a Alberto Garzón

Soy uno de los #Garzoners. Voté a Garzón.

En estas elecciones generales, teóricamente una de las más disputadas de la democracia, parecía que sólo era posible votar a uno de los cuatro grandes partidos: PP, PSOE, Podemos o Ciudadanos.

Sin embargo, había más opciones, muchas más opciones. Nadie hablaba de ellas, ni en los debates, ni casi en encuestas, donde sólo aparecían cuatro posibilidades. Una de ellas era el “outsider” de la izquierda, como lo llamó El Español, Alberto Garzón.

Alberto Garzón es una persona joven, de mi generación (sólo 3 años mayor), con un compromiso social infinitamente mayor a cualquiera de los otros 4 candidatos. No fue elegido a dedazo, o en base a una ordenación de candidatos por orden alfabético, o por ser la cabeza visible televisiva de un partido recién creado. Fue elegido por la mayoría de la militancia en un congreso abierto.

El título dice ‘Alberto Garzón’ y no Izquierda Unida o Unidad Popular. Por primera vez en mi vida, podía votar una lista donde estuviera el candidato a la presidencia del gobierno, y con opciones de que mi voto realmente diera un escaño (soy de Burgos, imaginad el grado de bipartidismo que hay, con sólo 4 posibles escaños en una zona tan conservadora y envejecida).

Así que lo hice.

Lo hice porque creo que Alberto es una persona que merece estar en el congreso y que dé voz a la lucha social y a los problemas de la inmensa mayoría. Porque, como dijo, “el parlamento no es parlamento sin lucha social”. Y si hay que salir a las calles para defender lo que nos han quitado durante los últimos años y que nuestros padres y abuelos se encargaron de conseguir, con mucho, muchísimo sufrimiento habrá que salir.

Alberto es mi candidato ideal por lo que representa: juventud, brillantez, don de palabra, experiencia en la lucha social y un compromiso con la gente y no con las élites.

Alberto Garzón

Defender lo de todos no es lucha sólo de nuestros representantes.

Sin embargo hay un grave problema con Alberto Garzón y es que pertenece a la Izquierda Unida de hoy en día.

Izquierda Unida se refunda o muere. También tengo claro que, como comentaban por Twitter, si no fuera cabeza de lista Garzón, probablemente IU tendría una representación nula en el congreso (más allá de mareas, confluencias y frituras variadas según las zonas). La refundación o se produce ya, buscando gente joven, válida, que venga de la lucha por los derechos sociales y la gente enquistada en su organización se va, o todo desaparece. La cabeza visible está, es reconocible y va a ir a más. Pero si no se cortan de raíz todos los problemas actuales, todo lo ganado se va a perder como casi se hace pocos días atrás. Y si esto obliga a ir en confluencia con otros partidos de izquierda para tener representatividad y fuerza, hay que pensar en hacerlo.

Yo quiero que sea Alberto el que dirija esta refundación, el que dé voz a la verdadera izquierda (“radical” como la llaman algunos), la que defienda los derechos de los trabajadores, la que luche por mantener la dignidad en el servicio médico y educativo público, la que crea que hay que hacer un reparto mucho más equitativo de la riqueza, la que haga que todo esté supeditado al bienestar y beneficio del pueblo (¿es esto radical? Leed la constitución, artículo 128.1), la que crea que la energía debería producirse de forma limpia y respetuosa con el medio ambiente, la que elimine todo tipo de tortura animal, la que crea que España es un estado plurinacional y que los poderes públicos tienen que estar al servicio del pueblo y se rija sobre una justicia real y no económica.

Yo quiero un cambio, real, significativo, en beneficio de todos. Y en eso, espero que Alberto Garzón y la futura izquierda real puedan conseguirlo. Por eso, tienen y tendrán mi voto.