Juan Leal

Ingeniero de Telecomunicación por una Administración pública más innovadora.

Cómo mantener el control de tu contenido en la web

Publicado el 2023-01-02 en tecnología.

Por qué

La web nació como un sistema distribuido en el que cualquiera podía tener presencia de forma autónoma. La tecnología es sencilla (es posible incluso mantener un sitio web escribiendo directamente HTML).

Sin embargo, como mantener las páginas a mano es tedioso y requiere un poco de conocimiento técnico, lo más habitual es publicar dentro de un medio de terceros o una red social (linkedin, medium…) o bien en una gestor de contenidos (en la nube, como wordpress.com, blogger… o alojado en nuestro propio servidor, como wordpress, drupal…).

En ambos casos estamos renunciando a controlar ciertos aspectos de nuestro contenido y de cómo se publica. Lo más evidente es que al publicar en un medio de terceros, normalmente cedemos una licencia que el medio rentabiliza cobrando suscripciones o mediante publicidad. No obstante, incluso si alojamos nuestro propio gestor de contenidos, estamos perdiendo el control sobre dos aspectos que me parecen relevantes:

  1. La presentación: Es bien sabido1 que las páginas web son cada vez más pesadas. Para leer2 muchas de ellas hay que sortear avisos de cookies, elementos dinámicos que distraen la atención o imágenes enormes que no aportan información y obligan a hacer scroll. ¿Es necesario todo esto para una web personal?. Al usar un gestor de contenidos entramos en la dinámica de sobrecarga3, porque la apariencia que podemos configurar en pocos clics suele ser pesada y las posibilidades de personalización son limitadas o son cada vez más complejas.
  2. La información: Cuando publicamos, nuestro contenido definitivo queda alojado en una base de datos. Aunque algunas plataformas ofrecen la posibilidad de exportarlo o importarlo, cada vez tenemos más información digital distribuida por todas partes4. ¿No sería más conveniente mantener el control de todos nuestros activos digitales en nuestro sistema de ficheros en un formato abierto5?

En este artículo explico cómo he intentado dar respuesta a estos problemas en este sitio web usando jekyll. El resultado es una web eficiente, en la que el contenido se almacena en ficheros markdown6.

Cómo

Los gestores de contenido normalmente construyen las páginas web al vuelo, justo cuando el navegador del usuario las solicita. En las webs estáticas, las páginas han sido generadas con antelación.

Las ventajas son que se entregan mucho más rápido al navegador, que son mucho más longevas y que es muy sencillo y barato alojarlas. Para sitios web grandes, el inconveniente es que pueden tardar minutos en construirse cuando hay que publicar algún contenido nuevo y que no son prácticas navegaciones complejas porque hay que pre-generar el producto cartesiano de todas las facetas de clasificación.

Estos inconvenientes no aplican a esta web, así que la he montado con jekyll. Lo he elegido sobre alternativas como zola, que me parece más elegante, porque el software hegemónico tiene mayor esperanza de vida7. Además, ya había aprendido ruby porque soy fan de redmine.

Jekyll guarda el contenido en ficheros markdown. Me molestaba un poco tener que guardar el markdown en el directorio _posts y las imágenes en _assets, así que opté por esta solución. De paso, he ajustado el CSS para ponerle título a las imágenes siguiendo esta sugerencia y he previsto que se me olvide especificar el layout.

En cuanto a la estructura del sitio, he decidido mantenerlo simple y priorizar el contenido sobre la navegación, así que aunque sea poco ortodoxo no he creado menú y me he llevado al pie de página tanto metadatos como navegación. Para el mapa de URLs he prescindido de extensiones y he reducido la fecha en el path solo al año8.

Jekyll carece de ciertas funcionalidades básicas como navegación por etiquetas, pero es fácil de extender. Para las etiquetas me he basado en esto. Además, he hecho un pequeño plugin9 para aprender: mostrar el QR de la url de la página con la etiqueta {% qr post.url %}. Si quieres verlo, imprime esta página.

Podría haberlo desplegado en mi servidor virtual, pero lo uso para pruebas de todo tipo, así que es más estable uno de los muchos proveedores que ofrecen alojamiento gratuito para sitios estáticos10. He elegido Firebase. He mantenido el proceso de publicación manual11.

Y qué más

En el proceso de construir esta web me he topado con varias líneas que merece la pena explorar:

  1. Gemini.
  2. El concepto de fediverso.
  3. Formas interesantes de extender jekyll: image- gallery y reading time.
  1. Preparando este artículo he conocido https://1mb.club, https://10kbclub.com, https://rawtext.club y similares, que agrupan a personas sensibles al proceso de sobrecarga que viene sufriendo la web y en las que hay mucho contenido interesante. 

  2. Es cierto que muchas de ellas no son realmente páginas (para publicar información), sino más bien aplicaciones que proporcionan servicios. Es sorprendente cómo la tecnología web ha evolucionado para convertirse en prevalente en algo para lo que no fue diseñada, pero eso es otra historia. 

  3. La principal razón práctica para reducir las páginas a un tamaño razonable es mejorar el tiempo de respuesta, pero también es cuestión de estética y orgullo: la tendencia a consumir todos los recursos disponibles no es buena ingeniería. 

  4. Tim Berners-Lee, creador de la web, lanzó hace unos años https://solid.mit.edu/, una iniciativa muy interesante pero poco exitosa para que las personas recuperen el control de sus datos. 

  5. Un formato abierto es aquel que tiene una especificación conocida públicamente y que puede ser implementada libre y gratuitamente. 

  6. Markdown es una solución simple para dotar de cierto formato (incluso transformándolo a pdf con gran calidad mediante pandoc) sin renunciar a poder utilizar cómodamente cualquier editor de texto. 

  7. Es importante elegir un software que tenga perspectiva de seguir existiendo y ser actualizado durante mucho tiempo, para evitar tener que migrar la web a otro sistema en el futuro. 

  8. He empaquetado el tema (la apariencia y navegación) como una gema para poder utilizarlo en otros sitios web. Está disponible públicamente

  9. Soy partidario del software libre y lo he utilizado para esta web, así que para ser coherente he publicado el código del tema y del plugin de qr

  10. Por principios, quería alojar mi web sin depender de una gran plataforma de blogs o, al menos, manteniendo la independencia para llegar a servirla desde mi casa si fuera necesario. Como Jekyll genera ficheros estáticos, usar Firebase no supone ningún problema porque puedo migrar a cualquier otro servidor en cualquier momento de forma muy sencilla. 

  11. Una de mis prioridades para el proceso de publicación era poder escribir en markor desde mi tablet. He montado termux para poder hacer push a git (me encantan estos hacks). He descartado configurar un hook para que genere y publique automáticamente en Firebase cada vez que subo una nueva versión, no me merece la pena.