3 Punkte von GN⁺ 2025-12-02 | 1 Kommentare | Auf WhatsApp teilen
  • 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 sed und find automatisch auf Textbasis durchgeführt
  • 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 archive archiviert

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

 
GN⁺ 2025-12-02
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

    • Projekte wie Tangled.org versuchen, dieses Problem teilweise zu lösen
      Es basiert auf Protokollen wie Bluesky und ist so konzipiert, dass Identität und Vernetzung erhalten bleiben, egal wo Git gehostet wird
    • Die größte Unannehmlichkeit, die ich bei Codeberg erlebt habe, ist die schwache Issue-Suche
      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
    • GitHub hat eine riesige Menge an Dokumentation und Beispielen, sodass auch neu dazukommende Leute sich leicht zurechtfinden
      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

    • Tatsächlich ist Codeberg eine auf Forgejo basierende Website
      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
    • Als Scherz wird auch gesagt, dass sich die Codeberg-Community irgendwann wegen kleiner ideologischer Unterschiede spalten könnte
  • 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

    • Nicht bei F-Droid selbst, aber es gibt immer mehr Projekte, die Codeberg-Unterstützung hinzufügen
      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

    • Mögliche Ursachen sind Verfügbarkeitsprobleme bei GitHub, Microsofts erzwungene AI-Integration und dass Verbesserungen an Funktionen zurückstehen mussten, weil man sich auf die Migration zu Azure konzentriert hat
    • Zigs Ankündigung zur Migration ist eine gute Referenz
    • Es wirkt, als würde GitHub ein Trust-Thermocline-Phänomen durchmachen
      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
    • Persönlich bin ich die AI-Übergriffigkeit von GitHub leid
      Als es noch auf Rails basierte, war es meiner Meinung nach besser
    • Das wirkt ein wenig wie das Phänomen Summer of the Shark
      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

    • Man kann Forgejo, auf dem Codeberg basiert, selbst hosten
      GitLab hat viele Funktionen, ist aber in der Wartung schwergewichtig
      Daneben gibt es verschiedene weitere FOSS-Forges wie Gitea, Gogs oder Phorge
    • Der Kern von GitHub ist keine Technik, sondern ein soziales Netzwerk
    • Ich bevorzuge sourcehut
      Mir gefällt, dass es das GitHub-UI nicht kopiert und stattdessen ein direktes Interface bietet, das sich so schnell wie lokal anfühlt
    • Wenn es keinen besonderen Grund gibt, ist es vernünftig, weiter GitHub zu nutzen
      Nur weil man „Microsoft nicht mag“, muss man nicht umziehen
    • Für den privaten Gebrauch hatte ich nach günstigem privatem Hosting wie Migadu gesucht, aber nichts wirklich Passendes gefunden
      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

    • erschien häufig ein animierter Prüfbildschirm mit „Überprüfe, ob du kein Bot bist“
    • war der GitHub-Login-Button klein versteckt
    • das UI ist fast identisch mit GitHub, und die README steht weiter unten, was unpraktisch ist
      Beispiel: https://codeberg.org/dnkl/foot
      Es wäre besser, die README auf der Hauptseite zu platzieren
    • letztlich ist eine kopierende Strategie ohne Differenzierung nicht besonders attraktiv
    • Für die „Bot-Prüfung“ wird die Open-Source-Lösung Anubis verwendet
      In der Bezahlversion kann man sogar die Bilder anpassen
    • GitHub direkt nachzuahmen ist eine Entscheidung zugunsten der Vertrautheit für Nutzer
      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
    • Solche Probleme könnten im Gegenteil auch Signale für tieferliegende Probleme des Dienstes sein
    • Ich selbst bin wegen der Kontroverse um AI-Training bei GitHub und wegen der Zentralisierung zu Codeberg gewechselt
      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

    • In letzter Zeit gab es zwar eine Verschlechterung der Verfügbarkeit bei GitHub, aber wie störend das ist, hängt vom Einzelnen ab
  • 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

    • Laut der Codeberg-Dokumentation (docs.codeberg.org/ci) ist die Kapazität begrenzt, und man muss sie anfragen und genehmigt bekommen
    • Ich persönlich nutze eine Woodpecker-Instanz zusammen mit Codeberg, und das funktioniert gut
    • Codeberg betont die Energiekosten von CI/CD
      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
    • Genau diese CI-Infrastruktur ist meiner Meinung nach der Burggraben von GitHub
  • 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

    • Diese Haltung wirkt wie übertriebene Selbstbeweihräucherung
    • Wenn es sich aber um Spam mit rassistischen Begriffen handelte, halte ich Codebergs Reaktion für gerechtfertigt
      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