- Beim Umzug einiger Projekte von GitHub zu Codeberg wird zusammengefasst, wie man mit minimalem Aufwand eine Migration beginnen kann
- Über die Repository-Importfunktion von Codeberg ist eine vollständige Migration inklusive Issues, PRs und Releases möglich, und UI und Workflow ähneln GitHub
- Statisches Page-Hosting kann durch
codeberg.page ersetzt werden, außerdem gibt es Alternativen wie grebedoc.dev oder statichost.eu
- Die größte Schwierigkeit ist der Aufbau der CI-Umgebung: Auf die macOS-Runner von GitHub und das kostenlose Ausführungsvolumen muss verzichtet werden, Ersatz ist mit Forgejo Actions oder Woodpecker CI möglich
- Nach der Migration kann das GitHub-Repository als schreibgeschütztes Archiv erhalten oder gespiegelt werden, sodass die Verbindung zum Open-Source-Ökosystem nicht vollständig abbricht
Der Migrationsprozess von GitHub zu Codeberg
- Auf Basis der Erfahrung, einige Repositories von GitHub zu Codeberg zu migrieren, werden der tatsächliche Schwierigkeitsgrad und die Benutzerfreundlichkeit des Migrationsprozesses erläutert
- Die Migration wurde lange aufgeschoben, weil Codeberg als noch nicht ausreichend vorbereitet erschien, doch je nach Projekt kann der Umzug überraschend einfach sein
- Das Ziel ist nicht eine perfekte Konfiguration, sondern den einfachsten Weg zu finden, eine Migration zu starten
-
Repository- und Issue-Migration
- Codeberg bietet eine Importfunktion für GitHub-Repositories, mit der sich Issues, PRs, Releases und deren Artefakte gemeinsam migrieren lassen
- Dabei bleiben Issue-Nummern, Labels und Autorinformationen erhalten
- Die UI von Codeberg ist fast identisch mit GitHub und bietet im Vergleich zu den komplexen Verfahren, die beim Wechsel anderer Issue-Tracker zu GitHub nötig sind, eine deutlich einfachere Erfahrung
-
Hosting statischer Seiten
- Wer bisher GitHub Pages verwendet hat, kann stattdessen
codeberg.page nutzen
- Es gibt zwar keine offizielle Verfügbarkeitsgarantie (SLO), in der Praxis wurde jedoch kein Ausfall erlebt
- Die Funktionsweise ist ähnlich wie bei GitHub Pages: HTML wird in einen Branch gepusht
- Als Alternativen können auch grebedoc.dev oder statichost.eu verwendet werden
-
Schwierigkeiten bei der CI-Umgebung
- Der kniffligste Teil der Migration ist der Aufbau der CI-Umgebung
- GitHub bietet kostenlose macOS-Runner und unbegrenztes Ausführungsvolumen für öffentliche Repositories, darauf muss man bei Codeberg verzichten
- Als Lösung lassen sich sprachspezifische Cross-Compilation und Self-Hosting von Forgejo-Actions-Runnern nutzen
-
Forgejo Actions vs. Woodpecker CI
- Bei Codeberg gilt Woodpecker CI als stabiler, aber Forgejo Actions bietet GitHub-Actions-Nutzern eine vertrautere Umgebung
- UI und YAML-Syntax sind nahezu identisch, und die meisten bestehenden GitHub-Actions-Workflows funktionieren unverändert
- Wenn in GitHub Actions etwa
uses: dtolnay/rust-toolchain verwendet wurde, genügt es in Forgejo Actions, dies zu uses: https://github.com/dtolnay/rust-toolchain zu ändern
- Die aktuelle Dokumentation zu Forgejo Actions auf Codeberg ist nicht auf dem neuesten Stand, dazu existiert ein entsprechender PR
-
Wenn ein macOS-Runner nötig ist
- Wenn ein macOS-Build zwingend erforderlich ist, kann man GitHub Actions weiter nutzen und Commits vom Codeberg-Repository nach GitHub spiegeln
- Forgejo Actions lässt sich so konfigurieren, dass es die GitHub-API pollt und den CI-Status nach Codeberg synchronisiert
- Andere CI-Dienste mit macOS-Builds wurden ebenfalls ausprobiert, ihre Integration mit Codeberg ist jedoch nicht so unkompliziert wie bei GitHub Actions
-
Umgang mit dem GitHub-Repository
- Nach der Migration wird das GitHub-Repository durch eine angepasste README archiviert
- Es ist auch möglich, Pushes von Codeberg nach GitHub einzurichten, dann können Nutzer jedoch weiterhin PRs erstellen und Kommentare zu Issues hinterlassen
- Manche deaktivieren im GitHub-Repository die Issue-Funktion, doch dann verschwinden alle Issues als 404 und PRs lassen sich nicht deaktivieren
- Als Beispiel nutzt das Repository
libvirt/libvirt eine GitHub Action, die alle PRs automatisch schließt
- Dieser Ansatz kann sich negativ auf Self-Hosting und das Open-Source-Ökosystem insgesamt auswirken
- Nutzer verlieren möglicherweise den Anreiz, Build-Optimierungen oder die Häufigkeit von Release-Datei-Downloads zu verbessern
- Während der Übergangsphase kann man auch einen schreibgeschützten Mirror beibehalten oder GitHub Pages und Actions parallel weiterverwenden
1 Kommentare
Hacker-News-Kommentare
Ich habe nichts gegen Codeberg an sich, aber es ist kein vollständiger Ersatz für GitHub
Für persönliche Code-Repositories oder experimentelle Skripte gibt es viele Einschränkungen, und private Repositories sind auf 100 MB begrenzt
Außerdem kann man dort keine Homepage wie mit GitHub Pages hosten. Für solche Zwecke ist es realistischer, Forgejo selbst zu hosten
Das ist auch im Codeberg-FAQ gut erklärt
Der Grund, warum ich OSS-Projekte auf GitHub veröffentliche, ist simpel — weil dort die Community ist
Wenn ich nur Code hochladen wollte, würde ich ihn direkt per SSH oder SFTP hosten
Ich veröffentliche nur auf meiner persönlichen Gitea-Instanz und kümmere mich nicht um Stars oder Vermarktung
Ich verwalte alle meine privaten Projekte mit selbstgehostetem Forgejo. Ich vermisse GitHub überhaupt nicht
Mit Tailscale kann ich den Zugriff einschränken und dadurch AI-Crawler blockieren
In Zukunft wird es wohl immer wichtiger, GitHub-Alternativen zu bewerten
Aber GitHub hat CI und Multi-Arch-Builds zum Standard gemacht, sodass es für communitygetriebene Alternativen schwer ist, zu konkurrieren
GitHub bietet vieles „kostenlos“ an, aber der Preis dafür ist wahrscheinlich, dass es für Datensammlung und Training verwendet wird
Codeberg unterstützt keine privaten Repositories, daher kann man auch nicht verhindern, dass Copilot öffentliche Repositories abgreift
Laut dem Codeberg-FAQ wird bei Bedarf an privaten Projekten selbstgehostetes Forgejo empfohlen
Unser Unternehmen ist vollständig von GitHub auf selbstgehostetes GitLab umgezogen
Es läuft hinter Tailscale, daher gibt es keinen SSO-Aufwand, und die CI-Runner laufen auf EKS und einem GPU-Cluster. Ich kann Leuten helfen, die über einen ähnlichen Umzug nachdenken
Einfach nur zu sagen „Lasst uns GitHub ersetzen“ hat wenig Bedeutung. Es braucht neue Gewohnheiten und ein neues Wertversprechen
So wie GitHub einst SourceForge ersetzt hat, muss die nächste Plattformgeneration Code-Schreiben und Zusammenarbeit in Echtzeit verbinden
Zum Beispiel könnte es eine Struktur werden, bei der wie in Google Docs für jeden Prompt ein Commit erzeugt wird
Codeberg ist idealistisch, aber in der Realität gibt es erhebliche Stabilitätsprobleme
Da es ohne Cloudflare betrieben wird, ist es anfällig für DDoS-Angriffe, und es kommt oft zu Ausfällen. Wenn man während der Entwicklung nicht auf das Remote-Repository zugreifen kann, ist das wirklich frustrierend
Seit der Übernahme durch Microsoft nutze ich GitHub fast gar nicht mehr. Der einfache, E-Mail-basierte Workflow von Sourcehut gefällt mir sogar besser
Auch bei CI denke ich, dass ein kommando-basierter Ansatz, der lokal ausführbar ist, völlig ausreicht
Code-Repositories sollten ihrem Wesen nach dezentral und föderiert sein
Dank des kryptografischen Signatursystems von Git (GPG/SSH) kann man das Vertrauen in das Repository und das Vertrauen in Commits voneinander trennen
Zentral braucht man dann nur einen Key-Server und die Namespace-Verwaltung, der Rest kann verteilt werden