twtxt

Hoy por hoy es difícil que te sorprenda una red social. Tenemos sabores y colores para todos los gustos, pasando por algunas donde se centran en el contenido multimedia (Instagram, TikTok), las que se enfocan en el microblogging (Mastodon, Pleroma, X, Bluesky…), foros (Reddit, Discourse), mensajería instantánea (WhatsApp, Telegram) o incluso en áreas como puede ser la programación (GitHub, GitLab) o la búsqueda de empleo (Linkedin). Todo el pescado está vendido. Son plataformas complejas con sus curvas de aprendizaje. ¿Puede existir una red social basada en el texto plano? Es decir, en la que para publicar un post solo necesites un editor de texto similar al bloc de notas.

Me gustaría presentarte twtxt, una red social en texto plano, descentralizada y minimalista. No necesitas ningún software para publicar, seguir a otros usuarios o leer sus posts. Una red social que funciona sobre el protocolo HTTP apoyado en archivos de texto plano. Su influencia de X, o Twitter en su momento, es evidente ya que se centra en publicar mensajes cortos. Sin embargo, con el tiempo ha ido evolucionando creando su propia identidad. Una idea simple, que a su vez es una genialidad, para el microblogging descentralizado vibrando en unas pocas líneas en un fichero de texto plano.

Empecemos por lo más elemental. ¿Cómo se publica un post en twtxt?

Publicar un post

Cada usuario publica sus posts en un archivo de texto plano que esta en su poder. Para que sean accesible por otros usuarios, debe estar en un servidor web cualquiera. El fichero debe seguir un formato específico: fecha y hora en formato RFC3339 + tabulación + contenido del post.

Por ejemplo, creamos un archivo llamado twtxt.txt con la siguiente línea:

2024-09-29T13:30:00Z   Hola twtxt! Soy un nuevo usuario.

Ahora lo servimos con un servidor web, como puede ser Nginx. ¡Listo! Ya hemos publicado nuestro primer post en twtxt.

Para publicar otro post, solo tendremos que añadir una línea al final del fichero:

2024-09-29T13:30:00Z   Hola twtxt! Soy un nuevo usuario.
2024-09-29T13:35:00Z   ¡Hola de nuevo! ¿Alguien me sigue?

Incluso podremos utilizar un sencillo comando de consola para facilitar la tarea:

echo -e "$(date -Im)\tPublico desde el terminal!" >> twtxt.txt

De este modo se añadirá la fecha y hora actual, seguido del contenido del post, en el fichero.

