/ Github

Git <3

Desde hace ya algun tiempo comence a utilizar Git como sistema de control de versiones en todos y cada uno de mis proyectos.

El control de versiones es un sistema que registra los cambios realizados sobre un archivo o conjunto de archivos a lo largo del tiempo, de modo que puedas recuperar versiones específicas más adelante.

Me ha tocado en la mayoria de mis trabajos, persuadir, fomentar, ayudar a compañeros aprender sobre el uso de Git, en los mejores casos migrar de SVN a Git por las muchas ventajas y plataformas que ofrece este SCM (source control management) por que aveces el control de versiones es inexistente.

Un método de control de versiones usado por mucha gente es copiar los archivos a otro directorio. Este enfoque es muy común porque es muy simple, pero también tremendamente propenso a errores. Es fácil olvidar en qué directorio te encuentras, y guardar accidentalmente en el archivo equivocado o sobrescribir archivos que no querías.

Algunas personas se resisten al cambio, si bien por que tienen un método rutinario que les ha funcionado, que solo ellos conocen y es posible que ya no quieran aprender a usar una nueva herramienta, pero siempre trato de motivarlos a utilizar Git mostrando la cantidad de proyectos, empresas y personas que se encuentran usando esta herramienta.
Normalmente en nuestro caso el gusto entra por los ojos así que utilizo Github para explorar proyectos como Bootstrap, Angularjs y me paso por alguno que otro que se encuentra en trending y es notorio que si un proyecto de TI es cool, debe encontrarse en Github.

Si eres diseñador gráfico o web, y quieres mantener cada versión de una imagen o diseño (algo que sin duda quieres), un sistema de control de versiones es una elección muy sabia.

Te permite revertir archivos a un estado anterior.

comparar cambios a lo largo del tiempo ver quién modificó por última vez algo que puede estar causando un problema

si pierdes archivos, puedes recuperar los fácilmente.

Si, Git es muy bueno en esto, en lo otro bla bla bla, pero aun así, no es suficiente, no para organizar la colaboración, ahorrar el uso de papel y que las personas que pertenecen a un equipo puedan comunicarse rápidamente entre uno o varios proyectos a nivel empresarial, por que debemos recordar que Git como tal es un (comillas gigantes) "simple comando de terminal".
Para solventar esto surgen las plataformas web que utilizan Git en el core y le dan un bonito look para los usuarios y tratan de mostrar que Git va mas haya de la terminal.

Github

La plataforma web mas popular de todas y la mas conocida es Github, fue mi primer acercamiento con Git, allí aprendí muchas cosas, ademas de que trate de colaborar en algunos proyectos relacionados con mi distribución favorita( Fedora ) y librerías que necesitaba.
La colaboración en Github puede ser muchas cosas, hacer un commit, reportar un error, pedir nueva funcionalidad, forkear el proyecto(crear un nuevo proyecto en base a otro proyecto), etc, te ayuda mucho a afinar tus skills simplemente leyendo y descubriendo como esta hecho el código de cosas que utilizas rutinariamente.
Hoy tengo una suscripción de estudiante en Github que me permite tener repositorios privados ilimitados,entre otras cosas, para uso personal y como freelancer recomiendo completamente utilizar esta plataforma.
Debido a la rotación en mi trabajo e descubierto mas plataformas, que si bien Github es mi favorita, quizá por políticas de la empresa no encaja al momento de migrar o comenzar a utilizar Git en un equípo de trabajo.

Welcome home, developers

GitHub fosters a fast, flexible, and collaborative development process that lets you work on your own or with others.

Stash

En alguno de mis trabajos conocí Stash de Atlassian, sinceramente trabaje muy bien con el, servia para lo que era y estaba muy sobrado para un equipo de 2 personas, ademas contábamos con Jira otra herramienta de la misma empresa, lo único que nos faltaba era Bamboo, pero no lo teníamos por la desventaja de estas herramientas, son de paga.
El modelo de negocio de Atlassian eran vender estas herramientas y ni modo, todos tenemos que comer, pero Bamboo hubiera hecho mucho mas ágil el trabajo y ahorrado el salir tarde para hacer puestas en producción, lastima que mis lideres no conocían las DevOps y en ese tiempo por muchas razones no era una prioridad.
Curioseando un poco encontré que Atlassian, también tenia para todos con Bitbucket, una especie de Github creada por ellos, me hice una cuenta, cree un grupo, todo por el simple hecho de que tenia repositorios privados gratis, pero ni eso me hizo moverme de Github.
Las cosas han cambiado mucho, ahora Stash ya no se llama así, lo rebautizaron con el nombre de Bitbucket Server, algo lógico desde un principio, en fin.

