Los errores de Persona

Llevo tiempo queriendo comentar este artículo de autocrítica sobre Persona, el sistema fallido de identificación Web de Mozilla. Desde un principio tenía mis dudas sobre este sistema, unas dudas en el ámbito más personal que otra cosa, que quisieran suplantar OpenID ya me puso en contra, pero había problemas más importantes que Persona arrastraba, problemas de diseño que han sido los que han terminado con este proyecto definitivamente.

Como bien se explica en el artículo, uno de los problemas más graves fue una centralización implícita de un protocolo, que en un principio estaba pensado para ser distribuido. Para entenderlo tenemos que pensar todo sistema tecnológico como una cadena, unos eslabones engarzan con otros, si queremos que el sistema sea distribuido todos los eslabones de la cadena deben serlo, puesto que con uno solo que permanezca centralizado o incluso descentralizado hará perder esta cualidad a todo el sistema. Podemos ir siguiendo esta cadena hasta el más alto nivel y nos daremos cuenta de que si el software no es libre no es posible crear un sistema distribuido, pero aún más, nos podemos encontrar con sistemas centralizados de facto, debemos empezar a pensar en lo distribuido como una forma de pensar, un estilo de vida incluso, algo que no está en la tecnología, más bien en las personas.

Borrador de Open Badges para GNU social

Las medallas están de moda, claro, los Juegos Olímpicos, todas las naciones quieren unos bonitos medalleros para lucir en sus televisores, pero… ¿Y nosotros? Los que nos da un poco igual que un tío que ha nacido en algún lugar supuestamente cercano, gane sobre otro que ha nacido más lejos, a veces ni eso. ¿Podemos tener nuestras propias medallas? ¿Premiar lo que nosotros queramos? ¿Lo que nuestra comunidad considere de valor?

6982158585_b42672ba32_h
Añadir una imagen de una medalla olímpica era demasiado fácil, no se que os parecerán éstas, pero la foto es bonita.

Claro que sí, Open Badges es un experimento de Mozilla, una idea simple y potente, una imagen con metadatos que la hacen verificable ante cualquier otro, desgraciadamente la idea no tuvo demasiado éxito, como tantos otros experimentos de Mozilla, lanzan la piedra y esconden la mano, pero lo cierto es que no es culpa de esta organización, lo cierto es que no tiene una comunidad detrás lo bastante grande para poner en marcha este tipo de iniciativas, no está lo suficientemente diversificada. ¿Quién creo que tiene una comunidad lo suficientemente diversificada o podría tenerla? La esfera GNU social.

No solo es que GNU social sea mucho más diversa, es que sociabiliza mucho más que cualquier organización, claro, es una plataforma dedicada a ello, que además es libre y distribuida, creo que es el sitio donde un sistema de medallas puede funcionar bien.

gnusocial500

¿Qué pretendo, entonces?

Hacer un plugin de GNU social que implemente Open Badges intentando seguir el estándar de Mozilla lo mejor posible.

¿Como funcionará?

Siguiendo el estándar Open Badges, tenemos 3 actores en juego: Issuer, Earner y Displayer.

Que en GNU social cuadraría de esta forma:

  • Issuer: Usuario que puede enviar medallas a otros, debe permitir que la medalla se valide con su usuario. Gracias a GNU social este envío puede federarse entre distintos nodos.
  • Earner: Usuario que recibe la medalla.
  • Displayer: El nodo en que se encuentra el usuario es el que almacena y muestra sus medallas. Por lo tanto nuestro nodo serviría de medallero virtual y es además nuestra carta de presentación.

El procedimiento de uso será de esta forma, un issuer decide enviar una medalla a un earner dado, para esto se usa un estado de OStatus, el earner contesta este estado aceptando o rechazando la medalla y una vez aceptada se envía al medallero en su nodo. En el caso especial de el issuer sea el administrador del nodo las medallas se aceptarán automáticamente, esta decisión de diseño concuerda con la arquitectura distribuida de GNU social donde tú aceptas las normas de convivencia del nodo en que resides. Además permitirá en el futuro combinarse con el plugin SocialCapital para entregar medallas a los usuarios del nodo.

¿Sugerencias?

