Von GitHub zu Codeberg: Meine Erfahrungen
(eldred.fr)- Die detaillierte Beschreibung von Prozess und Ergebnis des Umzugs persönlicher Projekte und einer Website von GitHub zu Codeberg
- Vollständige Migration von Repositories, Issues, PRs, Wiki und Releases mit der „migrate from GitHub"-Funktion von Forgejo
- Link-Neuzuordnung und die Verarbeitung von GitHub-Repository-Stubs wurden per Automatisierungsskript durchgeführt, um den Umzug klar kenntlich zu machen
- Für die CI/CD-Migration wurde Forgejo Actions von Codeberg genutzt und auf die Umgebungsrestriktionen mit leichtgewichtigen Workflows reagiert
- Die Website wurde mit git-pages und Grebedoc ohne Ausfallzeit migriert; die komplette Migration wurde an einem Wochenende abgeschlossen
Migrationsübersicht
- Die auf GitHub Pages gehostete Website und 45 Repositories wurden nach Codeberg migriert
- Das war nicht mit einem einzigen Klick getan und erforderte mehrere manuelle Schritte
- Der gesamte Vorgang wurde über ein Wochenende hinweg abgeschlossen und verlief problemlos
- Ziel war es zu zeigen, dass auch andere Entwickler den Umzug leicht selbst durchführen können
Schritt 1: Repository-Migration
- Codeberg basiert auf Forgejo und stellt die Funktion „migrate from GitHub“ bereit
- Durch ein in GitHub erzeugtes Personal Access Token (PAT) lassen sich Issues und andere Metadaten mit übernehmen
- Wegen des Rate Limits der GitHub-API konnte der gleichzeitige Import mehrerer Repositories fehlschlagen
- Issues, PRs, Wiki und Releases wurden vollständig migriert, sodass GitHub-Referenzen nicht mehr nötig sind
Schritt 2: Link-Neuzuordnung
- GitHub-Links in lokalen Repositories wurden gesammelt auf Codeberg-Adressen ersetzt
- Die Ersetzung wurde mit den Kommandos
sedundfindautomatisch auf Textbasis durchgeführt
- Die Ersetzung wurde mit den Kommandos
- Danach wurde die
git remote-URL jedes Repositories auf Codeberg geändert und in alle Repositories gepusht
Schritt 3: GitHub-Repository-Stubs verarbeiten
- In den GitHub-Repositories wurden README-Dateien mit Umzugsankündigung ergänzt, Beschreibung und Homepage-Link auf Codeberg angepasst
- Ein Automatisierungsskript wurde erstellt und auf mehrere Repositories angewendet
- Die Repositories wurden mit dem Befehl
gh repo archivearchiviert
Schritt 4: CI/CD-Migration
- In der CI-Dokumentation von Codeberg wird das Prinzip der Minderung des Energieverbrauchs hervorgehoben
- Deshalb werden nur Projekte, bei denen CI wirklich nötig ist (Website, Dokumentations-Builds usw.), beibehalten
- Codeberg bietet zwei CI-Optionen: Woodpecker und Forgejo Actions
- Es wurde Forgejo Actions gewählt, da es GitHub Actions ähnelt
- Wichtigste Unterschiede
- Die meisten Actions funktionieren direkt weiter
- Es gibt nur Linux-Runner; macOS und Windows werden nicht bereitgestellt
- Weniger vorinstallierte Software und eingeschränkte Ressourcen
- Mit lazy runners lassen sich Lastverteilung und umweltfreundlicher Betrieb realisieren
- Zur Verbesserung der CI-Leistung wurde ein vorinstalliertes LaTeX-Docker-Image eingesetzt, bei Versionsproblemen jedoch wieder das Standard-Ubuntu-Image verwendet
Schritt 5: Website-Rehosting
- Die auf GitHub Pages betriebene Website sollte auf Codeberg Pages umziehen, doch diese Funktion war im Wartungsmodus
- Das Update verzögert sich wegen Komplexitäts- und Performance-Problemen
- Stattdessen wurden git-pages und Grebedoc entdeckt und genutzt
- Durch Uploads vor DNS-Wechsel ist ein unterbrechungsfreier Übergang möglich
- Es werden serverseitige Redirects und eigene Header unterstützt
- Der Umzug wurde abgeschlossen, während der bestehende Link (
eldred.fr/fortISSimO) erhalten blieb
- Codeberg plant, künftig schrittweise auf git-pages zu migrieren
- Höhere Zufriedenheit als bei GitHub Pages, daher Beteiligung am Patreon des/der git-pages-EntwicklerIn
Zeitaufwand
- Repository-Migration (1–3): ein halber Tag
- CI-Migration (4): ein halber Tag
- Website-Migration (5): inkl. Bereinigung technischer Schulden dauerte mehrere Tage
- Insgesamt innerhalb eines Wochenendes abgeschlossen, einfacher als erwartet
Nach der Migration
- Die Website ist funktionsfähig, auf GitHub wurde nur der
master-Branch reduziert- Permanente Links (Permalinks) funktionieren weiterhin
- Die Löschung von GitHub-Repositories ist wegen fehlender Weiterleitungen ausgesetzt
- Das GitHub-Konto bleibt für Beiträge an andere Projekte bestehen
- Mit dem Umzug zu Codeberg könnte es weniger Beitragende geben, jedoch haben einige Nutzer bereits Codeberg-Konten angelegt und tragen weiterhin bei
Danksagung
- Catherine ‘whitequark’: Betrieb von git-pages und Grebedoc
- SERVFAIL network-Team: DNS-Bereitstellung
- Codeberg- und Forgejo-Mitwirkende: Bereitstellung der Migrationsgrundlage
1 Kommentare
Hacker-News-Kommentare
Auffällig an dieser Migrationsgeschichte ist nicht der technische Teil, sondern dass „Feature Parity“ gar nicht das eigentliche Hindernis ist
Codeberg reicht für alltägliche Workflows aus, aber es fehlen die Netzwerkeffekte und die Trägheit, die GitHub aufgebaut hat
Es basiert auf Protokollen wie Bluesky und ist so konzipiert, dass Identität und Vernetzung erhalten bleiben, egal wo Git gehostet wird
Es ist schwer, Issues wiederzufinden, die ich definitiv schon einmal gesehen habe. Die Performance ist in letzter Zeit okay geworden, aber bei Projekten mit Hunderten von Issues sollte man zuerst eine Testmigration versuchen
Dinge wie CI/CD müssen nicht vom ganzen Team verstanden werden; es reicht, wenn eine Person sich gut damit auskennt
Codeberg ist ein Fork von Gitea, und Gitea ist ein Fork von Gogs
Beide Forks entstanden eher aus philosophischen Gründen als aus technischen, und Joe Chen, der Gogs geschaffen hat, hat dabei Großes geleistet
Gitea wurde geforkt, weil ein einzelner Entwickler die Kontrolle über die Repository-Berechtigungen monopolisiert hatte, und Forgejo ist ein Fork, der geschaffen wurde, um die Markenrechte von Gitea zurückzuholen
Ich frage mich, ob jemand Codeberg zusammen mit F-Droid verwendet hat
Ich würde gern wissen, ob Releases wie bei GitHub automatisch erkannt werden können
Es scheint inzwischen den Schwelleneffekt erreicht zu haben
In den letzten Tagen habe ich gesehen, wie mehrere Projekte GitHub verlassen
Ich frage mich, ob es irgendein Ereignis oder einen Trend gibt
Der Unmut in der Open-Source-Community hat sich aufgestaut und scheint einen Kipppunkt erreicht zu haben
Auch die allgemeine AI- und Werbe-Kontroverse rund um Microsoft sowie das Supportende von Windows 10 scheinen Einfluss zu haben
Das zugehörige Konzept wurde erstmals in diesem Twitter-Thread vorgestellt
Als es noch auf Rails basierte, war es meiner Meinung nach besser
Also womöglich ein vorübergehendes Ereignis, das stärker beachtet wird, als es der Realität entspricht
Ich frage mich, ob es unter den GitHub-Alternativen etwas gibt, das für kleine Teams oder einzelne Entwickler geeignet ist
Codeberg wirkt auf FOSS fokussiert und daher für kommerzielle Nutzung nicht passend
GitLab hat viele Funktionen, ist aber in der Wartung schwergewichtig
Daneben gibt es verschiedene weitere FOSS-Forges wie Gitea, Gogs oder Phorge
Mir gefällt, dass es das GitHub-UI nicht kopiert und stattdessen ein direktes Interface bietet, das sich so schnell wie lokal anfühlt
Nur weil man „Microsoft nicht mag“, muss man nicht umziehen
Am Ende habe ich neue Projekte auf Codeberg hochgeladen und einige davon als private Mirrors auf GCP behalten
Dazu habe ich auch einen Ask-HN-Thread gepostet, aber es gab keine Reaktionen
Im Blogbeitrag von eldred.fr wirken die Gründe des Autors zwar nachvollziehbar, aber aus Nutzersicht gibt es kaum spürbare Verbesserungen
Als ich Codeberg ausprobiert habe
Beispiel: https://codeberg.org/dnkl/foot
Es wäre besser, die README auf der Hauptseite zu platzieren
In der Bezahlversion kann man sogar die Bilder anpassen
Wenn man es zu stark verändert, fällt die Ablehnung eher größer aus
Dass der GitHub-Login-Button versteckt wurde, ist eine communitygetriebene Entscheidung, und wenn man möchte, kann man dazu auch einen PR-Vorschlag machen
Das Ziel war, eine ethische Alternative zu finden, die trotzdem die gleichen Funktionen wie GitHub bietet
Wenn AI-Scans auf GitHub kein Problem darstellen, frage ich mich, ob es einen unpolitischen Grund für einen Wechsel gibt
Ich frage mich, ob Codeberg kostenlose CI-Runner anbietet
Es wird geschätzt, dass GitHub jährlich mehr als 100 Millionen Dollar für CI ausgibt
Aber Umweltauswirkungen zu betonen könnte Nutzer eher davon abhalten, sich zu beteiligen
Für Techniker wäre es wirksamer, das als Problem der Performance-Optimierung zu vermitteln
Ich war enttäuscht, als Codeberg einen früheren Spam-Vorfall übertrieben als „rechtsextreme Hasskampagne“ darstellte und sich dabei selbst auf die Schulter klopfte
Es hätte gereicht, einfach das Versagen bei der Prävention einzugestehen, stattdessen wurde es in einen politischen Rahmen verpackt
Relevante Links: Issue, HN-Diskussion, Blogbeitrag
Wenn man deshalb den Respekt verloren hat, liegt das Problem eher in dieser Sichtweise als beim Projekt
Auch ich hatte einmal Repositories zu Codeberg verschoben und bin dann wieder zu GitHub zurückgekehrt
Mir gefallen viele Funktionen von GitHub nicht, aber Codeberg fehlt die Anziehungskraft für Zusammenarbeit
Als alleiniger Maintainer sind Sichtbarkeit und Netzwerkeffekte für mich unverzichtbar