De GitHub vers Codeberg : mon expérience
(eldred.fr)- 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
sedetfind
- Remplacement en masse basé sur le texte via les commandes
- Modification de l'URL
git remotede 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
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
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é
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
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é
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
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
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
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
Je trouvais l’époque où la plateforme reposait sur Rails meilleure
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
GitLab est riche en fonctionnalités, mais sa maintenance est lourde
Il existe aussi diverses forges FOSS comme Gitea, Gogs ou Phorge
J’aime son interface immédiate, rapide comme en local, sans chercher à copier l’UI de GitHub
Il n’y a pas besoin de migrer uniquement parce qu’« on n’aime pas Microsoft »
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 :
Exemple : https://codeberg.org/dnkl/foot
Il vaudrait mieux mettre le README sur la page principale
La version payante permet aussi de personnaliser les images
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
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
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
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
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
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