- Al mover algunos proyectos de GitHub a Codeberg, se resume cómo empezar la migración con el mínimo esfuerzo
- Mediante la función de importación de repositorios de Codeberg, es posible una migración completa que incluye issues, PR y releases, y la UI y el flujo de trabajo son similares a los de GitHub
- El hosting de páginas estáticas puede sustituirse con codeberg.page, y también existen alternativas como grebedoc.dev o statichost.eu
- La mayor dificultad es configurar el entorno de CI, ya que hay que renunciar a los runners de macOS y a la capacidad de ejecución gratuita de GitHub, pero se puede reemplazar con Forgejo Actions o Woodpecker CI
- Después de la migración, se propone mantener el repositorio de GitHub como archivo de solo lectura o hacer mirroring, para no cortar por completo la conexión con el ecosistema open source
Proceso de migración de GitHub a Codeberg
- A partir de la experiencia de haber empezado a migrar algunos repositorios de GitHub a Codeberg, se explica la dificultad real y la comodidad del proceso de migración
- Aunque se había pospuesto pensando que Codeberg aún no estaba suficientemente listo, según el proyecto la migración puede ser sorprendentemente sencilla
- El objetivo no es una configuración perfecta, sino encontrar la forma más fácil de empezar a migrar
-
Migración de repositorios e issues
- Codeberg ofrece una función de importación de repositorios de GitHub, que permite migrar junto con los issues, PR, releases y sus artefactos
- En este proceso, los números de issue, etiquetas e información del autor se conservan tal cual
- La UI de Codeberg es casi igual a la de GitHub, y ofrece una experiencia mucho más simple que los procedimientos complejos que suelen requerirse al migrar de otros issue trackers a GitHub
-
Hosting de páginas estáticas
- Si se usaba GitHub Pages, codeberg.page puede utilizarse como reemplazo
- Aunque no existe una garantía oficial de disponibilidad (SLO), se menciona que en la práctica no se ha experimentado downtime
- Funciona empujando HTML a una rama, con una estructura similar a GitHub Pages
- Como alternativas, también se pueden usar grebedoc.dev o statichost.eu
-
Dificultades del entorno de CI (integración continua)
- La parte más complicada durante la migración es configurar el entorno de CI
- GitHub ofrece runners gratuitos de macOS y capacidad de ejecución ilimitada para repositorios públicos, pero en Codeberg hay que renunciar a eso
- Como solución, se puede recurrir a la cross-compilación por lenguaje y al self-hosting de runners de Forgejo Actions
-
Forgejo Actions vs Woodpecker CI
- En Codeberg, Woodpecker CI es más estable, pero Forgejo Actions ofrece un entorno más familiar para quienes usan GitHub Actions
- La UI y la sintaxis YAML son casi idénticas, y la mayoría de los workflows existentes de GitHub Actions funcionan sin cambios
- Como ejemplo, lo que en GitHub Actions se usaba como
uses: dtolnay/rust-toolchain
en Forgejo Actions puede cambiarse por uses: https://github.com/dtolnay/rust-toolchain
- Actualmente, la documentación de Forgejo Actions en Codeberg no está actualizada, y existe un PR relacionado
-
Cuando se necesita un runner de macOS
- Si de verdad hace falta un build en macOS, se puede seguir usando GitHub Actions y hacer mirroring de los commits desde el repositorio de Codeberg hacia GitHub
- Es posible configurar Forgejo Actions para que haga polling de la API de GitHub y sincronice el estado de CI con Codeberg
- También se probaron otros servicios de CI que ofrecen builds en macOS, pero la integración con Codeberg no resulta más sencilla que con GitHub Actions
-
Qué hacer con el repositorio de GitHub
- Después de migrar, se modifica el README del repositorio de GitHub y se lo archiva
- También se puede configurar para empujar commits desde Codeberg hacia GitHub, pero en ese caso los usuarios todavía pueden abrir PR y comentar en los issues
- Algunas personas desactivan la función de issues en el repositorio de GitHub, pero entonces todos los issues desaparecen con error 404 y los PR no se pueden desactivar
- Como ejemplo, el repositorio
libvirt/libvirt usa una GitHub Action que cierra automáticamente todos los PR
- Este enfoque puede tener efectos negativos en el self-hosting y en el ecosistema open source en general
- Los usuarios pierden motivación para mejorar la optimización de builds o la frecuencia de descarga de archivos de release
- Durante el periodo de transición, también puede considerarse mantener un mirror de solo lectura o seguir usando en paralelo GitHub Pages y Actions
1 comentarios
Opiniones en Hacker News
No me desagrada Codeberg en sí, pero no es un reemplazo completo de GitHub
Tiene muchas limitaciones para subir repositorios de código personal o scripts de prueba, y los repositorios privados están limitados a 100 MB
Tampoco permite alojar una página web como GitHub Pages. Para ese tipo de uso, una alternativa realista es hacer self-hosting de Forgejo
Todo eso está bien resumido en el FAQ de Codeberg
La razón por la que subo proyectos OSS a GitHub es simple: la comunidad está ahí
Si solo fuera por alojar código, lo hospedo directamente por SSH o SFTP
Yo subo todo solo a mi instancia personal de Gitea y no me preocupo por estrellas ni promoción
Yo manejo todos mis proyectos personales con Forgejo self-hosted. No extraño GitHub para nada
Incluso puedes restringir el acceso con Tailscale y bloquear crawlers de IA
Creo que cada vez será más importante evaluar alternativas a GitHub
Pero GitHub ya impuso el estándar de CI y builds multiarquitectura, así que a las alternativas impulsadas por la comunidad les cuesta competir
GitHub ofrece muchas cosas “gratis”, pero a cambio probablemente las use para recolección de datos y entrenamiento
Codeberg no soporta repositorios privados, así que tampoco puede impedir que Copilot raspe los repos públicos
Según el FAQ de Codeberg, si necesitas proyectos privados recomiendan hacer self-hosting de Forgejo
En nuestra empresa migramos por completo de GitHub a GitLab self-hosted
Lo pusimos detrás de Tailscale, así que no tenemos la carga de SSO, y los runners de CI corren en EKS y en un clúster de GPU. Puedo ayudar a quien esté considerando una migración parecida
No tiene mucho sentido simplemente decir “reemplacemos GitHub”. Hace falta un nuevo hábito y una nueva propuesta de valor
Así como GitHub reemplazó a SourceForge, la próxima generación de plataformas tendría que conectar en tiempo real la escritura de código y la colaboración
Por ejemplo, podría ser una estructura como Google Docs donde cada prompt genere un commit
Codeberg es idealista, pero en la práctica tiene problemas de estabilidad
Como opera sin Cloudflare, es vulnerable a ataques DDoS y tiene caídas frecuentes. Cuando no puedes acceder al repositorio remoto en medio del desarrollo, es realmente frustrante
Casi no uso GitHub desde la adquisición por parte de Microsoft. De hecho, me gusta más el flujo de trabajo simple, basado en correo electrónico, de Sourcehut
También creo que el CI basta con que sea basado en comandos que puedan ejecutarse localmente
Los repositorios de código deberían tener por naturaleza una estructura distribuida y federada
Gracias al sistema de firmas criptográficas de git (GPG/SSH), se puede separar la confianza en el repositorio de la confianza en los commits
En el centro solo harían falta un servidor de claves y la gestión del namespace, y el resto se puede distribuir