Como todo borrador que se precie está sujeto a cambios, se abre por lo tanto el turno de las propuestas y sugerencias. También se agradecerían recomendaciones para la implementación. Los comentarios están abiertos para que hagáis volar vuestra imaginación.
Photo credit: Emilio_13 via Foter.com / CC BY-SA

Mensajes privados en GNU social y su federación

Los mensajes privados en GNU social son una de las cosas más olvidadas de la plataforma y este olvido viene dado por varios motivos; el primero que los mensajes privados o directos están implementados en un plugin que hay que añadir a posta en el config.php de la siguiente forma:

addPlugin('DirectMessage');

Después que la interfaz de los mensajes es bastante espartana y anticuada, usa esa separación entre la bandeja de entrada y de salida tan anticuada en lugar de la ventana normal de chat.

El tercer motivo y uno de los más importantes es que los mensajes no federan, OStatus no está preparado para ello y la gente que conoce el protocolo en profundidad asegura que no es la mejor solución.

XMPP_logo

¿Cuál es en mi opinión la mejor solución para esto? Implementar XMPP para los mensajes, esta solución permitiría federar mensajes al igual que cualquier servidor con XMPP, usar la cuenta con usuarios fuera de GNU social que tengan estas cuentas y también solucionaría el segundo problema porque se podrían usar aplicaciones XMPP como Conversation para iniciar conversaciones con toda tu red federada.

Puesto que ya hay un plugin para GNU social de XMPP, que permite usar el protocolo para publicar en la red, la solución podría ser modificar el plugin para que publique y reciba directamente desde los mensajes directos. Espero que este post sirva para iniciar una conversación sobre este tema y si alguien con conocimientos para llevar esto acabo se anima, que lo intente.

Cifra tus comunicaciones móviles con OpenPGP I

Reconocimiento: mrsdkrebs via Foter.com / CC BY

Desde ya ni me acuerdo cuando que colecciono llaveros, alguna especie de obsesión fluye por mis venas por los contenedores de llaves, ese objeto para agrupar todas las llaves y un escalofrío recorre mi espalda si tengo que encontrar una llave concreta en un llavero, el objetivo soñado, la llave única para toda tu vida, es una de tantas utopías a la que solo nos podemos acercar por la vía digital. En esta serie de tutoriales vamos a ver cómo, usando el estándar OpenPGP podemos cifrar nuestras comunicaciones digitales y muchas más cosas. Voy a empezar por las comunicaciones en el móvil, que son las grandes olvidadas en cuanto a seguridad, pero que ya representan un importante porcentaje de nuestra comunicación.

Antes que nada, decir que voy a utilizar únicamente software libre sobre Android para esta serie y es muy recomendable instalar una tienda de aplicaciones de software libre llamada F-Droid, con esta aplicación podréis descargar aplicaciones gratuitamente mientras que en la Play Store tendríais que pagarlas.

Nuestro llavero

Antes que nada vamos a instalarnos nuestro llavero digital en el móvil, la aplicación se llama OpenKeychain y es la que va a gestionar nuestras claves privadas y las claves públicas de la gente con quien nos comuniquemos.

En primer lugar por lo tanto necesitaremos una clave privada propia, si ya tenemos una porque ya usábamos de antes OpenPGP, la exportaremos a un archivo y la subiremos al móvil de una forma segura (por cable por ejemplo, ¡No uséis internet para esto, es inseguro!), si es nuestra primera vez con OpenPGP podemos crear una nueva clave privada desde OpenKeychain.

También necesitaremos las claves públicas, también llamados certificados, de toda aquella persona con la que deseemos comunicarnos de forma segura, así que pediremos a nuestros amigos estos certificados o los exportaremos al móvil si ya los teníamos. Al final tendremos una cosa así:

Screenshot_2016-01-30-12-49-10

Cifrar Correo

Vamos a instalar ahora el mejor cliente libre de correo para Android, K-9 Mail, configuramos ahora nuestra cuenta de correo y le pedimos a nuestro amigo que nos envíe un correo cifrado por nuestro certificado, recordad como funciona la criptografía asimétrica. En este caso tengo que dar las gracias a @gustavo@lamatriz.org por haber participado en el experimento.

Lo que veremos será algo como esto:

Screenshot_2016-01-30-12-40-08

Screenshot_2016-01-30-12-40-17Screenshot_2016-01-30-12-40-26

