Desarrollar este blog me ha tenido estas últimas semanas «cayendo por un agujero de conejo» en torno a las definiciones de «Small Web» e «IndieWeb» y con cierta cantidad de trabajo detrás al final implementé un montón de conceptos tanto filosóficos como tecnológicos en torno a estas ideas.
Hace 25 años, tener una web personal era lo normal, unas tardes de Frontpage, unos MIDIs de música de fondo y hosting gratuito cortesía de tu ISP o de GeoCities, un dominio .tk y a soltar al ciberespacio tu sitio para fans de «El Señor de los Anillos» o de «Final Fantasy» con una buena colección de GIFs y wallpapers de 640×480.
No existe un consenso sobre lo que es la «Small Web»; no es un estándar ni una tecnología concreta, pero sí hay mucha gente que ha escrito sobre esto y existen varios puntos en común. A grandes rasgos, son una serie de principios de diseño que parten de la nostalgia por la Internet que describo en el párrafo anterior pero proponiendo esa forma de interactuar en la red no como algo obsoleto, sino como algo perfectamente válido a día de hoy que aporta ventajas al usuario en aspectos como la autonomía, la privacidad, la descentralización, la accesibilidad y el control de su contenido.
Suelen ser sitios básicos, construidos con HTML, CSS, poco o nada de JavaScript, que utilizan RSS y poco más, este artículo de Eric Bower lo resume bien, pero es fácil encontrar artículos equivalentes con ligeras variaciones, bien sea desde una perspectiva más nostálgica como la de Parimal Satyal o con una mirada hacia el futuro como es el caso de Aral Balkan y su Small Technology Foundation que aparte de describir su particular visión de la «Small Web» trabaja en un conjunto de herramientas de software que pretenden facilitar la creación de pequeños sitios dentro de una red descentralizada.
¿Así que es este blog una «Small Web»?
Diría que sí, solo usa HTML y CSS, no usa JavaScript por ahora, ni tiene dependencias de ningún tipo, no trackea nada, no tiene anuncios, su propósito principal es compartir contenido sin más pretensión que la de compartirlo, está autoalojado y tiene su propio dominio.
¿Y es una «IndieWeb»?
Eso es otro tema, para que una web sea «IndieWeb» no basta con que sea una web pequeña y autoalojada, hay toda una comunidad que durante años ha desarrollado una serie de especificaciones técnicas que permiten dotar a una web de capacidades de interacción con otras webs, utilizando tu propio dominio, protocolos abiertos y marcas semánticas HTML. Algunas de estas tecnologías incluso han sido estandarizadas por el W3C.
Este artículo de «tecnolocuras.com» explica muy bien las diferencias entre los dos conceptos.
Y respondiendo a la pregunta, sí, puedo considerar que actualmente este blog forma parte de la «IndieWeb».
¿Qué he implementado realmente en este blog para que sea ambas cosas?
Uso Hugo en mi equipo local, lo que se genera no es más que una carpeta de ficheros HTML que se pueden mover donde quieras, para la parte estética PaperMod. Los temas en Hugo se configuran como submódulos de Git y es muy sencillo y flexible, aparte de traer un montón de cosas configurables por defecto, también puedes hacer «override» de cualquier fichero del tema y crear tus propios includes. Una vez que se genera la parte estática la despliego en un VPS.
Tengo mi propio dominio, es el primer paso, el resto de capacidades van a construirse sobre el hecho de poseer un dominio web.
La página principal implementa microformats2, concretamente
h-card, que es uno de los bloques más básicos de la «IndieWeb» ya que permite definir un perfil mediante marcas HTML, vendría a ser algo parecido a una tarjeta de visita que otras herramientas pueden leer automáticamente. Puedes comprobar que está bien etiquetado con el validador oficial, indiewebify.me.En las entradas del blog se utiliza otro microformato,
h-entry, que describe una publicación: quién la ha escrito, cuándo se publicó, cuál es su contenido, etc. Al igual que el perfil, se puede comprobar en el validador la corrección del formato.Los enlaces a mis perfiles sociales, correo electrónico y otros servicios están marcados con
rel=me. De esta forma puedo establecer una relación entre mi dominio y esos perfiles ya que, cuando el servicio lo permite, se puede verificar la identidad con un sistema de enlaces bidireccionales. Mastodon, por ejemplo, permite utilizar esta relación para verificar que un perfil está asociado a este dominio.He configurado de forma básica indieauth.com, de forma que el dominio deja de ser simplemente la dirección del blog y empieza a convertirse también en una especie de identidad digital que puedo utilizar en otros servicios.
Puedo recibir y enviar Webmentions. Y aunque la implementación técnica de esto ha sido especialmente dura para lo sencillo que es, también es de las cosas más interesantes que se pueden hacer con la «IndieWeb», dar la capacidad a tu sitio de enviar notificaciones a otras webs cuando las enlazas y de recibir comentarios, likes, repost… tanto desde otros sitios como desde redes sociales. Para ello utilizo go-jamming, está escrito en Go, es autohosteable y muy ligero; las interacciones de Mastodon y Bluesky llegan a través de brid.gy. El despliegue lo automatiza un script de shell: genera el sitio con Hugo, descarga las webmentions a un XML a través de un endpoint GET que go-jamming expone y todo se sube por rsync al VPS. Ese XML lo parseo y lo pinto yo mismo con una plantilla de Hugo. El propio desarrollador de go-jamming lo usa de forma similar en su blog y aunque posteriormente lo retirase el proyecto sigue mantenido.
Y finalmente he adoptado el concepto de POSSE (Publish (on your) Own Site, Syndicate Elsewhere) publico primero en mi blog y luego comparto el enlace donde quiera. Esto ya no es un protocolo ni nada técnico, sino una filosofía: no hay nada que implementar, es algo que podemos hacer manualmente cada vez que publicamos. Lo importante es que el contenido original siempre vive en mi dominio, y las redes sociales pasan a ser altavoces en lugar de la casa.
¿Por dónde sigo?
Hay algunas cosas que aún me gustaría valorar, pero si espero a tenerlo todo listo no publicaría nada nunca. Principalmente me interesa ver si es viable implementar micropub, ver si merece la pena automatizar la sindicación de nuevas entradas y luego algunos detalles como añadir la clave PGP para autenticarme en indieauth.com o mejorar el parseo de las webmentions.
Al final hay más de lo que parece detrás de un pequeño sitio estático.