- Describe en detalle el proceso y el resultado de migrar mis proyectos personales y mi sitio web de GitHub a Codeberg
- Utilicé la función "migrate from GitHub" de Forgejo para migrar por completo repositorios, issues, PR, wikis y releases
- Realicé la reasignación de enlaces y el manejo de stubs de repositorios de GitHub con scripts automatizados para dejar claro que la migración ya se había hecho
- En la migración de CI/CD usé Forgejo Actions de Codeberg y armé workflows livianos ajustados a las restricciones del entorno
- El sitio web se migró sin tiempo de inactividad con git-pages y Grebedoc, y la migración completa se terminó en un fin de semana
Resumen de la migración
- Migré a Codeberg el sitio que estaba alojado en GitHub Pages y 45 repositorios
- No se resolvió con un simple clic; fueron necesarias varias etapas de trabajo manual
- El proceso completo se completó durante un fin de semana y se hizo sin inconvenientes
- Con este proceso quise mostrar que otros desarrolladores también pueden migrar fácilmente
1er paso: Migración de repositorios
- Codeberg, basado en Forgejo, ofrece la función “migrate from GitHub”
- Desde GitHub puedes generar un Personal Access Token (PAT) para traer también metadatos como issues
- Debido al rate limit de la API de GitHub, al importar varios repositorios a la vez podía fallar
- Issues, PR, wiki y releases se migraron por completo, dejando sin necesidad las referencias a GitHub
2do paso: Reasignación de enlaces
- Convertí en bloque los enlaces de GitHub dentro de los repositorios locales a direcciones de Codeberg
- Utilicé los comandos
sed y find para reemplazar texto de manera automática
- También cambié la URL
git remote de cada repositorio a Codeberg y hice push a todos los repositorios
3er paso: Manejo de stubs de repositorios de GitHub
- Agregué un README de anuncio de migración en los repositorios de GitHub y actualicé la descripción y el enlace de la página principal a Codeberg
- Escribí scripts de automatización para aplicarlo en lote a varios repositorios
- Archivé los repositorios con el comando
gh repo archive
4to paso: Migración de CI/CD
- En la documentación de CI de Codeberg se enfatiza el principio de minimizar el consumo de energía
- Por eso mantuve CI solo en los proyectos estrictamente necesarios (sitio web, compilación de documentación, etc.)
- Codeberg ofrece dos CI: Woodpecker y Forgejo Actions
- Elegí Forgejo Actions, similar a GitHub Actions
- Diferencias principales
- La mayoría de las Actions funcionan tal cual
- Solo se proporcionan runners de Linux; no hay macOS ni Windows
- Hay menos software preinstalado y recursos limitados
- Con lazy runners es posible distribuir la carga y ejecutar de forma más ecológica
- Para mejorar el rendimiento de CI usé una imagen de Docker con LaTeX preinstalado, pero volví a la imagen base de Ubuntu por un problema de versión
5to paso: Rehospedaje del sitio web
- Intenté mover el sitio que estaba en GitHub Pages a Codeberg Pages, pero esa función estaba en modo de mantenimiento
- Las actualizaciones siguen retrasadas por problemas de complejidad y rendimiento
- Como alternativa encontré y usé git-pages y Grebedoc
- Permitió una migración sin interrupciones porque acepta subidas antes del cambio de DNS
- Soporta redirección del lado del servidor y encabezados personalizados
- Completé la migración conservando el enlace existente (
eldred.fr/fortISSimO)
- Codeberg tiene previsto hacer una migración gradual a git-pages en el futuro
- Con mejor satisfacción que GitHub Pages, me uní como patrocinador de Patreon del desarrollador de git-pages
Tiempo invertido
- Migración de repositorios (1–3): medio día
- Migración de CI (4): medio día
- Migración de sitio web (5): varios días incluidas tareas de limpieza de deuda técnica
- En general, se completó dentro de un fin de semana, un trabajo más simple de lo esperado
Después de la migración
- No hubo cambios funcionales en el sitio web; solo se redujo la rama master de GitHub
- Los enlaces permanentes (permalink) siguen funcionando
- La eliminación de repositorios de GitHub está en espera por la falta de redirecciones
- Mantengo la cuenta de GitHub para seguir contribuyendo a otros proyectos
- Al pasar a Codeberg puede haber una posible reducción de contribuyentes, pero algunos usuarios ya crearon cuenta en Codeberg y siguen contribuyendo
Agradecimientos
- Catherine ‘whitequark’: operación de git-pages y Grebedoc
- Equipo de SERVFAIL network: suministro de DNS
- Colaboradores de Codeberg y Forgejo: proveer la base de la migración
1 comentarios
Opinión en Hacker News
Lo que destaca en esta historia de migración no es la parte técnica, sino que la ‘paridad de funciones (feature parity)’ no es realmente el obstáculo
Codeberg es suficiente para los flujos de trabajo cotidianos, pero le faltan los efectos de red y la inercia que GitHub ha acumulado
Basado en protocolos como Bluesky, está diseñado para que la identidad y la conectividad se mantengan sin importar dónde esté alojado Git
Es difícil volver a encontrar un issue que claramente vi antes. El rendimiento ha mejorado últimamente, pero si es un proyecto con cientos de issues, conviene hacer primero una migración de prueba
En cosas como CI/CD no hace falta que todo el equipo sepa; con que una persona lo domine, alcanza
Codeberg es un fork de Gitea, y Gitea es un fork de Gogs
Ambos forks comenzaron más por razones filosóficas que técnicas, y Joe Chen, creador de Gogs, tuvo un gran mérito
Gitea fue forkeado porque un desarrollador acaparó los permisos del repositorio, y Forgejo es un fork creado para recuperar la marca de Gitea
Me pregunto si alguien ha usado Codeberg junto con F-Droid
Quisiera saber si puede detectar releases automáticamente como GitHub
Parece que ya se llegó a un efecto umbral (threshold effect)
En los últimos días he visto varios proyectos irse de GitHub
Me pregunto si hay algún incidente o tendencia detrás
Las quejas de la comunidad open source se han ido acumulando hasta llegar a un límite
También parecen influir la controversia por IA y publicidad en Microsoft en general, y el fin del soporte de Windows 10
El concepto relacionado se planteó por primera vez en este hilo de Twitter
Siento que estaba mejor cuando aún era basado en Rails
Puede que sea un fenómeno temporal que está recibiendo más atención de la que realmente merece
Me pregunto si hay alguna alternativa a GitHub adecuada para equipos pequeños o desarrolladores individuales
Codeberg parece centrado en FOSS, así que no da la impresión de encajar para uso comercial
GitLab tiene muchas funciones, pero es pesado de mantener
Además de eso, hay varias forjas FOSS como Gitea, Gogs, Phorge, etc.
No intenta copiar la UI de GitHub, y me gusta su interfaz inmediata y rápida, casi como trabajar en local
No hace falta mudarse solo porque “no te gusta Microsoft”
Al final subí proyectos nuevos a Codeberg, y mantengo algunos como mirror privado en GCP
Sobre eso publiqué este hilo de Ask HN, pero no hubo respuesta
Si lees la entrada del blog de eldred.fr, las razones del autor son razonables, pero desde la perspectiva del usuario casi no hay mejora perceptible
Al probar Codeberg
Ejemplo: https://codeberg.org/dnkl/foot
Sería mejor que el README estuviera como página principal
En la versión de pago incluso se puede personalizar la imagen
Si lo haces demasiado distinto, la reacción en contra puede ser mayor
Ocultar el botón de login de GitHub fue una decisión centrada en la comunidad, y si quieres puedes proponerlo con un PR
El objetivo era encontrar una alternativa ética con las mismas funciones que GitHub
Si el escaneo con IA de GitHub no te parece un problema, me pregunto si hay motivos no políticos para cambiarse
Me pregunto si Codeberg ofrece runners de CI gratuitos
Se estima que GitHub gasta más de 100 millones de dólares al año en CI
Pero mencionar el costo ambiental podría más bien desanimar la participación de los usuarios
Para la gente técnica, es más efectivo plantearlo como un problema de optimización de rendimiento
Me decepcionó ver que Codeberg exageró un antiguo incidente de spam presentándolo como una “campaña de odio de extrema derecha” y además se felicitó a sí mismo por ello
Bastaba con admitir que fallaron en prevenirlo, pero lo envolvieron en un marco político
Enlaces relacionados: issue, discusión en HN, entrada del blog
Si por eso se perdió el respeto, el problema no está en el proyecto sino en esa forma de verlo
Yo también alguna vez moví repositorios a Codeberg y luego regresé a GitHub
No me gustan varias funciones de GitHub, pero a Codeberg le falta esa capacidad de atraer colaboración
Como mantenedor solitario, la visibilidad y los efectos de red son fundamentales