Dic
01

Liberando plugins para Redmine

Juanje Ojeda. Desde hace algún tiempo venimos usando en Emergya, de forma bastante intensiva, la herramienta libre de gestión de proyectos Redmine. Nos resulta muy útil para el trabajo diario de técnicos, analistas, jefes de proyecto e incluso clientes. Pero como todas las herramientas, llega un punto en el que quieres exprimirla un poco más y sacarle más partido. Por eso empezamos a hacer desarrollos interno sobre Redmine para mejorar la gestión de nuestros propios procesos.

Aprovechando que tenemos gente capacitada en la tecnología en la que se basa Redmine (Ruby on Rails) y que hemos tenido varios encargos de clientes para hacer adaptaciones y amplicaciones de dicha herramienta, decidimos usar ese conocmiento en mejorar nuestra gestión de la calidad de los procesos.

Hace años que estamos metidos en temas de calidad con la ISO9001, pero nos metimos hace menos en CMMI y la gestión de todos los procesos empezaba a parecer demasiado tediosa cuando mucho de lo que necesitábamos lo haciamos ya con nuestro gestor de proyectos. Por eso decidimos ampliarlo y que éste nos sirviera para llevar esa gestión y trazabilidad que nos pedían para las certificaciones de calidad, pero sobre todo, para saber mejor, en todo momento, cómo iban los proyectos.

El resultado fue un plugin (CMI) para Redmine que nos genera métricas y gráficas de los proyectos en tiempo real. Tanto del estado global de los proyectos, como por cada uno de ellos. Además de mostrarnos información tan útil como la desviación entre tiempos, esfuerzos y objetivos estimados e incurridos, cuánto queda por hacer, qué retraso llevamos, rentabilidad de un proyecto, etc.

Métricas con Redmine CMI

Como siempre hemos querido poder liberar software propio y creíamos que este plugin podría serle útil a muchas empresas parecidas a la nuestra, comenzamos a limpiar el código y hacerlo más independiente de nuestra versión de Redmine para que cualquiera se lo pudiera instalar. Y ya lo tenemos licenciado (GPL) y publicado. Tenemos el proyecto alojado en la forja del CENATIC, donde tenemos un wiki, sistema de seguimiento de errores, lista de correo y alguna cosa más. Aunque aún falta mucho que hacer, sobre todo en cuanto a documentación.

El código, por razones prácticas y por que usamos el sistema de control de versiones Git, lo tenemos alojado en Gitorious. Un proyecto libre de gestión de repositorios Git.

También tenemos el plugin registrado en Redmine.org para que pueda llegarle a más gente. Aunque el plugin es estable y funcional, quedan cosas por hacer. Limpiar un código hecho internamente no siempre es fácil, necesitamos feedback de otros usuarios que puedan detectar errores que se nos han pasado por alto, así que cualquier ayuda es bienvenida.

Nuestra idea no es «soltar» una versión a un repositorio público y listo, sino dejar el plugin preparado para que cualquiera (incluidos nosotros) lo pueda usar y actualizar sin problemas, para luego seguir desarrollándolo y mejorándolo en abierto. Tendremos que corregir cosas, mejorarlo, ampliarlo y no tiene sentido hacerlo en una versión interna, teniendo una ya pública.

Una de las necesidades que hemos detectado después de publicarlo es que necesitamos traducirlo al inglés, pues ya son muchos los que nos lo han pedido para poder probarlo.

El plugin está preparado para ser traducido, pero no hemos tenido tiempo aún de hacerlo. Si alguien está interesado que se ponga en contacto con el equipo de desarrollo en la lista de correo.

Aprovechando la publicación de este plugin, hemos rescatado algún otro desarrollo y hemos publicado dos plugins más. Uno para poder integrar Redmine con otras aplicaciones web que usen el servicio CAS para la autenticación de los usuarios, para así tener una entrada única. Es decir, accedes a una de las aplicaciones y estás autenticado en todas (incluido el Redmine).

El otro es un plugin simple para poder insertar recortes de código (snippets) alojados en un repositorio de código libre Snipt.net. Útil para compartir pequeñas soluciones o código de ejemplo en el repositorio y luego referenciarlo en el wiki del Redmine, sin tener que volver a escribirlo ni preocuparse en actualizarlo si se cambia en el repositorio.

Esperamos seguir aportando cosas que hagamos para convertir el Redmine en una herramienta aún más útil para nosotros, porque seguramente también será útil para otra gente.

También me gustaría agradecer el esfuerzo que está haciendo el equipo que está trabajando en estos plugins y nuestros proyectos con Rails y Redmine, que son unos grandes profesionales y están haciendo un gran trabajo. En concreto a Carlos Parra por ser el padre de idea de este plugin CMI y encargado de su diseño y seguimiento, a José Manuel Prieto y a Clara Meniz por ser quienes han estado muchas horas peleándose con el código y hecho un escelente trabajo. También a David Teyssiere y Jaime Soler, que han hecho algunas contribuciones al código.

Me enorgullece tener gente tan válida a nivel personal y profesional en nuestro equipo :-)