quarkus.io verlässt Jekyll für Roq, die Tests laufen 42% schneller
quarkus.io läuft seit dem 21. September nicht mehr auf Jekyll, sondern auf Roq, dem auf Quarkus aufsetzenden Generator für statische Seiten aus dem eigenen Haus. Holly Cummins beschreibt den Wechsel im Projektblog. Sichtbar ist für Lesende nur eine geänderte Zeile im Fuß der Seite. Interessant ist das Vorgehen.
Die Gründe für den Abschied sind unspektakulär: Die alte Seite war Ruby, eine Sprache, die im Team kaum jemand schreiben wollte; ein Teil der Mitwirkenden bekam den Build nur im Container zum Laufen, ein Teil gar nicht; gewünschte Anpassungen unterblieben deshalb. Die Gründe fürs Aufschieben waren Umfang und Komplexität: rund 4.700 Seiten in HTML, Markdown und AsciiDoc, vier Übersetzungen, eigene AsciiDoc-Erweiterungen und Jekyll-Plugins hinter den Guides sowie eine dynamische Suche mitten im statischen Teil.
Übertragbar ist die Methode. Ein Modell einmal auf das Repository loszulassen, verwarf das Team ausdrücklich — zu viele Sonderfälle, und weil täglich Änderungen eingehen, ließ sich ohnehin nichts einfrieren. Ein langlebiger Fork, in den laufend nachgezogen wird, wurde ebenfalls verworfen. Gebaut wurden stattdessen wiederholbare Konvertierungsskripte, in dieser Reihenfolge: zuerst Tests um die alte Seite legen, denn es gab keine und 4.700 Seiten prüft niemand von Hand; Lighthouse-Tests gegen Leistungseinbrüche ergänzen; die Skripte mit Modellhilfe so lange verfeinern, bis alle Tests grün sind; für die fehlende Lokalisierungsschicht ein Roq-Gegenstück schreiben (asciidoc-jruby-l10n); dann zusammenführen.
Zwei Folgen dieser Entscheidung wären bei einem Einmaldurchlauf nicht zu haben gewesen. Dieselben Skripte liefen gegen die offenen Pull Requests der Mitwirkenden, niemand musste 40.000 Dateien von Hand rebasen, niemand verlor Arbeit. Und die Skripte bleiben als Konverter nutzbar: roq-it-jekyll, laut Beitrag noch in Arbeit und noch nicht vollständig dokumentiert.
Nach der Umstellung fehlte doch einiges — der Beitrag nennt es selbst „post-merge panic" —, behoben innerhalb weniger Tage. Der Konverter umfasst rund 10.000 Zeilen neuen Code.

Was das bedeutet
Eine Migration gehört als Skript geschrieben, nicht als Termin. Die Randbedingung war, dass täglich weiter veröffentlicht wird. Eine wiederholbare Transformation macht den Umstellungszeitpunkt zur Entscheidung statt zum Wettlauf, rettet mit demselben Code die Zweige anderer Leute und lässt sich nach einer Review-Runde erneut ausführen, ohne dass jemand Handarbeit wiederholt.
Tests zuerst — ausgerechnet dort, wo niemand hinfassen wollte. Tests fehlten, weil die Seite in einer ungeliebten Sprache geschrieben war; genau das war auch der Grund für den Wechsel. Tests für Software zu schreiben, die man löschen will, fühlt sich nach Verschwendung an und ist das Einzige, was das Löschen überprüfbar macht.
Was der Beitrag behauptet und was nicht. Die einzige harte Zahl auf der Ergebnisseite ist, dass die Tests 42% schneller laufen. Der Seitenaufbau sei „etwas schneller", die Lighthouse-Werte „klein, aber spürbar" besser — als Eindruck gekennzeichnet und so zu lesen. Spürbar für die meisten Mitwirkenden dürfte vor allem sein, dass lokales Arbeiten jetzt ein einziger Aufruf von ./mvnw quarkus:dev ist.
Quelle: https://quarkus.io/blog/jekyll-to-roq/