Como mi clave privada está protegida por una contraseña OpenKeychain me la pedirá y me preguntará cuanto tiempo deseo que la recuerde:

Screenshot_2016-01-30-12-40-35Screenshot_2016-01-30-12-41-09

Y finalmente tenemos el correo descifrado en nuestro móvil.

Ahora vamos a hacer el recorrido inverso, vamos a enviar un correo cifrado a nuestro amigo con su clave pública y cuando este lo reciba lo podrá descifrar con su clave privada. Los pasos ya son sencillos escribimos un correo y marcamos las casillas de firmar y cifrar, después nos saldrá una pantalla para configurar el OpenKeyChain para decirle que clave vamos a usar.

Screenshot_2016-01-30-12-51-13

Screenshot_2016-01-30-12-51-54

Y esto es todo por hoy, mis siguientes experimentos serán sobre cifrado de otras comunicaciones. ¡XMPP cifrado, allá vamos!

Persona ha muerto, larga vida a OpenID connect

mozilla personaLa compañía de Firefox sigue soltando lastre. Una vez Mozilla ha decidido retirar su servidor de Persona, su sistema de identificación de usuarios, nos queda una duda: ¿Ahora que hacemos? ¿Como podemos gestionar nuestras identidades con un estándar distribuido?

Cuando la misma Mozilla no recomienda ya hacer instalaciones propias de Persona, ya se puede dar por muerto este estándar y tenemos que pensar en otras opciones. Así que o inventamos un nuevo sistema de identificación distribuida más moderno o volvemos al estándar al que dio la espalda Mozilla, OpenID. En aquel momento la decisión estaba justificada por la limitación de OpenID de no poder identificar mediante la dirección de correo electrónico, cosa que consideraban indispensable para la adopción por el usuario común.

Logo OpenIDLo cierto es que ahora tenemos un nuevo estándar, OpenID connect, que une las ventajas de OpenID con las características de los servidores WebFinger para permitir la identificación por correo electrónico, número de teléfono o lo que queramos. En mi opinión es el momento de coger este estándar que casi no se ha implementado y empezar a usarlo para conseguir una Web distribuida. Puesto que la identificación es la base para la identidad y esta no debe anclarse a servicios centralizados si queremos un mundo sin ataduras.

Hay vida tras Firefox OS

rssCierto es que el mundo de los sistemas operativos sigue eclipsado por el concepto app, que hace ya años revolucionó el mundo del software democratizando su producción con el modelo App Store, por otra parte Mozilla intentó copiar el modelo utilizando lo que más conocían, las tecnologías Web y es cierto que con Firefox y Chrome a la cabeza todo se movió hacia los super-navegadores, lo cierto es que gracias a esto hoy en día tenemos las aplicaciones híbridas que permiten crear aplicaciones multiplataforma de una forma muy rápida y eficiente.

A pesar de todo Firefox OS ha caído y a algunos nos deja una especie de vacío que vamos a tener que llenar de alguna forma. Mozilla quiere impulsar un sistema operativo para el Internet de las Cosas, ese es el camino, claro, el futuro en teoría. La pregunta es más bien, que calzado se va a poner para recorrer ese camino. Las tecnologías Web estaban bien en el momento en que había que unificar las capas de representación de los distintos sistemas, un solo conjunto de lenguajes para todas las plataformas. Pero en el Internet de las Cosas, la capa de representación la pondrá el propio objeto, en este sentido conviene más buscar un sistema operativo orientado a la capa de modelo. Para ello yo tengo una apuesta clara y bien conocida, el feed, un sistema operativo donde todo es un feed y el objeto únicamente se dedique a interpretar ese feed para ofrecer la mejor representación posible.

Claro, debido a la gran variedad de productos en los que se podría encontrar este FeedOS, al reducirlo todo a un feed, el objeto debería ser lo suficientemente inteligente como para representar correctamente ese modelo de datos. En este campo ya están empezando a surgir bots comerciales que trasladan de una representación a otra intentando perder la mínima cantidad de información en el cambio. Es el momento de que el software libre se suba a este carro antes de que lo pierda como pasó con el modelo app, tenemos que ir del diseño adaptativo al consumo multi-interfaz.

Barreras de pago en estándares «abiertos»

