Migration des Dillo-Projekts von GitHub
(dillo-browser.org)- Das Webbrowserprojekt Dillo wird von GitHub auf einen eigenen, selbst gehosteten Server migriert.
- Als Hauptgründe für den Umzug wurden bei GitHub die JavaScript-Abhängigkeit, die zentrale Kontrollstruktur und die langsame Performance genannt.
- Der neue Server wird unter der Domain dillo-browser.org betrieben und setzt auf ein leichtgewichtiges, cgit-basiertes Git-Frontend sowie den selbst entwickelten Bugtracker „buggy“.
- Sämtliche Daten werden als Git-Repositories verwaltet, auf Codeberg und Sourcehut gespiegelt und so das Risiko von Datenverlust minimiert.
- Durch die OpenPGP-Signatur ist er so ausgelegt, dass die Vertrauenswürdigkeit auch bei DNS-Verlust erhalten bleibt und Unabhängigkeit und Kontinuität des Projekts gestärkt werden.
Hintergrund
- Die ursprüngliche Website von Dillo war früher dillo.org und enthielt ein Mercurial-Repository, einen Mailserver, einen Bugtracker und ein Mailinglisten-Archiv.
- 2022 ging die Domain verloren, und ein Dritter eröffnete eine ähnliche Website, die mit KI-Werbung überfüllt war.
- Ein Teil der Daten wurde wiederhergestellt, jedoch nicht vollständig.
- Aus dieser Erfahrung heraus wurde entschieden, die Abhängigkeit von einer einzelnen Website zu vermeiden und eine verteilte Backup-Struktur aufzubauen.
- Anfangs wurde der Code auf GitHub hochgeladen, langfristig wurde dies jedoch als ungeeignet eingestuft.
Probleme mit GitHub
- GitHub war nützlich für CI-Workflows und Repository-Management, hat aber mehrere Einschränkungen.
- Ohne JavaScript kann das Frontend nicht funktionieren, daher lassen sich im Dillo-Browser keine Issues oder PRs öffnen.
- Die Seite verbraucht zu viele Ressourcen und erzeugt bei einfachem HTML-Rendering unnötige Last.
- Durch eine einzige Kontrollinstanz besteht das Risiko, dass ein Konto gesperrt wird und damit der Datenzugriff blockiert wird.
- Die Plattform wird immer langsamer und verlangt zunehmend eine schnelle Internetverbindung.
- GitHubs „Push-Modell“ für Benachrichtigungen passt nicht zu einer eher offline-zentrierten Entwicklungsweise.
- Bei Projekten mit hohem Anteil an Nicht-Entwicklern fehlen Community-Management-Tools, was die Erschöpfung der Maintainer erhöht.
- Da GitHub sich zunehmend auf LLMs und Generative AI konzentriert, verstärken Websites dort Maßnahmen gegen LLM-Crawler wie JavaScript-Wände oder Browser-Fingerprinting.
- Dadurch kam es zu Nebenwirkungen, bei denen Dillo-Benutzern der Zugriff verwehrt wurde.
Aufbau der eigenen Infrastruktur
- Bestehende Repository-Dienste konnten gleichzeitig den Ausfall einer einzigen Stelle verhindern und dabei schlank betrieben werden nicht erfüllen.
- Daher wurde beschlossen, den Server selbst zu betreiben und mehrere Mirrors zu unterhalten.
- Die Domain dillo-browser.org wurde gekauft und ein kleiner VPS-Server eingerichtet.
- Der Betrieb läuft stabiler als erwartet; vor allem KI-Bot-Traffic wird abgewickelt.
- Als Git-Frontend wurde cgit gewählt.
- cgit ist in C geschrieben, nutzt wenig RAM und CPU und arbeitet ohne JavaScript.
- Das CSS wurde leicht angepasst, damit es in Dillo gut dargestellt wird.
- Erreichbar unter https://git.dillo-browser.org/.
- Als Bugtracker wird ein selbst entwickelter ‚buggy‘ eingesetzt.
- Markdown-Dateien werden geparst und HTML-Seiten erzeugt, jeder Bug wird im Git-Repository gespeichert.
- Bei jedem Commit aktualisiert ein Git-Hook die Seiten automatisch.
- Offline-Bearbeitung möglich, ohne Sicherheitsbedenken.
- Verfügbar unter https://bug.dillo-browser.org/.
- Das Mailinglisten-Archiv wird auf 3 externe Dienste verteilt, eine eigene Kopie ist für die Zukunft geplant.
Mirror-Einrichtung
- Alle Kerndaten werden als Git-Repositories verwaltet und auf Codeberg und Sourcehut gespiegelt.
- Wenn ein Repository abgeschaltet wird, ist ein Wechsel zu einem anderen Mirror mit niedrigen Kosten möglich.
- Der einzige Ausfallpunkt bleibt DNS (dillo-browser.org).
- Bei DNS-Verlust kann man Nutzer über Mailingliste, Fediverse und IRC informieren.
- Die Daten sind in Git repliziert, daher tritt kein katastrophaler Verlust auf.
OpenPGP-Signatur
- Diese Seite ist mit dem GPG-Schlüssel (32E65EC501A1B6FDF8190D293EE6BA977EB2A253) von Rodrigo Arias Mallo signiert.
- Es ist derselbe Schlüssel wie in den aktuellen Dillo-Releases und ist ebenfalls im GitHub-Account hinterlegt.
- Die Signaturdatei (index.html.asc) ist über
<link rel=signature>eingebunden.
- OpenPGP-Signaturen ermöglichen Vertrauensaufbau auch bei DNS-Verlust.
- Anstelle einer TLS-Zertifikatskette erfolgt der Eigentumsnachweis über Signaturvertrauen.
- Die Signatur ist in allen Git-Mirrors enthalten, was die Ausfallsicherheit gegenüber Datenverlust verbessert.
Migrationsfortschritt und Ausblick
- Das GitHub-Repository wird nicht sofort gelöscht und wird bis zum Abschluss der Migration weiter gepflegt.
- Danach soll das Repository in den Zustand „archived“ versetzt werden; dies wird auf der offiziellen Website angekündigt.
- Bestehende Commits und Release-Dateien werden zur Rückwärtskompatibilität behalten.
- Die neue Infrastruktur lässt sich mit geringen Kosten und niedrigem Energieverbrauch eigenständig betreiben.
- Auf Basis der aktuellen Spenden und Serverkosten ist ein Betrieb von mindestens 3 Jahren möglich.
- Wer unterstützen möchte, kann dies über Liberapay tun: https://liberapay.com/dillo/
1 Kommentare
Hacker-News-Kommentar
Ich nutze seit einigen Jahren GitLab als Self-Hosting-Alternative. Ich mag es, aber es verbraucht viele Ressourcen
In letzter Zeit teste ich Forgejo, entwickelt vom Codeberg-Team, und es ist wirklich großartig
Der größte Unterschied ist der Speicherverbrauch. GitLab basiert auf Ruby on Rails, daher laufen mehrere Dienste gleichzeitig, während Forgejo als einzelnes in Go geschriebenes Binary aufgebaut ist
GitLab belegt nach und nach den gesamten Speicher einer 16-GB-VM, aber Forgejo nutzt selbst mit Server und Runner zusammen nur etwa 300 MB
Es gibt zwar kein GraphQL, aber die REST-API scheint völlig ausreichend zu sein
Ich kenne den Unterschied zwischen gitea und forgejo nicht genau, aber laut Forgejos Vergleichsdokumentation scheint es 2022 wegen Governance-Problemen als Soft Fork entstanden zu sein
Dank der einfachen, Go-basierten Struktur sind Wartungsaufwand und Kosten sehr gering. Wir haben auch interne Tools direkt auf Forgejo aufgebaut
Da wir On-Premises hosten, kommen Entwicklung und CI auch bei Internetausfällen nicht zum Stillstand. Es unterstützt außerdem Package-Manager-Caches, was die Abhängigkeitsverwaltung erleichtert
Es hatte 10-mal weniger Downtime als GitHub, und das meiste davon war geplante Wartung
Wenn ich Beiträge sehe, die behaupten, GitHub habe die bessere Verfügbarkeit, muss ich lachen
Ein neues Repository ist mit
git init --bareerstellt, und auch die Backups laufen automatischWenn man allein entwickelt, braucht man meiner Meinung nach nicht unbedingt eine UI
Ich finde CI im GitLab-Stil deutlich besser als GitHub Actions; GitHub ist dank seiner Popularität zum Standard geworden, aber das Design lässt zu wünschen übrig
Schon mit einem gemeinsam genutzten Dateisystem sind Skalierung und Backups einfach
Ich leite vor Ort einen Mathe-Club, und die Kinder nutzen Forgejo, um LaTeX- und Python-Aufgaben einzureichen
Da Login-Verwaltung und Passwort-Reset einfach sind, ist es auch für Bildungszwecke sehr nützlich
Ich kann die Meinung nachvollziehen, dass man das Push-Benachrichtigungsmodell von GitHub nicht mag und Updates nur dann sehen möchte, wenn man selbst nachschaut
Mit E-Mail-Filtern kann man Push-Benachrichtigungen in ein Pull-Modell verwandeln. Man sammelt die Benachrichtigungen in einem eigenen Ordner und schaut nur dann hinein, wenn es nötig ist
Interessant fand ich die Geschichte von jemandem, der selbst den einfachen Bug-Tracker „buggy“ gebaut hat. Es soll ein C-Tool sein, das Markdown parst und HTML-Seiten erzeugt
Der Hacker-Geist lebt
Es gab die Frage nach dem Unterschied zwischen „Push-Modell“ und „Pull-Modell“
Ich denke, wir befinden uns gerade in einer diasporaartigen Phase, in der viele GitHub-Alternativen gleichzeitig entstehen
Vielleicht wird sich innerhalb weniger Monate ein Mainstream-Anbieter herauskristallisieren. Wenn ein bekanntes Unternehmen oder eine prominente Person eine neue Plattform startet, könnte sie den Markt anführen
Nur sehr wenige Projekte verlassen GitHub, daher finde ich es noch zu früh
Eher erleben wir eine erneute Dezentralisierung. Es ist eine Zeit, in der jeder die Forge wählen kann, die zu Kontrolle, Zuständigkeit und Workflow passt
Ich würde das Dillo-Projekt gern zu Tangled einladen → tangled.org
Das größte Problem von GitHub ist meiner Meinung nach die immer langsamere Bedienbarkeit
Für die Code-Navigation nutze ich github.dev, aber PRs und Actions bleiben weiterhin langsam und frustrierend
Falls jemand Forgejo auf einer VM installieren möchte: Ich habe ein Skript erstellt, mit dem man Server und Runner auf einmal einrichten kann → easyforgejo
Ich bin auf diesem Gebiet kein Experte, habe das aber mit Interesse gelesen
Es überrascht mich, wie viele Faktoren bei der Einrichtung eines einzigen Versionsverwaltungssystems eine Rolle spielen
Ich nutze Fossil, und in kleinen Organisationen, in denen man allein Entwickler, Systemadministrator und Support in Personalunion ist, ist das viel einfacher
Auch GitHubs Einschränkungen bei Deploy Keys sind unpraktisch. Wenn man mehrere Apps und Server betreibt, muss man die Schlüssel jeweils getrennt einrichten, was lästig ist