Ahora ya podemos compartir nuestros pensamientos a todos los usuarios de twtxt. Subimos el fichero al servidor web y compartir la ruta (por ejemplo, https://mi-servidor/twtxt.txt). Todos los usuarios que quieran seguirnos, añadirán nuestra URL a su feed.

Como cada usuario es responsable de su feed, se vuelve una red social descentralizada.

La siguiente pregunta es: ¿Cómo seguir a otros usuarios? Si yo quiero seguir a un par de amigos, no habrá mucho problema en revisar sus feeds manualmente. Pero si queremos seguir a más usuarios, o queremos recibir notificaciones de menciones, necesitaremos alguna herramienta que nos ayude.

Menciones

En twtxt, al igual que en otras redes sociales, puedes mencionar a otros usuarios.

El formato a seguir es: @< + nick del usuario + espacio + url del feed del usuario + >. Por ejemplo, si quiero mencionar a un usuario con nick foo y su feed esta en https://ejemplo.com/twtxt.txt, el formato sería @<foo https://ejemplo.com/twtxt.txt>.

2024-09-29T13:30:00Z Oye @<foo https://ejemplo.com/twtxt.txt>, me encantó tu último post.

También hay un mecanismo para referenciar un post concreto de otro usuario, creando un hilo de conversación mediante un hash. Puedes consultar la extensión.

Seguir a otros usuarios

Seguir a otros usuarios puede ser tan básico como revisar sus feed en busca de nuevos posts. Sin embargo necesitamos facilitarnos el trabajo de reunir todos los feeds de los usuarios que seguimos en un solo lugar, ordenarlos por fecha y saber si hay nuevos posts. Para ello disponemos de los clientes de twtxt que ha ido desarrollando la comunidad.

Disponemos de un cliente oficial para terminal realizado en Python. Puedes instalarlo con pip:

pip install twtxt

Podrás gestionar tus suscripciones, consultar las nuevas publicaciones y crear un timeline con los posts de los usuarios que sigues al más estilo de un lector de feeds RSS o app de microblogging.

Toda red social dispone de espacio para configurar tu perfil. En twtxt se realiza con la misma sencillez que publicar un post.

Configuración de perfil

Es posible personalizar el feed de twtxt con algunas opciones para que otros usuarios puedan conocerte mejor. Solo debes añadir unas líneas al inicio del fichero de texto:

# nick = mi-nick
# url = https://mi-servidor/twtxt.txt
# avatar = https://mi-servidor/avatar.png
# description = Me defino como un usuario de twtxt.
2024-06-15T07:36:15Z	Hi Twtxt
2024-06-15T08:03:42Z	I like it
  • nick: Nombre de tu usuario. Puede ser el que quieras, no habrá conflictos.
  • url: URLs que apuntan a tu feed o relacionado contigo (página web, blog, etc). Puedes añadir varias líneas.
  • avatar: URL de la imagen de perfil.
  • description: Descripción de tu perfil.

Como ves, es de lo más sencillo. Solo debes añadir al inicio del feed: # + nombre de la opción + = + valor de la opción. Fácil de leer y fácil de escribir.

El mayor problema que hay al utilizar un cliente, o editar el feed con tu editor de texto favorito, es que no puedes usar varios dispositivos. Si quieres leer tu feed en el móvil, en el portátil o en el ordenador de sobremesa, tendrás que sincronizarlos manualmente. Y aquí es donde entran en juego los Pods, además de resolver algunas limitaciones que arrastran los clientes.

Pod

Usar un cliente, por su propia naturaleza, arrastra unas importantes limitaciones. Por ejemplo no puedes consultar tu timeline en diferentes dispositivos, no esta la posibilidad de descubrir nuevos usuarios más allá de tu círculo, o facilidad para recibir notificaciones. Por esto mismo, la comunidad de twtxt creó los Pods.

Un Pod es similar a una instancia en la red, como puede ser Mastodon o Pleroma. Un nodo que interactúa con otros nodos para compartir feeds, notificaciones y listas de usuarios. Además esconden un componente de crear comunidades, es decir, aglomera usuarios que pueden interactuar entre sí. Ello favorece a que puedas leer publicaciones más allá de tus suscripciones, ayudando a explorar nuevas cuentas. Además, los Pods al ser herramientas online, ofrecen interfaces web que facilitar la gestión de las cuentas que sigues o herramientas de escritura (como la compatibilidad de Markdown). Ello no implica que dejes de usar el cliente, puede ser un complemento para mejorar la experiencia.

Por otro lado, si no te convence el software disponible, esta a tu disposición la documentación para crear tu propio Pod. La especificación no es compleja de implementar, a diferencia de otras como ActivityPub. Me atrevería a decir que puede ser un pequeño juego para tus tiempo muertos. Te animo a leer la documentación oficial.

Registry

Por la propia naturaleza descentralizada de twtxt, no dispones de funcionalidades humildes como pueden ser búsquedas globales de usuarios, filtrar por tags o recibir una notificación si un usuario (que no sigues) te ha mencionado. Interacciones básicas que esperas de cualquier red social que a su vez son triviales. Que la información no sea monolítica, sino que este distribuida, implica ciertos problemas. Y por ello se creó el Registry.

Un Registry es un índice de feeds que se actualiza periódicamente. Desde tu cliente o Pod, puedes comunicarte para realizar algunas acciones: incluir tu feed en el índice, buscar posts por palabras claves, encontrar menciones, usuarios y filtrar por tags. Enriquece a los clientes y Pods con una información muy valiosa. Además, es una herramienta para descubrir nuevos usuarios y feeds, y para que otros usuarios te descubran a ti.

Conclusiones

Hemos tocado muchos conceptos en este artículo. Para resumir, me gustaría comparar los tres elementos principales de twtxt.

  Feed Cliente Pod Registry
Función Publicar posts y configurar perfil. Leer y publicar posts. Gestionar feeds y comunidades. Indexar feeds y buscar posts.
Propósito Compartir pensamientos y gustos. Interactuar con otros usuarios. Descubrir nuevos feeds y usuarios. Buscar posts y menciones.
Similaridad Un fichero de texto plano con posts. Un cliente de consola para leer feeds. Un nodo que aloja feeds y comunidades. Un índice de feeds para buscar posts.
Ejemplo https://mi-servidor/twtxt.txt pip install twtxt twtxt.net como uno de los pods más populares. registry.twtxt.org
Interacción Manualmente con un editor de texto. Terminal o interfaz gráfica. Interfaz web. API.

Con el tiempo comprendes que twtxt es una red social que destaca por su simplicidad, pero sobretodo por su enfoque “puro” por el contenido. En twtxt no hay likes, retweets (boots en Mastodon), citas, sugerencias o algoritmos; solo publicaciones en un feed crudo de texto plano. Se sustenta porque hay usuarios que comparten la URL de su feed. El resto son herramientas complementarias, que no obligatorias, para mejorar la experiencia o interacción. Incluso puedes utilizarlo como una alternativa simple de un feed RSS o Atom para tu blog personal. Dale le uso que tú consideres.

Espero que puedas darle una oportunidad a una red social tan diferente y minimalista como es twtxt.

Puedes seguir mi feed en https://twtxt.andros.dev/

Enlaces de interes

Para terminar me gustaría compartir algunos enlaces de interés para que puedas profundizar en twtxt:

  • Documentacion oficial.
  • Extensiones: Lista de extensiones, o innovaciones, que puedes añadir a tu feed para mejorar la conectividad. Son todas opcionales, pero algunas son muy interesantes como la multilínea, hash para crear hilos o la posibilidad de añadir metadatos.
  • twtxt: Cliente oficial de consola en Python.
  • twtxt.net: Pod oficial de twtxt. Puedes registrarte y empezar a publicar.
  • Yarn: Autoalojamiento de Pod. Equivalente a tener tu propio gestor de feeds e interfaz web.
  • jenny: Cliente de consola con integración Maildir.
  • twtxt.el: Cliente de Emacs. Estoy involucrado en el desarrollo.
  • Registry: Oficial Registry de twtxt. Puedes buscar usuarios, tags o posts.
  • Especificaciones y comunidad: Sitio web con información técnica, extensiones o el estado de algunos proyectos.

¡Hasta la próxima!