There’s a generally accepted level of accessibility which is known as RAND or resonable and non-discriminatory which tech-industries wide is expected for certain types of documentation/specification. Historically «reasonable» was understood to mean that corporate entities could reasonably afford it, and the pricing would be at values like 10 or 50 thousand dollars US.

These values are clearly not «reasonable» for individual contributors. And moreover in the modern era it is very questionable what that high fee is for, since the costs for information dissemination are so low.

As a result, there has been some beginning of adjustment for what is a reasonable pricing to fit into the RAND style labelling. It’s happening slowly, but it does seem to be occurring. k8to

El mundo antes de Internet funcionaba así: se decidía crear un estándar entre varias empresas, se creaba una alianza para debatirlo, se publicaba y se distribuía. Definir estándares no es algo que cueste dinero, es más bien una negociación de carácter técnico, pero antes de internet, la creación de una alianza y la publicación y distribución del estándar desarrollado tenía un coste elevado, suponía la creación de un gran sistema burocrático con sedes en distintos países y gran cantidad de personal haciendo tareas puramente administrativas.

Con la red de redes todo esto ha cambiado, como bien saben en la comunidad Linux, la diseminación de información tiene un coste prácticamente cero. ¿Que sentido tiene seguir pagando las cuotas de acceso a estándares industriales? Para la gran industria la cosa está clara, mantener todo esa jerarquía burocrática, incluso crear nuevas con el mismo sistema, el objetivo es siempre el mismo, la extracción de rentas, donde los más pequeños siempre tienen las de perder. Así tenemos cosas como la MIPI Alliance o The Khronos Group, que podrían hacer mucho más de lo que hacen si abrieran sus puertas a las comunidades de hardware y software libres.

Herramientas para mapas, libres y colaborativas

Puede parecer un poco decepcionante para el que se inicia en los mapas libres y colaborativos como OSM que cuando entras en su página oficial openstreetmaps.org no se encuentren las mismas facilidades que en los servicios de mapas privados. No és que estén más atrasados o no quieran estas herramientas, es que esa web se dedica exclusivamente a promocionar Open Street Maps como lo que es, una base de datos geográficos. Y para obtener todos esos servicios nos tenemos que ir a otras webs que sí lo ofrecen, además también de forma libre y colaborativa. La lástima es no poder encontrarlos todos integrados en una misma web, creo que publicitaría mucho más este tipo de servicios, todo es ponerse de acuerdo, el código y las APIs están ahí. Vamos a verlos:

  • OSRM: Un motor de calculo de rutas desarrollado por la comunidad OSM, como no, es código abierto y no funciona nada mal.
  • TRAVIC: En esta web se han tomado feeds públicos con la información del transporte público de varias ciudades y se han situado sobre el mapa, por lo que es posible visualizar por donde va el autobús que quieres coger.
  • OpenTopoMap: Un mapa físico de toda la vida con algún toque de OSM, la verdad es que impresiona verlo.
  • Mapillary: Proyecto de alternativa colaborativa al Street View de Google. Muy vacío por el momento, pero es fácil que se vaya rellenando rápidamente con aportaciones de nuevos usuarios.
  • OpenAerialMap: Por último un servicio que no ha acabado de despegar es el mapa aéreo libre, hubo una iniciativa por abrirlo en 2007 pero la cosa no funcionó y ahora mismo no hay nada funcional que se le parezca, toda una lástima por que con la moda de los drones un servicio de este tipo podría llenarse de fotografías de usuarios que mostraran la tierra en alta resolución.

Como sobrevivir sin datos en tu smartphone

