1 puntos por GN⁺ 2025-05-30 | 1 comentarios | Compartir por WhatsApp
  • Compiler Explorer inicialmente usaba un enfoque de guardar todo el estado directamente en la URL
  • Como las URL se volvieron demasiado largas, se introdujo el servicio de acortamiento de URLs goo.gl de Google, lo que generó una complejidad con varias redirecciones
  • Desde 2018, debido al problema del límite de longitud de las URL y la dificultad de mantenimiento, se cambió a una estructura que usa un almacenamiento propio basado en S3 y DynamoDB
  • Sin embargo, como Google cerrará el servicio goo.gl en agosto de 2025, surgió la necesidad de gestionar por cuenta propia la persistencia de los enlaces acortados del pasado
  • Hasta ahora se han rescatado más de 12,000 enlaces heredados, lo que muestra la importancia de la preservación del conocimiento de programación y de operar servicios sostenibles

Garantía permanente e historia de los enlaces de Compiler Explorer

Diseño inicial y por qué se adoptó goo.gl

  • En 2012, Compiler Explorer adoptó una estructura que codificaba directamente en la URL todo el estado del compilador
  • A medida que aumentaba la información de estado, surgió el problema de que las URL se volvían excesivamente largas
  • Para acortar las URL, en 2014 se aplicó el servicio de acortamiento goo.gl de Google
    • Ofrecía enlaces cortos con formato goo.gl/abc123, y al hacer clic redirigía a la URL larga original para restaurar el estado
  • Stack Overflow impuso restricciones al uso de enlaces acortados en 2016, lo que limitó el método existente
    • Todos los enlaces basados en goo.gl se vieron afectados por el riesgo de ocultar enlaces maliciosos
  • Como no querían almacenar datos de usuario, como medida temporal crearon su propia ruta con formato godbolt.org/g/abc123
    • Al acceder a godbolt.org/g/abc123, volvía a redirigir a goo.gl/abc123
    • En ese proceso, finalmente regresaba a una URL larga de godbolt.org
    • Esto provocaba una estructura compleja por la existencia de múltiples redirecciones
  • Más adelante, el uso de la API de Google simplificó parcialmente el proceso de redirección

