3 points par GN⁺ 2025-12-02 | 1 commentaires | Partager sur WhatsApp
  • Détaille en détail le processus et les résultats de la migration de mes projets personnels et de mon site web de GitHub vers Codeberg
  • Migration complète des dépôts, issues, PR, wiki et releases grâce à la fonction « migrate from GitHub » de Forgejo
  • Le réétiquetage des liens et le traitement des stubs de dépôts GitHub sont effectués par des scripts automatisés pour signaler clairement la migration
  • Pour la migration CI/CD, utilisation de Forgejo Actions sur Codeberg et création de workflows allégés adaptés aux contraintes d’environnement
  • Migration sans interruption du site web via git-pages et Grebedoc, avec achèvement de l’ensemble de la migration durant le week-end

Aperçu de la migration

  • Migration vers Codeberg du site hébergé sur GitHub Pages et de 45 dépôts
    • Ce n'était pas une simple opération en un clic : plusieurs étapes manuelles ont été nécessaires
    • Le processus complet a été réalisé sur un week-end, sans gêne
  • Objectif : montrer qu'il est possible pour d'autres développeurs de migrer facilement

Étape 1 : Migration des dépôts

  • Codeberg, basé sur Forgejo, propose la fonction "migrate from GitHub"
    • En créant un Personal Access Token (PAT) sur GitHub, il est possible d'importer également les métadonnées comme les issues
    • À cause du rate limit de l'API GitHub, il pouvait y avoir des échecs si plusieurs dépôts étaient importés simultanément
  • Issues, PR, wiki et releases ont été migrés sans perte, sans nécessiter de références GitHub

Étape 2 : Réaffectation des liens

  • Conversion massive des liens GitHub dans les dépôts locaux vers des adresses Codeberg
    • Remplacement en masse basé sur le texte via les commandes sed et find
  • Modification de l'URL git remote de chaque dépôt vers Codeberg, puis push sur tous les dépôts

Étape 3 : Traitement des stubs de dépôts GitHub

  • Ajout d'un README d'annonce de migration dans les dépôts GitHub, puis mise à jour des descriptions et des liens de page d'accueil vers Codeberg
    • Un script d'automatisation a été écrit pour l'appliquer à plusieurs dépôts en lot
    • Archivage des dépôts via la commande gh repo archive

Étape 4 : Migration CI/CD

  • La documentation CI de Codeberg insiste sur le principe de réduire au minimum la consommation d'énergie
    • Selon ce principe, seuls les projets nécessitant réellement de la CI (site web, génération de documentation, etc.) ont été conservés
  • Codeberg propose Woodpecker et Forgejo Actions comme options CI
    • Forgejo Actions a été choisi, car il est proche de GitHub Actions
  • Principales différences
    • La plupart des Actions fonctionnent telles quelles
    • Seuls des runners Linux sont proposés, macOS et Windows ne le sont pas
    • Les logiciels préinstallés sont peu nombreux et les ressources limitées
    • L'utilisation de lazy runners permet la répartition de charge et une exécution plus écologique
  • Pour améliorer les performances CI, une image Docker avec LaTeX préinstallé a été utilisée, puis un retour à l'image Ubuntu par défaut a eu lieu à cause d'un problème de version

Étape 5 : Réhébergement du site web

  • Le site opéré via GitHub Pages devait être déplacé vers Codeberg Pages, mais cette fonction est en mode maintenance
    • Les mises à jour sont retardées à cause de la complexité et de problèmes de performance
  • En alternative, git-pages et Grebedoc ont été découverts puis utilisés
    • Prise en charge du chargement avant changement DNS, ce qui permet une migration sans interruption
    • Prise en charge des redirections côté serveur et des en-têtes personnalisés
    • Migration achevée en conservant le lien existant (eldred.fr/fortISSimO)
  • Codeberg prévoit une migration progressive vers git-pages à l'avenir
  • La satisfaction dépasse celle de GitHub Pages, avec participation au support Patreon du développeur de git-pages

Temps de travail

  • Migration des dépôts (étapes 1 à 3) : une demi-journée
  • Migration CI (étape 4) : une demi-journée
  • Migration du site web (étape 5) : quelques jours avec nettoyage de dette technique
  • Globalement, terminé dans le week-end, une tâche plus simple que prévu