3g4glogoAunque hace ya un mes que contraté tarifa de datos he sido de las últimas personas es mi entorno cercano que han aguantado sin Internet en el móvil allí donde yo quiera. A pesar de lo que pueda parecer hoy en día, no es una tarea titánica vivir sin tener acceso a la red de redes en cualquier lugar. En este post voy a publicar las claves vivir sin datos que a mí me han funcionado bastante bien, siempre puede pasar que vuelva a esta vida y aquí tendré el recordatorio para retomarlo donde lo dejé.

  • Wifi: A día de hoy casi todas las cafeterías, cervecerías, pubs, restaurantes y otro tipo de locales tienen un wifi para los clientes. En cuanto llegues a cualquier sitio, pide la clave wifi, si está por la zona por la que te mueves aún mejor, al final tendrás tal cantidad de wifis que podrás moverte por la zona conectándote de una a otra, si vives en una ciudad pequeña, ya no necesitas nada más.
  • Apps: No todas las aplicaciones están pensadas para la vida offline, para empezar olvídate de la nube, sólo te dará complicaciones, piensa en alternativas. Siempre es interesante tener una gran cantidad de espacio en tu smartphone, varios gigas de datos pueden solucionar muchos inconvenientes la falta de conexión. Ahí va una lista de apps para Android amigas de lo offline. Recomiendo instalar F-Droid para conseguir las de código abierto más fácilmente.
    1. OsmAnd: Mapas, se descarga los mapas de OSM de la región que le especifiques y te sirve para GPS, calculo de rutas y todo lo que quieras.
    2. Moovit: Muy relacionada con la anterior, incluso la puede sustituir, si usas el transporte público con esta aplicación es posible guardar la ruta que vas a hacer para verla en el futuro, con su mapa de OSM incluido.
    3. SoundHound: Reconocimiento de canciones, puedes grabar un trozo de canción y cuando tengas acceso a Internet tratar de reconocerla.
    4. WordPress: Como buen bloguero esta no podía faltar, aprovechemos los tiempos muertos sin Internet para escribir borradores de artículos en local, luego solo tenemos que sincronizarlos cuando tengamos acceso a la red.
    5. TTRSS-Reader: Sí, podemos tener el lector RSS en nuestra propia nube, y con esta aplicación bajar los artículos para leer en cualquier momento.
    6. Se admiten sugerencias en los comentarios, las iré añadiendo aquí.
  • Informar de que no tienes Internet: Hoy en día ya todo el mundo da por echo que te pueden localizar en cualquier momento, si no lo avisas vienen las frustraciones en cualquiera de las dos partes. La presión social es uno de los motivos por los que más gente se ha atado al contrato de datos y los que hemos vivido sin él lo sabemos. Muy típico que quedes con alguien y no te envíen la ubicación del evento hasta el último momento. ¿Donde han quedado las damas y caballeros de la antiguedad que se sabían los nombres de las calles? Eso es cosa del pasado.
  • Paz interior: Esta es la parte más importante de todas, no se puede vivir offline queriendo saberlo todo en todo momento, por eso recomiendo relajarse y vivir la vida dejando que pase y aprovechando el momento, que es una de las cosas más interesante de la vida fuera de cobertura.

GNU Social Followers Widget

Ejemplo de visualización del plugin.
Así luce el plugin en mi blog, pero puedes elegir colores, tamaño del borde y muchas más cosas.

Desde el pasado sábado podéis ver en el panel de mi blog un widget con mi perfil de GNU Social, en lamatriz.org y los seguidores que tengo allí. Se trata de un widget para wordpress que he desarrollado a partir de un plugin similar para Twitter.

Su configuración es sencilla, es necesario registrar la aplicación primero en el nodo de GNU Social, de ahí se obtienen las dos claves necesarias para la autorización.

En mi caso he tenido que acceder en mi nodo al menú configuración, de ahí a connections y a la derecha pinchar en:

Developers

Are you a developer? Register an OAuth client application to use with this instance of StatusNet.

A continuación os muestro como lo tengo yo configurado:

Configuración en el servidor GNU social.
Configuración en el servidor GNU social.

No olvidéis rellenar el campo de descripción aunque sea texto sin sentido, si no no funciona. En el campo Source URL debéis poner la dirección de vuestro blog y el resto de campos como están.

Después instalamos el plugin en wordpress, agregamos el widget a nuestra barra lateral y rellenamos los campos de usuario (en mi caso: litox), servidor del nodo GNU Social (en mi caso: lamatriz.org) y las claves correspondientes. Personalizamos el widget a nuestro gusto, se puede editar prácticamente todo, y ya está. Así de «fácil».

Para instalar el plugin, lo más sencillo es instalarlo desde el repositorio de WordPress o clonarlo desde mi proyecto en github:

git clone https://github.com/carsanbu/gnusocial-followers-widget.git

Y subirlo al directorio plugins de vuestro wordpress:
wp-content/plugins