LasIndias.blog

Conquistar el trabajo es reconquistar la vida

Grupo de Cooperativas de las Indias

videoblog

libros

Descubriendo la magia de OStatus con GNU social

Presentación de la serie y explicación de los fundamentos de GNU social que necesitas conocer para poder unirte al proyecto.

Prácticas en las Indias

gnusocialGracias a OStatus las instalaciones de GNU social no son jardines amurallados sino que se conectan entre si permitiendo a sus usuarios comunicarse y subscribirse unos a otros. OStatus es el engranaje que da vida a la red distribuida de nodos/servidores de GNU social. Una red distribuida, también conocida como la «federación», cuyas implicaciones son claves para impulsar un modelo social totalmente opuesto al de redes centralizadas y descentralizadas como Twitter y Facebook.

El objetivo de esta serie de posts bajo el título «Descubriendo la magia de OStatus con GNU social» es adentrarnos en el código de GNU social y detallar como funciona cada unas de las piezas de OStatus. Un aprendizaje clave para que nuevos desarrolladores puedan unirse al proyecto y desde el cual afrontar nuevos restos, entre ellos, la privacidad y la seguridad en redes distribuidas.

OStatus: las piezas del engranaje

gnusocial_ostatusOstatus combina de forma natural y eficiente un conjunto de piezas, protocolos, que permiten implementar comunicaciones distribuidas en la Web.

  • Activity Streams codifica las publicaciones, actividades y eventos sociales de los usuarios en los estándares Atom o RSS.
  • PubSubHubbub envia en tiempo real esos feeds a sus subscritpres alrededor de la Web.
  • Salmon notifica a los usuarios sobre las respuestas a sus publicaciones.
  • Webfinger hace fácil encontrar a otros usuarios en la red de nodos.

Aunque cada uno de estos protocolos cumple una función determinada veremos como colaboran entre si y ganan sentido al trabajar como engranaje dentro de cada nodo de GNU social. En este primer post vamos seguir los pasas que da GNU social cuando le pedimos suscribirnos a un usuario remoto, es decir, un usuario que no está en nuestro nodo.

Pero antes de pasar a la acción, veamos donde encontrar a OStatus dentro del código fuente de GNU social.

OStatus en el código fuente de GNU social

Inspirado en el boceto pintado en papel por Andrés durante el campUna de las maravillas de GNU social es su modularidad. Y como no podía ser de otra forma la implementación de OStatus está encapsulada dentro del plugin OStatus que podemos encontrar en la carpeta plugins.

El plugin OStatus agrega a GNU social un conjunto de librerías, funcionalidades y rutas para hacer posible la comunicación entre los nodos de GNU social. Hoy vamos a seguir los pasos del proceso de suscripción entre usuario remotos. El punto de acceso principal para esta opción en cualquier nodo de GNU social es main/ostatussub. Por ejemplo en laMatriz sería https://lamatriz.org/main/ostatussub.

Esta url será nuestro punto de partida para dar un viaje guiado por el proceso de suscripción a usuarios remotos. Un proceso donde nos centraremos en el trabajo que realiza el protocolo: PubSubHubbub.

Iniciamos el viaje hacia la suscripción

seguir_aEstando en el punto de partida, main/ostatussub, de cara al usuario final el proceso no tiene mayores secretos: introduce la dirección OStatus, usuario@example.com o http://example.net/usuario, del usuario al que desea subscribirse, a continuación GNU social le pide confirmar la suscripción, realiza la confirmación y a partir de ese momento empieza a recibir todas las publicaciones del usuario al que pidió suscribirse en su línea de tiempo personal.

Sigamos estos mismos pasos pero ahora haciendo referencia a las líneas de código de GNU social donde se desarrolla la acción.

  • Se ejecuta la acción. Cuando el usuario pulsa el botón «continuar» se ejecuta una petición POST, que incluye la variable profile, sobre la acción ostatussub implementada por el plugin OStatus.

    A partir de este momento GNU social se lanza a la caza del feed, todo es un feed, que se esconde detrás del usuario OStatus que le hemos indicado.

  • ¿Una uri o un email? Lo primero es confirmar si el usuario ha introducido en el formulario una uri o un usuario OStatus en formato dirección de email. Si lo que tenemos es un usuario OStatus en formato dirección de email tendríamos que tirar de Webfinger. Pero para este post vamos a suponer que tenemos una uri para encontrar el feed que buscamos. A partir de este momento es cuando entra en acción PubSubHubbub.

    PubSubHubbub nos permite suscribirnos a un feed en tiempo real. No tendremos que hacer peticiones regulares al feed para obtener las nuevas publicaciones sino que seremos notificados y se nos enviará el nuevo contenido en tiempo real cuando el feed se actualice. Para entender la lógica detrás de PubSubHubbub recomiendo ver este vídeo.

    En los pasos para implementar PubSubHubbub lo primero es descubrir como suscribirnos al feed, descubrir cual es el agente, hub, al que tenemos que pedirle que nos subscriba al feed. Este hub se encarga de informar a los subscriptores remotos sobre las actualizaciones de los feeds de los usuarios en su nodo. Cada nodo de GNU social tiene su propio agente.

  • discovery_pubsubhubbubDescubrir el hub. Una vez tenemos la url del feed GNU social hace una petición GET para obtener la información sobre el hub al que tiene que solicitarle la suscripción, le da persistencia a los datos encontrados (url del feed, hub del feed, etc) guardandolos en la base de datos asociados al usuario OStatus para el que recibimos una petición de suscripción. Culminado el paso, GNU social nos presenta los datos del usuario al que queremos suscribirnos y nos pide confirmación.
  • subscribingEnviamos solicitud de suscripción al hub. Una vez el usuario confirma la suscripción, GNU social da inicio al proceso de suscripción. Siguiendo la especificación de PubSubHubbub para solicitarle la suscripción a un hub, tenemos que hacerle una petición POST enviándole la siguiente información: mode=subscribe, topic=, callback=, verify=sync. El topic es la url del feed al que queremos suscribirnos y callback la url donde queremos recibir primero la clave de confirmación y a partir ahí las actualizaciones del feed. Aquí el código que implementa esto en GNU social. Enviada la solicidad tenemos que esperar a que el hub nos haga una petición GET con la clave de confirmación.
  • Recibimos la clave desde el hub y volvemos a confirmar.
  • !!Ya estamos suscritos!! A partir de este momento el hub nos va a enviar las actualizaciones del feed al que nos acabamos de suscribir con peticiones al url del callback que le hemos pasado.

¿Te ha gustado el viaje? ¿Te has perdido en algún punto? Esta serie de posts tiene como objetivo contribuir a la documentación de GNU social y facilitar la llegada de nuevos desarrolladores. Si encuentras algún error, tienes alguna idea para mejorar esta documentación, no dudes en comentar este post.

«Descubriendo la magia de OStatus con GNU social» recibió 2 desde que se publicó el Sábado 23 de Abril de 2016 dentro de la serie «» . Si te ha gustado este post quizá te gusten otros posts escritos por Manuel Ortega.

Pingbacks recibidos desde otros blogs

  1. […] la federación? Desde luego no renunciamos a la magia de OStatus. Empezamos a trabajar desde ya en desarrollar un plugin de BuddyPress para OStatus. Aunque también […]

Deja un comentario

Si no tienes todavía usuario puedes crear uno, que te servirá para comentar en todos nuestros blogs en la
página de registro de Matríz.

El Correo de las Indias es el agregador y plataforma de blogs de los socios del Grupo Cooperativo de las Indias y es mantenido y coordinado por los miembros de la comunidad igualitaria de las Indias