- Compiler Explorer nutzte anfangs einen Ansatz, bei dem der gesamte Zustand direkt in der URL gespeichert wurde
- Als die URLs zu lang wurden, wurde Googles URL-Kürzungsdienst goo.gl eingeführt, was eine komplexe Struktur mit mehreren Redirects verursachte
- Ab 2018 wurde wegen der URL-Längenbegrenzung und der schwierigen Wartung auf eine eigene S3- und DynamoDB-basierte Speicherung umgestellt
- Da Google den goo.gl-Dienst im August 2025 einstellt, muss die Dauerhaftigkeit alter Kurzlinks nun selbst verwaltet werden
- Bis heute wurden mehr als 12.000 Legacy-Links gerettet, was die Bedeutung von Wissensbewahrung in der Programmierung und nachhaltigem Servicebetrieb zeigt
Die dauerhafte Garantie für Compiler-Explorer-Links und ihre Geschichte
Frühes Design und warum goo.gl eingeführt wurde
- 2012 führte Compiler Explorer eine Struktur ein, bei der der gesamte Compiler-Zustand direkt in die URL kodiert wurde
- Je mehr Zustandsinformationen hinzukamen, desto länger wurden die URLs und desto problematischer wurde das
- Um die URLs zu verkürzen, wurde 2014 Googles Kürzungsdienst goo.gl eingesetzt
- Kurzlinks im Format
goo.gl/abc123 wurden bereitgestellt; beim Anklicken erfolgte ein Redirect auf die ursprüngliche lange URL, woraufhin der Zustand wiederhergestellt wurde
- Als Stack Overflow 2016 die Nutzung von Kurzlinks untersagte, entstanden Einschränkungen für dieses Verfahren
- Wegen des Risikos, bösartige Links zu verschleiern, waren alle auf goo.gl basierenden Links betroffen
- Da man keine Nutzerdaten speichern wollte, wurde als Zwischenlösung ein eigener Pfad im Format
godbolt.org/g/abc123 geschaffen
- Beim Aufruf von
godbolt.org/g/abc123 wurde erneut auf goo.gl/abc123 weitergeleitet
- Danach ging es letztlich wieder zurück zu einer langen
godbolt.org-URL
- Durch diese mehrfachen Redirects wurde die Struktur unnötig kompliziert
- Später wurde der Ablauf durch die Nutzung von Googles API teilweise vereinfacht
Einführung eines eigenen Speichers und Link-Verwaltung
- Ab 2018 wurden die Grenzen der URL-Länge und die Unbequemlichkeit der Datenkomprimierung immer häufiger zum Problem
- Es wurde eine eigene Speicherstruktur auf Basis von S3 und DynamoDB implementiert
- Eingabewerte werden gehasht und als JSON-Dokumente in S3 gespeichert
- Beim Aufruf eines Kurzlinks (
godbolt.org/z/hashbit) wird die Zuordnung in DynamoDB nachgeschlagen
- Falls der Hashwert Schimpfwörter oder andere unangemessene Begriffe enthält, wird durch ein zusätzliches Zufallselement ausgewichen
- Dafür wurde eine Prüffunktion implementiert, die Probleme mit ungeeigneten Hash-basierten Links behebt; dabei gab es auch entsprechende Bugs (z. B. issue #1297)
- Das Adressformat
godbolt.org/g/abc123 wird weiterhin unterstützt
- Trotz offizieller Hinweise von Google wurde der goo.gl-Dienst in einen schreibgeschützten Zustand versetzt und soll im August 2025 vollständig eingestellt werden
- Goo.gl-basierte Kurzlinks werden dann nicht mehr auflösbar sein
- Die Form
godbolt.org/g/abc123 kann jedoch durch direkte Eigenverwaltung weiter am Leben gehalten werden, weshalb für diese Linkstruktur eine systematische Rettungsaktion läuft
Massensammlung und Archivierung von Legacy-Links
- Kürzlich wurden Legacy-Links aus allen verfügbaren Quellen gecrawlt und in einer Datenbank erfasst (Suche, Datendumps, Weblogs usw.)
- Google Web Search API
- GitHub API
- eigene Server-Logs
- Stack-Overflow-Datendumps von archive.org
- archivierte Webseiten von Archive.org
- Etwa 12.298 Kurzlinks konnten erfolgreich wiederhergestellt werden
- Intern wird nun statt goo.gl eine eigene Link-Datenbank verwendet (zugehöriger PR: #7724)
- Auch künftig sollen bislang unentdeckte Links im Format
godbolt.org/g/abc123 fortlaufend gesammelt und gesichert werden
- Falls es in der Community noch nicht registrierte Links gibt, soll man sie direkt aufrufen oder den Administrator informieren, damit die Datenbank ergänzt werden kann
Projektphilosophie und die Bedeutung des Besitzes der Infrastruktur
- Dieser Fall zeigt das Risiko, wichtige Infrastruktur allein von der Beständigkeit externer Dienste (z. B. Google) abhängig zu machen
- Die Verwaltung von Kurzlinks und die Backup-Struktur waren nur Übergangslösungen; wer wirklich dauerhaft gültige URLs versprechen will, muss den gesamten Dienst selbst kontrollieren
- Bei der Rettung alter Legacy-Links wurde wie bei digitaler Archäologie deutlich, dass jeder einzelne Link eine Spur von Wissensaustausch, Fragen oder Begriffserklärungen einer Person ist
- Dieses Speichern und Bewahren steht somit auch in direktem Zusammenhang mit der Archivierung der Geschichte der Programmier-Community
- Wer einen alten Compiler-Explorer-Link entdeckt, kann durch einen Klick selbst jetzt noch zur Bewahrung von Wissen im Internet beitragen
- Diesmal kann das Versprechen dauerhafter Verfügbarkeit eingehalten werden, weil man sich auf eigene statt auf fremde Infrastruktur stützt
Disclaimer
- Dieser Text wurde von einem Menschen verfasst; für Link-Empfehlungen und die Grammatikprüfung wurden LLMs verwendet
1 Kommentare
Hacker-News-Kommentare