GitHub vs.Bitbucket vs.GitLab: una batalla épica por la mente compartida de los desarrolladores

Es el tipo de metanoción que hace que los filósofos de pregrado digan: "¡Guau!" El software actual es tan complicado que necesitamos escribir software que nos ayude a comprender y construir el software que necesitamos escribir. El código engendra código engendra más código ...

El repositorio de código llamado Git es la herramienta favorita de todos para curar software, pero incluso este elegante software de código abierto no es suficiente. La mayoría de los programadores y los equipos a los que pertenecen ahora están casados ​​con versiones en línea de Git que agregan muchas capas adicionales de análisis y presentación para hacer posible atravesar el vasto pantano que es nuestro código. 

Ahora hay tres grandes contendientes por el mejor lugar para guardar sus expresiones regulares, funciones anónimas e intensos destellos de genio recursivos que recorren los árboles: GitHub, Bitbucket y GitLab. Todos ellos compiten por ser el mejor lugar para almacenar su fuente.

¿Es uno mejor que el otro? ¿Es uno de los mejores lugares para que tu equipo invente una nocidad impresionante? Enfrentémoslos entre sí y veamos cuál gobierna.

GitHub es el más grande

Quizás sea porque fue el primer gran sitio web que se especializó en alojar repositorios Git. Quizás sea por sus buenos trabajos en la comunidad de código abierto. En cualquier caso, GitHub es líder si usa la métrica del gran volumen de código informado. GitHub reclama 28 millones de usuarios y 85 millones de repositorios. Bitbucket reporta seis millones de usuarios y GitLab es un misterio que no respondió a la pregunta.

Algunos piensan que esto importa. Los desarrolladores de código abierto a los que les gusta saltar de un proyecto a otro pueden usar un inicio de sesión y vincular todo su trabajo. Todos pueden seguir a los desarrolladores de GitHub como los amantes de los gatos siguen a los creadores de los mejores videos de gatos en YouTube. Los efectos de red que parecen dominar Internet empujan a GitHub a la cabeza.

Otros no están tan seguros. Sí, les gusta vincular su código público, pero muchas personas no quieren vincular el trabajo que hacen para los clientes. Eso debería ser separado y no público. En ese contexto, los efectos de red no valen mucho.

Bitbucket y GitLab son más baratos

Los tres servicios ofrecen muchas opciones gratuitas, pero todos ganan dinero cobrando a los desarrolladores, generalmente profesionales, por albergar proyectos privados. GitHub comienza en $ 7 por mes por desarrollador. Bitbucket comienza en $ 2 por mes y GitLab comienza en $ 4 por mes.

Pero estos números son solo guías aproximadas porque es muy probable que desee actualizar. Un nivel mejor en Bitbucket cuesta $ 5 por mes. GitLab tiene una versión premium que cuesta $ 19 por mes, y debe pagar anualmente para obtener ese precio.

Es casi seguro que existen descuentos ocultos para empresas con equipos más grandes y estos hacen que sea difícil compararlos. Puede pensar que el alojamiento Git es una mercancía, pero estas empresas han encontrado formas de agregar tantas características adicionales que su cabeza comienza a girar cuando comienza a comparar lo que obtiene por su dinero.

Bitbucket y GitLab permiten repositorios privados ilimitados

Lo que obtienes gratis es tremendamente diferente. Tanto Bitbucket como GitLab le permiten almacenar sus propios repositorios privados de forma gratuita. Solo comienzas a pagar cuando tu equipo crece y se vuelve más profesional. GitHub almacenará tus proyectos de forma gratuita solo si eres un estudiante o si los haces públicos. Eso es genial para el código abierto, pero no para todos sus proyectos privados.

Estos niveles gratuitos pueden ser bastante generosos. Bitbucket permite pequeños equipos de hasta cinco colaboradores. GitLab permite colaboradores ilimitados.

Vale la pena señalar que estos precios y niveles son para la versión alojada en la nube. Si desea hospedarse por su cuenta, puede ser más económico. También hay planes académicos y versiones de la comunidad de código abierto que son muy generosos.

Bitbucket y GitLab tienen integración continua

Estas empresas se están expandiendo no solo al almacenar el código, sino también al crearlo e implementarlo. GitLab incorporó la integración continua basada en Jenkins y luego agregó soporte de implementación y monitoreo en un ciclo virtuoso. Puede enviar su código, implementarlo, monitorearlo y luego comenzar a planificar el siguiente conjunto de modificaciones sin salir de GitLab.

De manera similar, Bitbucket ofrece Pipelines, una herramienta de construcción e implementación similar que hace lo mismo con unos pocos clics. Quizás no ofrece tanta supervisión, pero está estrechamente integrado con la nube de Amazon.

GitHub le permite usar su propio servidor de integración continua

¿Los usuarios de GitHub alguna vez construyen su código? Por supuesto. Muchos usan herramientas de terceros como CircleCI o Travis CI que se activan mediante confirmaciones en GitHub. Algunos incluso albergan su propia versión de Jenkins, que está disponible en un repositorio de código abierto alojado en GitHub.

Las herramientas de terceros pueden no estar bajo el mismo paraguas corporativo, por supuesto, pero logran casi lo mismo. Y luego, a veces, la separación puede ser una ventaja si desea hacer las cosas de manera ligeramente diferente.

