miércoles, 6 de mayo de 2009

Adiós Bazaar, Bienvenido Mercurial

Uno de mis IM's favoritos es Adium y me gusta contar con la versión de desarrollo mas reciente para estudiarla y aprender ya que a mi parecer es uno de los proyectos que pone mayor énfasis en la calidad de su código, además me da la oportunidad de hacer uno que otro cambio para que se ajuste a mis necesidades o simplemente para experimentar.

En días pasados me disponía como cada semana actualizar mi working copy de Adium para compilarla y actualizar mi versión, sin embargo me di cuenta que no bajaba ningún cambio del repositorio de Subversion, lo cual se me hizo extraño ya que este proyecto es uno de los que tienen mayor actividad en su desarrollo, entonces pensé: "Ha de ser uno de esos días en que ningún desarrollador tocó el código", entonces esperé al día siguiente.

Lo intenté como lo había previsto el siguiente día obteniendo el mismo resultado: Sin cambios, eso ya no se me hizo congruente y entré al sitio de Adium en la zona de desarrollo y cual va siendo mi sorpresa que el proyecto había migrado desde Subversion a Mercurial (Hg) :-O, por lo que el repositorio de Subversion ya no estaba actualizado.

Dado a esto bajé la última versión de Mercurial para poder descargar el código fuente de Adium, descargué la versión mas reciente de el código, con todo y su historia ya que Mercurial es un DVCS y cada branch es un repositorio completo en menos de 2 minutos en mi Mac, wow! ese performance me gustó ya que había ocasiones en que bajaba una actualización de código fuente desde el repositorio de Subversion y llegaba a tardar poco menos del tiempo antes mencionado.

Todo esto despertó mi curiosidad por probar de nuevo este DVCS, esto ya lo había hecho un par de años antes, pero la verdad no recuerdo porque me decidí por darcs en ese entonces, sin embargo me dije: "Creo que es un buen tiempo para darle una nueva oportunidad".

Así que entre de nuevo al sitio oficial de Mercurial y en las noticias mas recientes me entero de lo siguiente:
Me puse a investigar un poco mas y me entéro que Bruce Eckel uno de los mayores promotores de Python y autor de varios libros, también migró el repositorio del código fuente de su libro Python 3 Patterns & Idioms de Bazaar a Mercurial.

Después de haber visto estas noticias me di a la tarea de revisar la documentación, la cual esta bastante completa ademas de tener acceso al libro Mercurial: The Definitive Guide, de manera gratuita.

Comencé a leer el libro y poner en práctica los ejemplos y ejercicios que vienen descritos en el y me fue gustando un poco mas cada vez la filosofía pragmática y sencilla para el uso de Mercurial.

También comencé a experimentar por mi cuenta con Mercurial, transformando repositorios enteros de Subversion, Git y Bazaar sin ningún problema y conservando la historia de mis proyectos.

Por otro lado también encuentro Bitbucket que es un repositorio de código fuente basado en Mercurial, que te permite tener proyectos públicos como privados, este tiene diferentes planes desde un gratuito hasta algunos con rentas bastante aceptables, dependiendo el plan que se escoja se tendrá derecho a tener mas o menos repositorios privados.

Es decir Bitbucket es para Mercurial lo que GitHub es para Git, o Launchpad es para Bazaar, aunque en está ultima comparación no es tan certera ya que Launchpad hasta el día de hoy sólo puedes tener proyectos que cumplan con una licencia Open Source, esto es no existen repositorios privados.

Pues bien al final de una extenuante evaluación pienso que Mercurial es el equilibrio de performance y alta eficiencia de Git y la facilidad de aprendizaje, uso y extensibilidad de Bazaar, por lo que después de algunos meses de haber usado Bazaar como mi DVCS de preferencia he decidido cambiarme a Mercurial, aunque los dos tienen características similares como:
  • Extensibles
  • Excelente documentación
  • Pyhoneers
  • Facilidad de uso
Personalmente veo las siguientes ventajas en Mercurial:
  • Performance
  • Baterías incluidas (extensiones)
  • Soporte de glob y regex en la configuración del archivo .hgignore
  • Fácil conversión de repositorios
  • Bitbucket
  • Mercurial Queues
Sin embargo habrá algunas cosas que extrañaré de Bazaar:
  • Los comandos mas suggar-syntax
  • Los repositorios compartidos