Code, Manage, Collaborate

Bitbucket is the Git solution for professional teams

Gitlab

Otra plataforma que apenas comenzaba a escucharse y vaya que me ha sorprendido como evoluciono tan rápido e hizo fuerte en mi la idea de que el software ruso es muy bueno, en repetidas veces e leído que los paquetes rusos en distribuciones Linux son de calidad, aunque este proyecto nació en Ucrania.
En principio me llamo la atención su modelo de negocio, muy similar al de RedHat en los productos con los que estoy familiarizado, Jboss, JBPM, Hibernate, Fedora <3, etc. La mayoría te da acceso libre como desarrollador y puedes utilizar su versión comunitaria y si necesitas soporte ahora si pagas, pero no antes, no sin probar el software, no sin tener código desarrollado, no sin estar bien seguro de que lo que te venden es lo que necesitas, e visto tantas empresas comprar herramientas como si fuera una maravilla y al final nadie las usa, son privativas, carecen de comunidad, son excesivamente caras y por lo tanto mueren.
Si una herramienta de TI es buena, probablemente la encontraremos en StackShare.io, alguien va a estar hablando de ella con o sin patrocinio, comenzara a salir en tags de StackOverFlow, pero y si no ?, dios te bendiga amigo.
Por el boca a boca es como encontré Gitlab, cuando su interfaz de usuario era no muy bonita, cuando un zorro con ojeras era su logo( really? xD), lo probé lo instale, me hice una cuenta, pero para uso personal, Github es el rey.
Cuando llegue a mi nuevo trabajo, vi que utilizaban SVN, con Visual SVN, te daba lo básico, como un Git Web, pero sin Git, tenía que hacer algo.
En la primera oportunidad que me dieron lo instale en una maquina virtual y comencé a generar tareas, a explicar a las personas que estaban trabajando conmigo como es el marco de trabajo, nadie hace las cosas como quiere, antes de ser aceptado se revisan los cambios, todo tiene un flujo y las ideas se toman en cuenta.
Solo fue cuestión de tiempo, hoy logre implementar Gitlab en un equipo de trabajo un poco mas grande y con mas proyectos, ya se encuentra en su propio servidor y todos contentos, pero aun no termina la cosa, me hace falta el servidor de integración continua y no me he decidido si Jenkins o Gitlab Ci.
Gitlab no me fallo, mi instinto me decía que un modelo like a RedHat siempre es una buena perdida de tiempo, en el peor de los casos, pero no fue así.
Hoy sin duda recomendaría Gitlab como la herramienta por defecto para las empresas que aun utilizan SVN y quieren migrar o no tienen ningún sistema de versionamiento de código, aquí en México abundan, lo mejor, que hasta cierto punto, es gratis.

Conclusión

Tal vez el titulo del articulo es un tanto ambiguo, pero es mi resumen con Git y las plataformas que ayudan a realmente exprimirlo como una herramienta de trabajo para equipos en las empresas, Github es el rey, obviamente, pero en segundo lugar Gitlab es lo mejor de Github y adoptarlo literalmente no cuesta nada, Stash hoy Bitbucket Server, si ya pagaron por el pues úsenlo, es bueno, pero si van a gastarse el presupuesto en una herramienta que ustedes quieran utilizar por que no es gratis, existe cada gente, mejor paguen por Github Enterprise, nunca lo e usado, lo recomiendo por que si Github en su servicio gratuito es excelente, no me imagino la calidad de su servicio para empresas, igualmente Gitlab tiene su versión empresarial, quizá en algún momento la necesitare.
Fuentes:

https://git-scm.com/book/es/v1
https://github.com/
https://about.gitlab.com/
https://es.atlassian.com/software/bitbucket/server