Mucha gente me pregunta: «¿Qué sistema de control de versiones distribuidas debo usar para mi proyecto de programación, GitHub o GitLab?» No es una pregunta tan simple. Vamos a desglosarlo, ¿de acuerdo?
Primero, ¿realmente necesita un sistema de control de versiones distribuido (VCS)? El trabajo de un VCS (también conocido como sistema de gestión de código fuente (SCM)) es facilitar que varios desarrolladores, diseñadores y miembros del equipo trabajen juntos en el mismo proyecto. Garantiza que todos tengan el mismo acceso al código más reciente y se realiza un seguimiento de las modificaciones.
Es más fácil decirlo que hacerlo.
Por eso Linus Torvalds piensa en Git como su otro gran invento. Git es gratuito, de código abierto y rápido. También funciona mejor que sus predecesores, como Apache Subversion, Concurrent Versions System (CVS), Perforce y Rational ClearCase. Hay una razón por la que tantos servicios VCS tienen «Git» en sus nombres.
Por supuesto, puede usar Git solo en su propio servidor. Si todo lo que está haciendo es crear un programa internamente, todo lo que necesita es una instancia local de Git. También puede usar Git como un VCS centralizado en sus propios servidores o en la nube. No es necesario suscribirse a un servicio VCS cuando puede crear el suyo propio. Con este modelo, puede ejecutar fácilmente un proyecto con su equipo y socios repartidos por todo el mundo.
Sin embargo, si necesita las campanas y silbatos de un servicio Git alojado, entonces es hora de mirar a GitHub y GitLab.
GitHub es el más antiguo de los servicios. Fue desarrollado por Chris Wanstrath, PJ Hyett, Tom Preston-Werner y Scott Chacon utilizando Ruby on Rails en febrero de 2008. Debido a su ventaja de ser el primero en moverse, GitHub se convirtió en la base de operaciones de muchos repositorios de código fuente abierto.
También: GitHub pide contribuciones para la nueva base de datos de asesoramiento sobre ciberseguridad
GitLab vino después; Los desarrolladores ucranianos Dmitriy Zaporozhets y Valery Sizov crearon GitLab en 2011. Desde el primer día, GitLab fue diseñado para ser un conjunto de herramientas de colaboración, así como un servicio de repositorio de código.
similitudes
Aún así, se parecen más entre sí que no. Ambos se ejecutan en servidores Linux, vienen con rastreadores de problemas y ofrecen una amplia gama de integraciones de terceros y herramientas de importación.
Ambos también tienen interfaces de línea de comandos (CLI) para desarrolladores avanzados y también ofrecen interfaces basadas en web para nuevos programadores. En el caso de GitLab, la interfaz de usuario utiliza el propio sistema de diseño Pajamas de GitLabs y está escrita en Vue.js. La interfaz de usuario de GitHub, Desktop, está disponible como programa de Windows o macOS. Ahora también puede usar Visual Studio con GitHub
Si bien ambos son compatibles con el código abierto, los propios repositorios utilizan un modelo de programación mixto. GitLab utilizó un enfoque empresarial de núcleo abierto. En este modelo, GitLab Community Edition sigue siendo gratuito y de código abierto, mientras que GitLab Enterprise Edition tiene más funciones y viene con soporte. En cuanto a GitHub, aunque su código contiene algo de código abierto, no es un proyecto de código abierto.
Aún así, fundamentalmente, ambos ofrecen repositorios basados en la web con administración de código basada en Git de código abierto y cambios de archivos locales con un repositorio remoto. Si todo lo que desea es la funcionalidad básica de Git pero tiene a alguien que se preocupe por mantener Git en funcionamiento, cualquiera de los dos servicios le irá bien.
Por supuesto, a algunas personas aún no les gusta GitHub porque Microsoft lo adquirió en 2018. Para algunos, Microsoft siempre será The Evil Empire, sin importar cuánto Microsoft demuestre que ahora admite métodos y software de código abierto, o con qué frecuencia el CEO de Microsoft, Satya Nadella. dice que le encanta Linux. Dicho esto, nunca ha sido un factor tan importante. Si bien algunos usuarios huyeron de GitHub por GitLab y Atlassian BitBucket en ese momento, nunca fue el éxodo masivo que algunos esperaban.
Dicho esto, GitHub es claramente el gorila de 800 libras del mundo VCS. Según la empresa de herramientas de programación JetBrains, el 77 % de los desarrolladores utilizan GitHub regularmente, en comparación con el 40 % de GitLab y el 25 % de BitBucket.
También: GitHub habilita el mecanismo de autenticación de dos factores a través de la aplicación iOS y Android
diferencias
La principal diferencia es que GitLab tiene integrados flujos de trabajo de integración continua/entrega continua (CI/CD) y DevOps. GitHub le permite trabajar con las herramientas de CI/CD de su elección, pero deberá integrarlas usted mismo. Por lo general, los usuarios de GitHub trabajan con un programa de CI de terceros, como Jenkins, CircleCI o TravisCI.
Otra diferencia importante es que GitHub prioriza la velocidad, mientras que GitLab se enfoca en la confiabilidad.
Específicamente, GitHub recomienda fusionar nuevas ramas con la rama principal. De esa manera, ya está listo para implementar rápidamente, mientras que también restablece rápidamente su versión anterior si algo sale mal.
En el flujo de trabajo de GitLab, crea múltiples ramas estables más allá del maestro. Como mínimo, tendrá sucursales estables de producción y preproducción. Esto significa que deberá pasar por un proceso de prueba de varios pasos. Una sola revisión de código en la solicitud de fusión no es suficiente.
Por supuesto, puede hacer que cualquiera de los dos funcione de la manera que desee, pero hay una clara diferencia en el enfoque preferido.
Otra diferencia fundamental es que GitLab le ofrece una solución completa de desarrollo de software. Se anuncian a sí mismos como una plataforma DevOps completa por una razón. Dicho esto, GitLab ofrece integraciones con algunos programas y plataformas de terceros, como Jira, Microsoft Teams, Slack, Gmail y muchas otras aplicaciones y plataformas.
GitHub, por otro lado, ofrece menos servicios dentro de su propio programa, pero ofrece formas de integrarse con muchos programas y servicios externos. Estos incluyen software en el que GitHub ha trabajado para integrarse con el servicio y cientos de otros programas a través de GitHub Marketplace.
Precios
Ambos servicios ofrecen planes gratuitos. Estos vienen con repositorios públicos y privados ilimitados. Eso puede ser suficiente para ti si eres un programador independiente o tienes un equipo pequeño. Pero, si la programación es el sustento de su empresa, necesitará más.
Es difícil comparar los precios de GitHub y GitLab. Son manzanas y naranjas. Sugiero comenzar con sus planes gratuitos para tener una idea de cómo funciona su flujo de trabajo en cada plataforma y luego buscar suscribirse al que mejor se adapte a sus necesidades.
Los costos de las suscripciones deben ser la menor de sus preocupaciones. He usado ambos y, para mis propósitos de programación de poca monta, han funcionado extremadamente bien.
Dicho esto, el plan Premium de GitLab cuesta $19 al mes por usuario, mientras que el plan Ultimate con todas las funciones cuesta $99 al mes. En cuanto a GitHub, el plan Team cuesta $40 al año por usuario y el plan Enterprise cuesta $200 al año por usuario. Pero, el diablo son los detalles, es posible que deba pagar extras sin importar a qué servicio finalmente se suscriba.
No deje que el precio sea su guía. Lo que realmente importa es cuál le brindará las herramientas y los servicios que necesita para desarrollar su software lo mejor que pueda.