Introducción de almacenamiento propio y gestión de enlaces

  • Desde 2018, el límite de longitud de las URL y la incomodidad de comprimir datos empezaron a surgir con frecuencia como problemas
  • Se implementó una estructura de almacenamiento propia usando S3 y DynamoDB
    • Los valores de entrada se hashean y se guardan en S3 en forma de documentos JSON
    • Al acceder a un enlace corto (godbolt.org/z/hashbit), se consulta el mapeo en DynamoDB
    • Si el valor hash incluía groserías u otras palabras inapropiadas, se implementó una verificación para evitarlo agregando un elemento aleatorio
    • Se resolvió así el problema de enlaces basados en hash con términos inapropiados y también se vivieron bugs relacionados (por ejemplo, issue #1297)
  • Actualmente todavía se sigue soportando el formato de dirección godbolt.org/g/abc123
  • Pese a la guía oficial de Google, el servicio goo.gl pasó a modo de solo lectura y está programado para su cierre total en agosto de 2025
  • Los enlaces acortados basados en goo.gl dejarán de poder resolverse
  • Como el formato godbolt.org/g/abc123 puede prolongar su vida al gestionarse directamente, se llevó a cabo un trabajo estructurado de rescate sobre esa estructura de enlaces

Recolección masiva y archivado de enlaces heredados

  • Recientemente se avanzó en rastrear y crear una base de datos de enlaces heredados desde todas las fuentes posibles (búsqueda, data dumps, weblogs, etc.)
    • Google Web Search API
    • GitHub API
    • logs de sus propios servidores
    • data dump de Stack Overflow en archive.org
    • datos de páginas web archivadas en Archive.org
  • Se logró recuperar aproximadamente 12,298 enlaces cortos
  • Internamente se empezó a usar una base de datos propia de enlaces en lugar de goo.gl (PR relacionado: #7724)
  • También se seguirá recopilando y asegurando de forma continua cualquier enlace godbolt.org/g/abc123 que aún no haya sido descubierto
  • Si la comunidad conoce enlaces que todavía no estén registrados, se pide acceder a ellos directamente o avisar a los administradores para complementar la base de datos

Filosofía del proyecto y la importancia de poseer la infraestructura

  • Este caso confirmó el riesgo de depender únicamente de la continuidad de un servicio externo (por ejemplo, Google) para infraestructura importante
  • La gestión de enlaces cortos y la estructura de respaldo eran medidas temporales, y para prometer URLs realmente permanentes es necesario gestionar directamente todo el servicio
  • En el proceso de rescatar enlaces heredados antiguos, como si fuera arqueología digital, se reconoció que cada enlace es una huella del conocimiento compartido, de preguntas y de explicaciones de conceptos de alguien
  • Este acto de almacenar y preservar se conecta directamente con el archivo histórico de la comunidad de programación
  • Si encuentras un enlace antiguo de Compiler Explorer, hacer clic en él aunque sea ahora es una forma de contribuir a preservar el conocimiento de internet
  • Esta vez, al depender de infraestructura bajo control directo y no de terceros, se puede cumplir la promesa de garantizar su continuidad

Disclaimer

  • Este texto fue escrito por una persona, y se usó un LLM en el proceso de recomendación de enlaces y revisión gramatical

1 comentarios

 
GN⁺ 2025-05-30
Comentarios de Hacker News
  • Antes de 2010, parecía natural asumir que los enlaces durarían para siempre, así que usaba mucho la función de marcadores del navegador, pero con el tiempo viví la experiencia de que muchos marcadores se volvieran prácticamente inutilizables por el deterioro de enlaces (linkrot); después adopté el hábito de guardar las páginas web como PDF, y cuando la vista de lectura (Reader view) se popularizó, cambié a copiar el contenido desde esa vista y guardarlo en archivos RTF
    • Uso la extensión SingleFile para archivar todas las páginas que visito; es relativamente fácil de instalar y configurar, pero hay que tener en cuenta que ocupa bastante espacio de almacenamiento; por ejemplo, mi directorio de archivos de páginas web ya llega a 1.1TB enlace de SingleFile en GitHub
    • Si instalas la extensión oficial de Web Archive para el navegador, puedes configurarla para archivar automáticamente todas las páginas que visites
    • Mi método consiste en recordar la información importante o al menos dónde puedo encontrarla; sigo vivo hasta ahora, así que supongo que el método funciona más o menos
    • Me pregunto si existirá alguna extensión de navegador que, cuando un enlace expire por timeout, te redirija automáticamente a web.archive.org
    • También está la opción de usar el formato WARC junto con WebRecorder información sobre WARC, WebRecorder
  • Podría valer la pena colaborar con el proyecto Goo.gl de ArchiveTeam detalles del proyecto; los acortadores de URL realmente fueron una pésima idea explicación de URLTeam
    • Según el estado en tiempo real del proyecto, se han descubierto 7.5 mil millones de las 42.5 mil millones de URL de goo.gl enlace al estado en tiempo real
    • ArchiveTeam probablemente no trabajó con enlaces "conocidos", sino que habría hecho fuerza bruta sobre las URL acortadas de Goo.gl; imagino que la mayoría o incluso todas las URL de Compiler Explorer estarán incluidas en sus datos, así que parece buena idea contactarlos
  • Que las URL duren para siempre era un sueño ideal; en la práctica, el 99% de las URL no son permanentes, así que quizá en vez de seguir peleando una batalla perdida, deberíamos construir tecnología asumiendo que la infraestructura no es permanente
    • Construir tecnología bajo la suposición de que la infraestructura no es permanente sí parece el camino correcto, y también creo que hay que evitar usar servicios de acortamiento de URL como si fueran infraestructura
    • URN (Uniform Resource Name) es un sistema diseñado para dar identidad a un recurso independientemente de su ubicación, pero nunca se masificó; más bien, los servicios de acortamiento de URL intentaron algo parecido sin implementar realmente bien esa idea explicación de URN en Wikipedia
    • Los nombres de dominio cambian de dueño con frecuencia, y hasta una URL que parece permanente puede terminar convertida con el tiempo en un enlace malicioso de phishing
    • Una URL solo identifica la ubicación de un recurso en la red, no el recurso en sí, así que no necesita ser permanente ni única; por eso se llama "Uniform Resource Locator". Al reconocer este problema, en 1997 se inventó el Digital Object Identifier
  • Hay algo poético en abusar de un servicio de acortamiento de enlaces como si fuera una base de datos y luego tener que volver a rastrear esos enlaces valiosos por todos los rincones de internet
    • El propósito original del acortamiento de URL era hacer más cortas las URL largas; más bien el problema son quienes abusan del dominio para ocultar spam, estafas o sitios ilegales mediante URL acortadas
    • Parece que ellos también usaban el servicio de acortamiento simplemente para comprimir URL; en realidad, sus propias URL ya contenían el estado del compilador como si fuera una "base de datos"
  • https://killedbygoogle.com/, Google Go Links (2010~2021) fue un servicio de acortamiento de URL de Google que operó unos 11 años y fue cerrado hace 4 años; los clientes de Google Workspace también podían usar dominios personalizados
    • No me parece tan grave que al cerrar el servicio ya no se puedan crear nuevas URL acortadas (“minting new ones”); lo mucho más injusto es desactivar también las URL ya creadas, especialmente cuando Google todavía sigue usando esta función internamente en algunas apps
  • La frase "Este texto fue escrito por una persona, pero las sugerencias de enlaces y la revisión gramatical las hizo un LLM" fue lo segundo que más me llamó la atención; da la impresión de estar viendo el inicio de una nueva tendencia
    • Me parece interesante la realidad en la que la gente siente que tiene que poner avisos así
    • Yo, personalmente, no siento ninguna necesidad de ese tipo de aviso; si el contenido se sostiene por sí solo, con eso basta. Y si la calidad del contenido es mala, da igual si lo generó una IA o una persona. Quienes quieren ese tipo de aviso probablemente lo usan como una especie de atajo de juicio, porque no se sienten capaces de evaluar el contenido por sí mismos y asumen que lo generado por IA es de menor calidad
  • Me sorprende que Google quiera cerrar incluso la versión de solo lectura; me pregunto si dejar redirecciones privadas activas podría implicarles algún riesgo legal
    • No sé cuál sea exactamente la situación interna, pero quizá quieran cortar un servicio en producción porque depende de bibliotecas o runtimes viejos o vulnerables; en el fondo, aunque el costo sea menor, igual están eligiendo cerrarlo para ahorrar, y da la impresión de que a la empresa no le importan mucho ni la buena voluntad ni las promesas del pasado
  • Me pregunto si no existirá alguna manera de pedirle a un empleado de Google que saque de la base de datos solo las URL acortadas que redirigen a godbolt.org
  • Siendo honestos, a menos que intervenga una fundación con financiamiento suficiente, tanto Compiler Explorer como godbolt.org también están destinados a no ser eternos algún día; quizá algún día toda la información quede abstraída y contenida en un modelo gigantesco con una cantidad enorme de parámetros
    • Hasta ahora nos ha ido bien; esta semana cumplimos 13 años, y aunque todos los patrocinadores dejaran de apoyarnos, tenemos fondos acumulados para seguir operando un poco más de un año; últimamente también hemos estado pensando en crear una fundación. En realidad, la vulnerabilidad no es la falta de dinero, sino que una sola persona (yo) es el punto único de falla
    • Es cierto; en este punto, el momento en que se rompan los enlaces de Compiler Explorer será realmente cuando desaparezca Compiler Explorer mismo. Hasta entonces, los enlaces seguirán vivos. En particular, creo que los enlaces de Compiler Explorer que se dejan en reportes de errores son muy valiosos; yo también incluyo el código directamente en el reporte junto con ese enlace, y además especifico qué compilador y qué versión usé. No creo que Compiler Explorer vaya a desaparecer pronto, pero dejar un reporte de errores así de autosuficiente sirve para estar preparado ante una desaparición inesperada
    • Me hizo pensar en la broma de que, según el teorema de no-ocultamiento, la información sobrevive para siempre
  • Mantener un dominio también cuesta dinero, así que no veo cómo una URL podría durar para siempre; me pregunto si la desaparición de las URL podría incluso tener un lado positivo, en el sentido de que la humanidad preserva de manera especial solo la información valiosa y el resto desaparece naturalmente en la historia
    • Pero los historiadores quieren más incluso de esos datos "basura", porque eso les ayuda a entender mejor la vida real y el contexto de la época; si pudiéramos subirnos a una máquina del tiempo, me pregunto cómo verían dentro de mil años este período en el que la mayor parte de la información desapareció junto con la evaporación de los medios digitales
    • Yo también estoy de acuerdo con que la desaparición de las URL tiene aspectos positivos; escribí algo relacionado sobre la naturaleza efímera de internet