6. Repositorios de código libre: abiertos y comunitarios

"La plataforma GitHub es el repositorio de código más popular que incluye mucho del software que utilizamos cada día (Google, Facebook, Twitter o Airbnb, y también de gobiernos como el francés o el estadounidense)."
"Al software libre, todo el mundo puede contribuir, independientemente de su conocimiento técnico o de si saben o no programar."
"En proyectos de software libre se ha de precisar bien quien decide, cuando se decide y cómo se decide cada aspecto. Hay que ser transparentes en su gobernación."

La primera condición de todo software libre es que su código sea abierto, es decir accesible a todo aquel que quiera consultarlo. Esto podría ser tan simple como colgar el código en una web, pero la complejidad del código fuente de cualquier software, por pequeño que sea, hace que el uso de repositorios de código públicos sea la mejor opción.

Los repositorios facilitan el almacenamiento y la gestión del conjunto de ficheros que forman el código fuente del software, así como sus dependencias, versiones y formatos. A través del repositorio, los usuarios se pueden descargar la versión del software que deseen o seleccionar solo aquellos ficheros que quieran examinar con más detalle. Aunque cada organización puede instalar y mantener sus propios repositorios, es mucho más útil crearlos dentro de las grandes plataformas online especializadas en el alojamiento de software. GitHub, con más de 30 millones de proyectos, es la más popular actualmente e incluye buena parte del software que utilizáis cada día (por ejemplo el creado per Google, Facebook, Twitter o Airbnb o por una lista de gobiernos creciente como el francés o el estadounidense).

Participación comunitaria

Más allá de una mayor visibilidad y accesibilidad, estas plataformas ofrecen una serie de herramientas para facilitar la colaboración al entorno del software. Por ejemplo, los usuarios pueden avisar de los errores que han encontrado, registrar peticiones de nuevas funcionalidades o participar en las discusiones públicas sobre cualquier aspecto relacionado con su uso, todo desde una única interfaz gráfica que centraliza la comunicación.

Y de hecho este es, principalmente, el gran beneficio del software libre: permitir que toda la comunidad colabore en su mejora y evolución. El código no solo tiene que ser abierto sino que debe ser comunitario y responder a las necesidades colectivas, presentes y sobretodo futuras, que sin dar voz a la comunidad son imposibles de adivinar. Todo el mundo puede contribuir, independientemente de su conocimiento técnico o de si saben o no programar. Los expertos pueden ayudar con mejoras en el propio código que, por ejemplo, solucionen errores detectados por otros usuarios no expertos. Estos últimos, a su vez, pueden contribuir mejorando las guías de usuario, moderando los foros, diseminando el proyecto o simplemente dando feedback.

Favorecer esta participación es crítico para el éxito del proyecto de software pero implicar a la comunidad requiere no solo escucharla sino también hacerle caso. Se tiene que ser transparente en la definición de la gobernanza del proyecto para evitar alienarla, explicando claramente cómo los gestores del proyecto tendrán en cuenta las contribuciones de la comunidad en el momento de tomar decisiones en todos los niveles, por ejemplo, al definir la prioridad de los errores a corregir o al escoger las funcionalidades que se van a añadir en la siguiente versión. Se debe precisar bien quién decide, cuándo se decide y cómo se decide cada aspecto del proyecto.

Aparte de ser transparente, convendrá también empoderar a la comunidad, para que no solo tenga voz sino también voto. Hasta qué nivel de democracia se quiere llegar (¿Todo el mundo puede votar? ¿Qué se vota? ¿Cuánto vale cada voto?) dependerá de la estrategia a seguir para cada software a nivel individual pero está claro que la capacidad del proyecto de atraer personas con ganas de ayudar y dedicar tiempo está ligada a la percepción que estos tengan de la valoración que se haga de su trabajo.

Gracias a los repositorios y plataformas de código actuales, a nivel tecnológico no hay ningún impedimento real para abrir el software y empezar a desarrollarlo de forma colaborativa conjuntamente con su comunidad de usuarios. Ser valientes y dar este paso, depende únicamente de nosotros.

 

AUTOR

Jordi Cabot es Profesor de Investigación ICREA a l’IN3 (Internet Inerdiciplinary Institure) de la UOC donde dirige el grupo de investigación en informática SOM, especializado en el área de ingeniería del software y sobretodo en el estudio de las diferentes comunidades que participan en su desarrollo. Lo podéis encontrar online en su blog modeling-languages.com o en twitter @softmodeling.