Vale la pena señalar que tampoco hay nada que le impida lanzar su propia solución de integración continua con Bitbucket o GitLab. Simplemente revisan el código como cualquier otro cliente de Git.

GitLab te permite desarrollar online

Lo que comenzó como una herramienta para permitirle navegar por código estático se está transformando lentamente en una plataforma de desarrollo completa. La interfaz de GitLab es cada vez más compleja y comienza a acercarse a lo que la empresa llama un entorno de desarrollo integrado o IDE. No es tan sofisticado como algunos de los monolitos centrados en el escritorio como Eclipse o Xcode que ofrecen depuración integrada, pero eso no significa que no pueda usarlo para hacer un desarrollo cada vez más sofisticado con confirmaciones de archivos múltiples limpias.

Tanto GitHub como Bitbucket tienen versiones más simples que le permiten editar sus archivos en línea y luego confirmar el resultado. Son mejores para arreglos y retoques rápidos.

Bitbucket tiene búsqueda basada en código

Puede parecer una cosa pequeña, pero el algoritmo de búsqueda de Bitbucket comprende muchos de los idiomas principales, lo que permite clasificar los resultados. La definición de una función o variable aparece en la parte superior y los usos siguen. Si está tratando de averiguar qué hace alguna palabra clave, no tiene que desplazarse por las páginas de resultados para encontrar la respuesta.

Bitbucket proviene de la misma empresa que fabrica Jira

Jira es una de las herramientas líderes para organizar el proceso de desarrollo mediante el seguimiento de los tickets y mantener a los equipos al tanto de quién hace qué, a qué repositorio y cuándo lo terminan. Jira se puede integrar con todos, pero es propiedad de Atlassian, lo que garantiza que Jira funcione bien con Bitbucket.

Tanto GitHub como GitLab tienen sus propias herramientas de seguimiento de problemas integradas en el flujo de trabajo que hacen prácticamente lo mismo. Para obtener más detalles, los usuarios de GitHub y GitLab pueden recurrir a Jira o cualquiera de una serie de herramientas similares.

GitLab es de código abierto

Si no le gusta alguna parte en particular de GitLab, puede descargar el código fuente de Ruby, modificarlo y alojarlo usted mismo. Es de código abierto y solo está esperando a que lo bifurques. GitHub ofrece algunas piezas útiles de su rompecabezas en sus repositorios, y Atlassian ofrece un apoyo generoso a todos los proyectos de código abierto que utilizan licencias aprobadas. Pero GitLab le brinda el código sin formato para toda la plataforma en una edición comunitaria.

También hay varios otros proyectos de servidor Git de código abierto, como Gitblit, escrito en Java, Allura, escrito en Python y Gogs, escrito en Go. Pero tendrás que alojarlos a todos.

GitLab está estrechamente integrado con Google Cloud

No es necesario utilizar Google Cloud con GitLab. GitLab simplemente lo hace un poco más fácil al integrarse con Google Kubernetes Engine. Solo unos pocos clics mueven su código a un clúster de contenedores en ejecución. Incluso si no usa Google Kubernetes Engine, a GitHub todavía le gusta trabajar con Kubernetes. Si implementa en un clúster de Kubernetes, puede monitorear todo (entornos de CI, implementaciones, pods y métricas de Kubernetes) directamente desde GitLab.

Bitbucket se integra con AWS

Nuevamente, siempre puede implementar su código donde quiera, pero un complemento de Bitbucket en Atlassian Marketplace enviará su código a un bucket de Amazon S3 y usará AWS CodeDeploy para ejecutarlo en EC2. Todo lo que necesita hacer es configurarlo una vez y estará listo para funcionar.

Bitbucket tiene muchas extensiones

La aplicación AWS CodeDeploy no es la única opción en el mercado de Atlassian. Al momento de escribir estas líneas, hay 304 aplicaciones escritas por terceros para extender Bitbucket. Algunos agregan funciones como notificaciones o gráficos de confirmaciones y otros ayudan con la limpieza del proyecto mediante el seguimiento del flujo de trabajo. Si se siente mandón, puede instalar el complemento Política de compromiso que analiza los mensajes de compromiso para asegurarse de que mencionen números de problema y otros detalles. Si no ve lo que desea en Marketplace, puede escribir el suyo.

Git (simple) es gratis y privado

Habrá algunos que no quieran utilizar ninguna de estas lujosas opciones. Git es una herramienta de línea de comandos bastante simple con muchos comandos para profundizar en los repositorios. Puede presionar, extraer y rastrear el código por su cuenta usando la línea de comando. Si eres bueno para memorizar las instrucciones de la línea de comandos y no quieres ninguna de las bonitas pantallas de código, diferencias y más, basadas en la web, entonces el viejo Git te servirá bien.

¡Usa dos o los tres!

Puede parecer una exageración, pero no hay ninguna razón por la que deba elegir solo uno. Git simplifica el envío de confirmaciones en sentido ascendente, y no hay ninguna razón por la que no pueda agregar varios en sentido ascendente. Si necesita funciones de dos o las tres de estas plataformas, puede configurar sus repositorios para enviarlas a todas. Si tiene suerte, puede permanecer dentro de los niveles gratuitos. Y si no es así, no son demasiado caros.