Après la migration

  • Le site web fonctionne correctement, seule la branche master GitHub est réduite
    • Les permaliens restent opérationnels
  • La suppression des dépôts GitHub est en attente en raison de l'absence de redirection
  • Le compte GitHub est conservé pour contribuer à d'autres projets
  • La migration vers Codeberg pourrait réduire le nombre de contributeurs, mais certains utilisateurs ont déjà créé un compte Codeberg et continuent à contribuer

Remerciements

  • Catherine ‘whitequark’ : exploitation de git-pages et de Grebedoc
  • SERVFAIL network team : fourniture du DNS
  • Contributeurs de Codeberg et de Forgejo : fourniture des bases de migration

1 commentaires

 
GN⁺ 2025-12-02
Avis Hacker News
  • Ce qui ressort dans ce récit de migration, ce n’est pas l’aspect technique, mais le fait que la « parité fonctionnelle » (feature parity) n’est pas le véritable obstacle
    Codeberg suffit largement pour les workflows du quotidien, mais il lui manque les effets de réseau et l’inertie accumulés par GitHub

    • Des projets comme Tangled.org essaient en partie de résoudre ce problème
      Basés sur un protocole comme Bluesky, ils sont conçus pour préserver l’identité et la connectivité quel que soit l’endroit où Git est hébergé
    • Le plus gros inconvénient que j’ai rencontré sur Codeberg, c’est la faiblesse de la recherche d’issues
      Il est difficile de retrouver une issue qu’on est pourtant certain d’avoir déjà vue. Les performances se sont améliorées récemment, mais pour un projet qui compte des centaines d’issues, mieux vaut faire d’abord une migration de test
    • GitHub dispose d’une énorme quantité de documentation et d’exemples, ce qui permet aux nouveaux arrivants de s’adapter facilement
      Pour des choses comme la CI/CD, toute l’équipe n’a pas besoin de tout maîtriser, il suffit souvent qu’une seule personne s’y connaisse très bien
  • Codeberg est un fork de Gitea, et Gitea est un fork de Gogs
    Ces deux forks ont été lancés davantage pour des raisons philosophiques que techniques, et Joe Chen, créateur de Gogs, y a grandement contribué

    • En pratique, Codeberg est un site basé sur Forgejo
      Gitea a été forké parce qu’un développeur monopolisait les droits sur le dépôt, et Forgejo est un fork créé pour récupérer la marque de Gitea
    • C’est une blague, mais certains disent qu’un jour la communauté Codeberg pourrait elle aussi se fracturer pour de petites divergences idéologiques
  • Je me demande si quelqu’un a déjà utilisé Codeberg avec F-Droid
    J’aimerais savoir si les releases peuvent être détectées automatiquement comme sur GitHub

    • Pas F-Droid lui-même, mais de plus en plus de projets ajoutent la prise en charge de Codeberg
      On dirait que cela a désormais atteint un effet de seuil
  • Ces derniers jours, j’ai vu plusieurs projets quitter GitHub
    Je me demande s’il y a eu un événement particulier ou s’il s’agit d’une tendance

    • Cela peut être lié aux problèmes de disponibilité de GitHub, à l’intégration forcée de l’IA par Microsoft, ou au fait que l’amélioration du produit a pris du retard au profit de la migration vers Azure
    • L’annonce de migration de Zig est une bonne référence
    • On dirait que GitHub traverse une forme de rupture de confiance (trust thermocline)
      Le mécontentement de la communauté open source semble s’être accumulé jusqu’à atteindre un point de bascule
      Les polémiques autour de l’IA et de la publicité chez Microsoft, ainsi que la fin du support de Windows 10, semblent aussi jouer un rôle
      Le concept a été formulé pour la première fois dans ce thread Twitter
    • Personnellement, j’en ai assez de l’abus de l’IA sur GitHub
      Je trouvais l’époque où la plateforme reposait sur Rails meilleure
    • Cela ressemble un peu à un phénomène de Summer of the Shark
      Ce n’est peut-être qu’un emballement temporaire, avec une attention disproportionnée par rapport à la réalité
  • Je me demande s’il existe, parmi les alternatives à GitHub, des options adaptées aux petites équipes ou aux développeurs individuels
    Codeberg semble très centré FOSS, donc pas forcément adapté à un usage commercial

    • Il est possible d’auto-héberger Forgejo, qui sert de base à Codeberg
      GitLab est riche en fonctionnalités, mais sa maintenance est lourde
      Il existe aussi diverses forges FOSS comme Gitea, Gogs ou Phorge
    • Le cœur de GitHub, ce n’est pas la technique, c’est le réseau social
    • Moi, je préfère sourcehut
      J’aime son interface immédiate, rapide comme en local, sans chercher à copier l’UI de GitHub
    • Sauf raison particulière, continuer à utiliser GitHub reste un choix rationnel
      Il n’y a pas besoin de migrer uniquement parce qu’« on n’aime pas Microsoft »
    • Pour un usage personnel, je cherchais un hébergement privé à bas coût comme Migadu, mais je n’ai rien trouvé de convaincant
      J’ai finalement mis mes nouveaux projets sur Codeberg, tout en gardant certains comme miroirs privés sur GCP
      J’ai aussi publié un fil Ask HN à ce sujet, mais il n’a suscité aucune réaction
  • Si l’on lit le billet de blog d’eldred.fr, les raisons de l’auteur sont rationnelles, mais du point de vue utilisateur, l’amélioration perçue est presque nulle
    En essayant Codeberg :

    • l’écran animé de vérification « confirmation que vous n’êtes pas un bot » apparaît souvent
    • le bouton de connexion GitHub est discrètement caché
    • l’UI est presque identique à celle de GitHub, et le README est placé plus bas, ce qui est peu pratique
      Exemple : https://codeberg.org/dnkl/foot
      Il vaudrait mieux mettre le README sur la page principale
    • au final, une stratégie de copie sans différenciation n’a rien de très attractif
    • la « vérification anti-bot » utilise une solution open source appelée Anubis
      La version payante permet aussi de personnaliser les images
    • suivre GitHub d’aussi près est un choix destiné à préserver les habitudes des utilisateurs
      Si l’on change trop de choses, la réaction négative est souvent plus forte
      Le fait d’avoir caché le bouton de connexion GitHub relève d’une décision communautaire, et si on le souhaite, on peut aussi le proposer via une PR
    • ces problèmes peuvent au contraire être le signe de difficultés plus profondes du service
    • j’ai quitté GitHub pour Codeberg parce que j’étais fatigué des controverses sur l’entraînement de l’IA et de la centralisation
      Mon objectif était de trouver une alternative éthique offrant les mêmes fonctionnalités que GitHub
  • Si le scan par l’IA sur GitHub ne pose pas problème, je me demande s’il existe une raison non politique de partir

    • Il y a récemment eu une baisse de disponibilité de GitHub, mais le niveau de gêne reste une appréciation personnelle
  • Je me demande si Codeberg propose des runners CI gratuits
    On estime que GitHub dépense plus de 100 millions de dollars par an pour la CI

    • D’après la documentation de Codeberg (docs.codeberg.org/ci), la capacité est limitée et il faut obtenir une approbation après demande
    • Personnellement, j’utilise une instance Woodpecker avec Codeberg et cela fonctionne bien
    • Codeberg met en avant le coût énergétique de la CI/CD
      Mais évoquer le coût environnemental peut au contraire décourager la participation des utilisateurs
      Pour des techniciens, il serait plus efficace de présenter cela comme un problème d’optimisation des performances
    • Je pense que ce type d’infrastructure CI constitue justement le fossé défensif (moat) de GitHub
  • J’ai été déçu de voir que Codeberg avait autrefois présenté une affaire de spam en la dramatisant comme une « campagne de haine d’extrême droite », tout en se félicitant lui-même
    Il aurait suffi de reconnaître un simple échec de prévention, mais cela a été emballé dans un cadrage politique
    Liens associés : issue, discussion HN, billet de blog

    • Cette attitude donne une impression d’autoglorification excessive
    • Mais si c’était du spam contenant des termes racistes, alors la réponse de Codeberg me paraît justifiée
      Si cela suffit à faire perdre le respect qu’on lui portait, le problème n’est pas le projet mais ce regard-là
  • Moi aussi, j’ai un temps déplacé mes dépôts vers Codeberg avant de revenir sur GitHub
    Je n’apprécie pas plusieurs fonctionnalités de GitHub, mais Codeberg manque de cette force d’attraction pour la collaboration
    Quand on maintient seul un projet, la visibilité et les effets de réseau sont cruciaux