sábado, 11 de enero de 2014

Modelo de gobierno en un proyecto de software libre

La variedad en proyectos de software libre es inmensa, superior sin dudas a los provectos de software privativo, la cuestión clara es que existe un modelo de gobierno en cada uno de ellos, pero cómo de homogenios o heterogenios son estos modelos es cuestionable. Lo cierto es que un marco de proyectos de software libre el estudio de estos es factible por ser un entorno abierto.

En los proyectos de software libre donde existe una base colaboradores importante, que no quiere decir muchos contribuidores, posiblemente hablamos a partir de 5. Existe siempre de manera implícita o explicita en el modelo de gobernanza un procedimiento para participar, proteger su trabajo y permitir compartirlo.

Los modelos de gobierno en los proyectos de software libre se mueven entre aquellos centralizados por una sola persona o organización, por ejemplo, Linux centralizado en Linux Torvald o proyectos como Emacs de GNU donde el desarrollo esta completamente controlado por la fundación GNU.
U otros constituidos como una meritocracia de sus miembros, por ejemplo, sería el proyecto R, completamente desarrollado por miembros "ilustres" de la comunidad y muy cerrado a la posibilidad de desarrollo. En el otro extremo de la apertura a la colaboración en comunidades de meritocracia, sería la fundación Apache con proyectos como Apache httpd.

Los proyectos de software libre suelen comenzar teniendo un modelo de gobernanza centralizado y cerrado a la participación, si lo comparamos con el software privativo ese es su modelo de gobernanza. Y a los largo de la evolución de los proyectos suelen ampliar sus grados de libertad de colaboración y su descentralización a modelos de meritocracia del los miembros de la comunidad. Pero es importante indicar que definir un modelo de gobernanza claro al inicio del proyecto es fundamental para que la comunidad alrededor del proyecto se dinamice y crezca.

El porqué unos proyectos evolucionan en una dirección de una comunidad gobernada por la meritocracia o mas abiertos a la participación es variado, desde la personalidad del líder o la organización gestora, hasta temas relacionados con el tamaño y perfil de los colaboradores, o evolución de la comunidad como la existencia de forks, o incluso razones asociadas al propio mercado, por ejemplo por una razón de posicionamiento como sería el caso de Android.

Establecido el modelo de gobernanza en un proyecto de software libre parece a primera vista que puede ser complicado llegar a tomar decisiones. Por ello en los modelos de gobernanza se tiene que documentar de manera explicita los procesos de toma de decisiones y quien aprueba cada una de las fases. En los procesos de toma de decisiones de las comunidades centralizadas parece más intuitivo, pero que ocurre en las comunidades gobernadas por meritrocacia. En algunos proyectos con este sistema, suelen tener un control débil sobre el proceso de toma de decisiones y permite de este modo a la comunidad de una manera consciente y mediantes mecanismos de votación la toma de decisiones. Donde podemos identificar dos modelos habituales de decisión:
  • Consenso
      Ante una propuesta de un miembro de la comunidad, se analiza y debate por el resto de miembros, si la propuesta no es rechazada por ningún miembro de la comunidad durante un periodo de tiempo acordado, se considera tomada por consenso. Este consenso en algunos proyectos se categoriza como relajado(lazy), relajado mayoritario, consenso y unánime.
    
  • Votaciones.
      Donde todos o parte de los miembros de la comunidad tienen derecho a participar en la discusión y en las votaciones. La votación suele utilizarse solamente para temas de bloqueo o en algunos caso legales.

Aunque las comunidades son en principio planas con miembros con los mismos derechos, la meritocracia evoluciona a tener miembros con un peso "moral" superior en la toma de decisiones dentro de la comunidad, conseguido por el numero y calidad de sus contribuciones.

Y que elementos debería tener un modelo de gobernanza:
  • Roles y  responsabilidades: Es importante definir que diferentes roles pueden participar en el proyecto, si existe algún rol que sea responsable del proyecto o de parte, si existen comité. Hay que detallar las responsabilidades de cada uno de los roles.
  • Soporte: Describe los procesos y canales de soporte para el usuario y colaborador. Es muy importante, ya que hay que tener en cuenta que los usuarios de hoy son los futuros contribuyentes.
  • Proceso de toma de decisiones: Es critico conocer como se tomas las decisiones, que deber ser comunicado de manera clara y no ambigua.
  • Proceso de participación: Se debe detallar la documentación, repositorios y todo lo que sea necesario para que un usuario que quiera participar lo pueda hacer.

Para finalizar es importante destacar que parece razonable pensar que un modelo claro de participación y comunicación, y por lo tanto su modelo de gobernanza, es básico para el crecimiento y sostenibilidad de un proyecto de software libre.

References:
[1] How the ASF works
[2] Mozilla Gobernance
[3] Governance Models
[4] Meritocratic Governance Model

No hay comentarios:

Publicar un comentario