- Compiler Explorer utilisait au départ une approche consistant à stocker tout l’état directement dans l’URL
- Les URL devenant trop longues, le service de raccourcissement d’URL goo.gl de Google a été adopté, ce qui a entraîné une architecture complexe avec plusieurs redirections
- À partir de 2018, en raison des limites de longueur des URL et des difficultés de maintenance, l’outil est passé à une architecture reposant sur un stockage interne basé sur S3 et DynamoDB
- Mais avec l’arrêt de goo.gl par Google en août 2025, il devient nécessaire de gérer soi-même la pérennité des anciens liens raccourcis
- À ce jour, plus de 12 000 liens legacy ont été sauvés, ce qui montre l’importance de la préservation des connaissances en programmation et d’une exploitation de service durable
Pérennité des liens Compiler Explorer et leur histoire
Conception initiale et raisons de l’adoption de goo.gl
- En 2012, Compiler Explorer a adopté une architecture qui encodait directement dans l’URL tout l’état du compilateur
- Plus les informations d’état augmentaient, plus les URL devenaient excessivement longues
- Pour raccourcir les URL, le service de raccourcissement goo.gl de Google a été mis en place en 2014
- Il fournissait des liens courts au format
goo.gl/abc123, qui redirigeaient vers l’URL longue d’origine avant de restaurer l’état
- L’interdiction des liens raccourcis par Stack Overflow en 2016 a imposé des contraintes à cette approche
- Tous les liens fondés sur goo.gl ont été concernés en raison du risque de dissimulation de liens malveillants
- Comme il ne voulait pas stocker les données des utilisateurs, un contournement provisoire a consisté à créer un chemin interne au format
godbolt.org/g/abc123
- L’accès à
godbolt.org/g/abc123 redirigeait ensuite vers goo.gl/abc123
- Puis, au final, vers l’URL longue sur
godbolt.org
- Cette succession de redirections a rendu l’architecture plus complexe
- Par la suite, l’utilisation de l’API Google a permis de simplifier en partie le mécanisme de redirection
Mise en place d’un stockage interne et gestion des liens
- À partir de 2018, les limites de longueur des URL et l’inconfort lié à la compression des données sont devenus des problèmes récurrents
- Mise en place d’une structure de stockage interne reposant sur S3 et DynamoDB
- Les entrées sont hachées puis stockées sur S3 sous forme de documents JSON
- Lorsqu’on accède à un lien court (
godbolt.org/z/hashbit), le mapping est recherché dans DynamoDB
- Un mécanisme de contrôle a été ajouté pour contourner les cas où la valeur de hachage contenait des mots inappropriés, notamment en ajoutant un élément aléatoire
- Cela a permis de traiter les problèmes de liens fondés sur des hachages inappropriés, avec des bugs rencontrés au passage (par ex. issue #1297)
- Le format d’adresse
godbolt.org/g/abc123 reste toujours pris en charge aujourd’hui
- Malgré la communication officielle de Google, le service goo.gl est passé en lecture seule et doit être totalement arrêté en août 2025
- Les liens raccourcis fondés sur goo.gl ne pourront donc plus être résolus
- Comme les liens du type
godbolt.org/g/abc123 peuvent voir leur durée de vie prolongée via une gestion directe, un travail structuré de sauvetage a été lancé sur ce format
Collecte massive et archivage des liens legacy
- Récemment, les liens legacy ont été explorés et mis en base de données à partir de toutes les sources possibles (recherche, dumps de données, logs web, etc.)
- API de recherche web Google
- API GitHub
- Logs des serveurs internes
- Dumps de données Stack Overflow sur archive.org
- Données de pages web archivées sur Archive.org
- Environ 12 298 liens raccourcis ont pu être restaurés
- En interne, l’utilisation d’une base de données de liens propre a commencé à remplacer goo.gl (PR associée : #7724)
- Les liens
godbolt.org/g/abc123 qui n’ont pas encore été découverts continueront d’être collectés et préservés
- Si la communauté connaît encore des liens non enregistrés, elle est invitée à y accéder directement ou à prévenir les administrateurs afin d’enrichir la base de données
Philosophie du projet et importance de posséder son infrastructure
- Ce cas montre le risque qu’il y a à dépendre uniquement de la pérennité d’un service externe (comme Google) pour une infrastructure critique
- La gestion des liens raccourcis et la structure de sauvegarde n’étaient qu’une solution provisoire ; promettre de véritables URL permanentes suppose de gérer soi-même l’ensemble du service
- En sauvant ces anciens liens comme dans une forme d’archéologie numérique, on réalise que chacun d’eux est la trace d’un partage de connaissances, d’une question ou d’une explication de concept
- Cet effort de stockage et de préservation est aussi directement lié à l’archivage de l’histoire de la communauté de la programmation
- Si vous tombez sur un ancien lien Compiler Explorer, cliquer dessus dès maintenant peut contribuer à la préservation des connaissances sur Internet
- Cette fois, en s’appuyant sur une infrastructure contrôlée directement plutôt que sur un tiers, il devient possible de tenir la promesse de pérennité
Disclaimer
- Ce texte a été rédigé par un humain, avec recours à un LLM pour la recommandation de liens et la vérification grammaticale
1 commentaires
Avis Hacker News