Sistemas de control de versiones distribuidos

Para quienes no provienen del área informática, un sistema de control de versiones (en español)  es un sistema que tienen los desarrolladores de software para trabajar de forma distribuida en un mismo proyecto. El sistema se encarga de llevar las versiones, analizar diferencias entre códigos, evaluar conflictos, etc. En los sistemas clásicos hay un servidor que almacena una versión “oficial”. En los sistemas descentralizados cada computadora es un servidor y un repositorio. No hay centro: cada quien desarrolla y va posteando, todo lleva un “merge” en una “branch” transformándose en una “release”.
Hay toda una jerga desarrollada por desarrolladores para poder manejar proyectos descentralizados (la enorme mayoría del software libre se desarrolla con sistemas de control de versiones [que pueden o no  ser distrubuidos], los distribuidos son cada vez más frecuentes). Esa jerga podría ser útil para manejo de cualquier tipo de producción intelectual colectiva que deba tener un “output” o “deliverable” único.

Los sistemas clásicos son CVS, Subversion y otros. Los más actuales: Bazaar, Git, Mercurial y otros.

Desarrollando un proyecto de sistema de gestión basado en web (python + php + ruby) surgió la necesidad de controlar los cambios que se van produciendo y a la vez dejar una puerta abierta para poder el día de mañana liberar el código (y que se puedan sumar otros desarrolladores).

Después de evaluar unos cuantos me decidí por Bazaar (muy tentado por Git y asombrado por la elección del equipo de Python de usar Mercurial por un tema de “antipatía” por Git). Git fue inicialmente desarrollado por el mismísimo Linus Torvalds y es el sistema que actualmente se usa para muchos de los proyectos más grandes y complejos: Linux Kernel, Gnome, Qt, X, etc). La elección de Bazaar tiene más que ver con la facilidad que proporcionan las interfases gráficas para una tarea que recién estoy aprendiendo. Si fuese un poco más experimentado, quizás usaría Git.

En realidad este post era para poner un link a una presentación sobre Git que me pareció interesante en varios aspectos:

  • Ilustra de forma muy gráfica el proceso de desarrollo descentralizado.
  • Enseña a manejar Git y a conceptualizar un poco más allá
  • Es interesante como técnica de presentación (alternativa al clásico “Powerpoint”): una guía al costado y un uso adecuado de los espacios, gráficos y texto.

El desafío para los “no desarrolladores” es poder aprender de estas herramientas que se mostraron más que eficaces para manejo de proyectos enormes y pequeños (escalabilidad), de forma centralizada o distrubuida (flexibilidad) con un esquema de trabajo que trasciende la programación y entra más en la informática (por ejemplo: es usado por desarrolladores gráficos [íconos, señalizaciones, etc]).

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s