6ta Cayapa Canaima. Imagen de David Hernández (by-nc-sa). Una actividad creativa tiene muchos matices y particularidades. Podemos estar de acuerdo en que nada está realmente hecho desde cero, puesto que siempre existe un antecedente del cual hemos tomado prestado inspiración. Específicamente en el desarrollo de Software Libre, esta es una actividad recurrente e incluso alentada como buena práctica. Y es que, todo el movimiento del conocimiento libre tiene como premisa la mejora progresiva de la forma en que la sociedad satisface sus necesidades, tomando como referencia los avances que otros han hecho y publicado. El Proyecto Canaima, por su parte, cumple 9 años desde la publicación de la versión 1.0. Desde ese entonces, año tras año, incontables personas han ayudado con su trabajo de diversa índole a la mejora progresiva de los procesos técnicos y no técnicos de la distribución. Realmente son incontables. A pesar de no poseer la mano de obra de otras distribuciones, Canaima es utilizada en un número significativo de instituciones de la administración pública, sirve como sistema operativo para las más de 4 millones de canaimitas distribuídas a nivel nacional y ha entrado varias veces dentro de las 100 distribuciones más populares, según distrowatch. Como trabajador del CNTI, fuí testigo directo de la evolución de la distribución, y de como con cada Cayapa (reuniones técnicas o bug squash parties), la calidad del código, conceptos y estructura de la distribución maduraban. Borrón y cuenta nueva En la última minicayapa celebrada en la Escuela Venezolana de Planificación en la ciudad de Caracas, los actores presentes tomaron la decisión de rehacer la distribución desde cero, bajo la justificación de que lo existente era tan desastroso que no servía. Con un quórum cuestionable y una premura impresa por la institucionalidad, nacieron nuevos paquetes y nuevos procesos. Pero con ellos también volvieron los errores superados, las malas estructuras de diseño corregidas, los errores conceptuales que ya habían quedado atrás, sin mencionar los acuerdos alcanzados que fueron fácilmente rotos sin mayor explicación. No es justificable de ninguna forma este accionar. Incluso, no estaría de acuerdo si se hubiese hecho borrón y cuenta nueva para sustituirlo por algo mejor. La memoria técnica de un proyecto no debe perderse. Rescatando lo perdido Es así como he decidido continuar con la línea de investigación que el Proyecto Canaima (directa o indirectamente) echó a un lado. La nueva distribución tomará el nombre de Tribus GNU/Linux, el mismo nombre de su plataforma (Tribus). Preliminarmente estaré haciendo una imagen ISO con los mismos paquetes originales de Canaima (con los nombres cambiados), basada en Debian Sid y comenzando su versionamiento en 0.1, pero luego me dedicaré enteramente a terminar la plataforma de Tribus para poder establecer los criterios de participación comunitaria, modelos de gobernanza y automatización de procesos. Por ahora, mientras la plataforma de Tribus se completa, las plataformas asistentes serán las siguientes: Versionamiento en Github. Integración contínua en Travis. Compilación de paquetes e isos en OpenShift (Pronto). Listas de Correo en Google. Documentación en Read the Docs. Si alguno desea sumarse a esta iniciativa, es bienvenido en las listas de correo. Esta nueva distribución está dirigida al usuario común y tiene como propósito fundamental mejorar la experiencia en el área de escritorio.
Últimamente estoy muy paranóico. La última de las paranoias que adquirí es tratar de utilizar una sóla aplicación de mensajería instantánea para todos los servicios que utilizo regularmente. Facebook, Google Hangouts, WhatsApp, IRC, Y ahora Telegram, son algunas de las redes sociales con las que me comunico. Me resulta realmente molesto tener que iniciar y revisar una aplicación por cada una, y además tener que ocupar memoria RAM adicional. Es por ello que decidí centralizar las aplicaciones a través de Pidgin. Si bien Pidgin ofrece soporte nativo a una gran cantidad de redes, aún le falta compatibilidad con Whatsapp. Sin embargo, a través de plugins, otras personas han podido adaptar los protocolos de comunicación para hacerlos funcionar con Pidgin. WhatsApp, Yowsup y Pidgin WhatsApp es una aplicación de mensajería desarrollada exclusivamente para teléfonos inteligentes. Permite el envío de mensajes de texto, imágenes, video a través de sus usuarios. La identificación de cada usuario es su número de teléfono móvil. Basta con saber el número de alguien para tenerlo en la lista de contactos. El procedimiento que voy a describir acá requiere que poseas una cuenta en WhatsApp. Oficialmente la única forma de abrir una cuenta en WhatsApp es a través de la aplicación en tu teléfono inteligente; sin embargo, existen alternativas que permiten hacerlo desde tu computadora, utilizando una conexión a internet. Lo primero que debes hacer es seguir la guía para obtener tus credenciales de whatsapp, que son tu número de teléfono con código de país y la cadena de autenticación (password). Dicha guía utiliza Yowsup, una aplicación hecha en python diseñada para comunicarse directamente con los servidores de WhatsApp. Una vez obtenidas las credenciales, debemos compilar e instalar el plugin para pidgin llamado whatsapp-purple. Para ello vamos a instalar las dependencias de compilación. En una distribución derivada de debian podemos hacer así (con permisos de root): sudo apt-get install git make g++ sudo pidgin python-dateutil python-argparse libglib2.0-0 libglib2.0-dev libpurple-dev libfreeimage-dev libprotobuf-dev Luego debemos clonar el repositorio del plugin con el siguiente comando (sin permisos de root): git clone https://github.com/davidgfnet/whatsapp-purple Seguidamente, entramos en la carpeta recién clonada y compilamos el plugin (sin permisos de root): make Y luego (con permisos de root), instalamos el plugin: sudo make install El plugin está instalado, ahora debemos configurarlo. Abrimos pidgin y vamos al menú Cuentas > Gestionar cuentas; pulsamos sobre el botón “Añadir”. Allí rellenaremos los siguientes datos: Protocolo: WhatsApp. Nombre de Usuario: Número de teléfono con código de país. Contraseña: Contraseña obtenida con Yowsup. Listo, ya tenemos nuestro plugin configurado. Ahora podemos agregar contactos introduciendo sus números de teléfono en el cuadro de diálogo Buddies > Añadir un amigo .... Tus grupos existentes se sincronizarán con tu lista de contactos, más no lo harán tus contactos individuales, debes agregarlos manualmente. Puedes enviar fotos y archivos a través del menú Conversación > Enviar archivo ... de la ventana de conversación. Si deseas visualizar los emojis nativos de WhatsApp, debes instalar un tema de íconos con emojis unicode como Twitter for pidgin. Algunas personas reportan problemas para recibir mensajes, por lo que recomiendo realizar el siguiente paso adicional: Se debe cambiar la configuración para que el campo “Resource” diga como aparezca en la imagen. Debes ir a Cuentas > Gestionar Cuentas > (Seleccionar la cuenta de WhatsApp) > Modificar, y en la pestaña “Avanzadas”, poner S 40-2.12.11 en el campo “Resource”. Cierra y vuelve a abrir Pidgin.
Para algunas actividades particulares, a veces es necesario husmear un poco en la base de datos de WhatsApp para obtener los datos de acceso de nuestro usuario en la plataforma. Normalmente esto es un proceso transparente para el usuario común porque la aplicación oficial de tu teléfono inteligente se encarga de manejar la autenticación sin necesidad de que tu introduzcas un usuario o contraseña. Sin embargo, existen otras formas de conectarse a los servidores de WhatsApp sin necesidad de utilizar la aplicación oficial, y para esto necesitamos los datos de acceso de nuestro usuario. Para obtener estos datos, utilizaremos una pequeña aplicación en Python llamada Yowsup. Yowsup El protocolo de WhatsApp es una versión modificada del protocolo XMPP que es de código abierto. Aunque los autores de WhatsApp han hecho su versión de codigo cerrado, el autor de Yowsup ha sido lo suficiente hábil como para hacer ingeniería inversa al protocolo y escribir esta fantástica librería. Yowsup funciona como un cliente de la API pública de whatsapp, permitiendo que registremos nuestro número de teléfono en la base de datos de WhatsApp, y así recibir la cadena de autenticación. La librería es totalmente de código abierto y la tenemos disponible en Github. Yowsup se puede instalar en cualquier distribución GNU/Linux (Ubuntu, Linux Mint, Elementary, Canaima, etc) a través del sistema de versionamiento git. Primero, abriremos una terminal de usuario y clonaremos el repositorio con git de la siguiente forma: git clone https://github.com/tgalal/yowsup Para el siguiente comando, necesitaremos tener nuestro teléfono a mano, ya que recibiremos un mensaje de texto con el código de validación. Nos meteremos dentro de la carpeta y ejecutaremos: ./yowsup-cli registration --phone [PHONE] --cc [CC] --requestcode sms [PHONE] debe sustituirse por el número de teléfono incluyendo el código de país y [CC] es el código de país. Seguidamente recibiremos un mensaje de texto en nuestro teléfono conteniendo el código de verificación para el registro, guardamos ese número. Luego ejecutaremos el siguiente comando: ./yowsup-cli registration --phone [PHONE] --cc [CC] --register [CODE] [CODE] es el código que recibimos por mensaje de texto. Al ejecutar el comando, recibiremos un bloque de información como el que sigue: status: ok kind: free pw: [PASSWORD] price: US$0.99 price_expiration: 1443389834 currency: USD cost: 0.99 expiration: 1472221910 login: [PHONE] type: existing El campo pw contiene la cadena de nuetra contraseña encriptada. Si quieres averiguar que aplicaciones pueden autenticarse usando estas credenciales, lee el artículo que habla sobre usar WhatsApp en Pidgin.
Durante los últimos días he estado dándole vueltas al asunto de la organización para el desarrollo de aplicaciones en Software Libre. He estado reflexionando y hablando con varias personas de la comunidad y sus experiencias en el desarrollo colaborativo de aplicaciones que han tenido éxito, es decir, que han logrado los objetivos que se trazaron. Destaca una conversación con Wil Álvarez (creador de Turpial) y la forma en como él y sus colaboradores han llevado un esquema de desarrollo sano y dinámico durante los últimos años. Manejar un proyecto colaborativo no es una tarea fácil. Si arrugaste la cara cuando leíste esa última frase, piénsalo bien porque es probable que lo estés haciendo mal. Puedo resumir la información que recopilé de la siguiente manera: Los canales de comunicación deben ser prácticos, directos y claramente identificados. Lo ideal es tener una lista de correo para desarrollo y soporte dedicada a la aplicación. Si sientes que una determinada aplicación “no merece” tener una lista aparte, entonces esa aplicación puede que esté gastando una valiosísima porción de tu tiempo y merezca desaparecer. Debe existir una documentación básica antes de hacer un llamado público a colaboración. La documentación debe describir perfectamente: ¿En qué consiste la aplicación? ¿Para qué la vamos a hacer? ¿Qué lenguajes y herramientas utilizaremos inicialmente (versiones, paquetes, etc)? (pueden cambiar con el tiempo) ¿Cuál es el proceso para arrancar la aplicación? ¿Cuál es el procedimiento para armar el ambiente en donde puedo empezar a desarrollar para la aplicación? ¿Cómo se hace para comunicarse con los desarrolladores/colaboradores? ¿Cómo se hace para modificar una parte del código? ¿A dónde lo mando? ¿Quién lo recibe? ¿Cómo sé si aceptarán mi aporte? ¿Dónde lo veo? ¿Cómo es el estilo de programación (code style) de los diferentes lenguajes que se utilizarán? Si se incluye un diagrama de objetos y un diagrama conceptual es mucho mejor. Según la experiencia de muchos, la gente no le gusta participar en las fases de diseño de la aplicación, sino más adelante donde ya existen tareas concretas y granulares que se puedan seleccionar. El código y todos los procedimientos (toma de decisiones, aceptación de contribuciones, lanzamiento de versiones, etc) deben ser públicos. Utilizar sistemas de versionamiento es ideal. Debe existir (al menos) un arquitecto de software por cada aplicación. Generalmente este rol lo asumen las personas que diseñaron la aplicación y consiste en hacer la gestión de la construcción de la aplicación. Estas personas: Abren los tickets para las nuevas funcionalidades de acuerdo al diagrama conceptual. Asignan los tickets a las personas que se han ofrecido a colaborar en determinadas funcionalidades. Cierran los tickets de acuerdo a las funcionalidades completadas. Aceptan peticiones para la fusión de código (pull/merge requests) de los diferentes colaboradores, luego de haber hecho una revisión del estilo de programación y las funcionalidades agregadas o errores corregidos. Atienden los casos de desarrollo o soporte que se presenten en la lista de la aplicación. No pueden descuidar la aplicación mientras se forma la comunidad. Deben formar parte activa en los medios de comunicación. Por ahora, hasta aquí el reporte. Más adelante estaré haciendo otros aportes.
A finales del año pasado, la gente de Twitter decidió hacer publicar los fuentes en formato SVG de sus populares smileys o emojis. Con ayuda de un proyecto base de íconos unicode para pidgin y las fuentes originales de twitter, pude armar un set de íconos para utilizar en pidgin con el aspecto visual de los utilizados en twitter web. Es muy fácil de instalar. Descarga el pack de íconos, descomprímelos y coloca la carpeta twemoji dentro de la carpeta ~.purple/smileys. Reinicia tu pidgin y selecciona el tema nuevo en el menú Herramientas > Preferencias > Temas > Temas de emoticonos, tal como se muestra en la figura de abajo. Por supuesto, el pack es software libre y puede ser usado y compartido bajo la licencia Creative Commons CC-BY-SA 4.0. Su código fuente está disponible en Github y también en Gnome Look.