lunes, 27 de febrero de 2012

Social Coding: GitHub

Hace unos días, revisando el blog de springsource para ver sus últimas novedades me llamó la atención la entrada "Spring Framework moves to GitHub" porque llevaba tiempo escuchando del éxito de GitHub como sistema de alojamiento de proyectos de software y alternativa a otros "Project Hosting" como SourceForge o GoogleCode.

Hasta ese momento reconozco que no había tenido suficiente tiempo y/o curiosidad para probarlo, pero esta noticia me ha animó: algo bueno tiene que haber cuando una referencia como Spring Framework realiza una migración de su repositorio de código a GitHub.

Lo primero que encontramos al ir alojar un proyecto en GitHub es que, como su nombre indica, usa Git como sistema distribuido de control  de versiones, pieza clave en torno a la que gira la "magia" del sitio.

Git es un DVCS (Distributed Version Control System), creado inicialmente por Linus Torvalds para gestión del código del nucleo de Linux, que en los últimos años se está convirtiendo en una de las referencias para proyectos Open Source, avalado por el uso en proyectos como Linux Kernel, Android, Eclipse, Ruby on Rails, etc. Si hacemos un Google Trend podemos ver que incluso supera en interés a un sistema como Subversion.

Acostumbrado a trabajar los últimos años con Subversion como VCS, algunas de las características que proporciona Git resultan de los más interesantes:
  • No depender de una conexión de red y tener tu propia copia local del repositorio, con lo que esto supone de velocidad, por ejemplo para realizar consultas al histórico.
  • Disponer de tantas copias de respaldo del sistemas como usuarios lo están utilizando.
  • Trabajar con ramas y unificaciones de código de una manera natural y rápida.
  • Poder establecer flujos de trabajo complejos y personalizados. 
Está última característica me gusta bastante y puede dar bastante juego. Por ejemplo, puedes tener de forma sencilla y natural una topología en donde los desarrolladores envían cambios a un repositorio donde el responsable del proyecto los revisa y una vez validados los envía al repositorio consolidado al que los desarrolladores se sincronizan con acceso de sólo lectura.

Si estáis interesando en el funcionamiento de Git recomiendo el siguiente manual, que por cierto está alojado en GitHub por lo que es fácil hacer un fork y colaborar en mejorarlo.

Si nos centramos en GitHub a parte de lo habitual en este tipo de sistemas (almacenar nuestros ficheros, poder navegar/editarlos, wiki, gestión de defectos, estadísticas, etc.) ofrece la funcionalidad de poder realizar de forma sencilla un clonado de cualquier repositorio, realizar cambios y hacer una petición al propietario del proyecto original para incorporarlo: Pull Request.

Sin duda ésta es una de las funcionalidades que hace tan popular a GitHub para proyectos Open Source pues evita la complejidad de tener que solicitar acceso para poder subir modificaciones de código en proyecto y fomenta el "social coding".

Por ejemplo, podemos realizar una copia del repositorio de Spring Framework, realizar una mejora o corregir ese error que tantos problemas no está dando sin tener esperar a  una nueva versión y proponer su incorporación al proyecto original.

Como no hay nada mejor para valorar algo que utilizarlo, os animo a abrir vuestro proyecto en GitHub. Por cierto es totalmente gratis si es un proyecto público, en cambio si queréis que sea privado tiene un pequeño coste.

No hay comentarios:

Publicar un comentario