El software libre, producido bajo los principios de las cuatro libertades de ejecución, estudio, modificación y distribución(1), ocupa un lugar cada vez más importante en nuestras vidas, al ser el que soporta una gran cantidad de puntos fundamentales de la red internet actual. Por lo tanto, una cuestión relevante es cuán fácil o difícil es que un determinado software libre pueda seguir adelante en el tiempo según sus usuarios, que también suelen ser los que lo mantienen.
En el artículo que comento, empiezan en la introducción repitiendo que debido a su naturaleza, el mantenimiento de una base grande de usuarios comprometidos y capaces de modificar y ajustar ese software según se necesite es fundamental para el éxito de cualquier programa de este estilo.
Continúan señalando que debido a su naturaleza abierta y al éxito del modelo, hay cada vez más programas similares desarrollándose a la vez, lo que supone que hay una competición muy fuerte entre los diversos programas por captar y atraer los usuarios. Personalmente creo que con frecuencia varios de estos proyectos se unen o termina quedándose solo uno, pero el que se queda ha ganado la «competición», desde luego.
En cualquier caso, la robustez(2) de su red es muy importante. Y por eso los autores de este artículo se pusieron a estudiarla para las redes típicas de generación y mantenimiento de software libre.
Continúan diciendo que la mayor parte de los estudios sobre la robustez de redes se refería a redes físicas, como las de transmisión eléctrica, transporte, etc. Así, hay menos estudios sobre redes virtuales, si bien al aumentar tanto la importancia y cantidad del software libre, algunos estudios se han realizado. En su revisión rápida de la introducción, los autores de este artículo citan trabajos sobre software libre en los que encontraron algunas características de estas redes de trabajo, que se pueden resumir así:
- Cambian su capacidad de resistencia a ataques externos según el tipo de escala que tenga la red,
- Para que un proyecto pueda sobrevivir, es fundamental que su sistema de reclutamiento y mantenimiento de personal sea efectivo,
- Su propia estructura de centro fuerte y una gran periferia más débil de usuarios la hace muy resistente a ataques externos, pero deja el proyecto en riesgo de anquilosarse si lo hace el centro,
- Si un usuario de la red que posee una gran parte del conocimiento del programa se marcha, el proyecto sufre y puede llegar a abandonarse.
Además, también citan dos artículos que analizaban el código desde el punto de vista de si el software libre está mejor o peor codificado que otros tipos. Pero todos estos trabajos sobre la robustez se centran en algún punto concreto, mientras que los autores de este artículo pretenden centrarse precisamente en la robustez en sí de las redes de software libre.
Centrándose más en materia, los autores del artículo comentan que los contribuyentes a proyectos de software libre reconocen que es muy importante para que el proyecto saga adelante que se intercambie información técnica o de habilidades de programación, mientras que otro tipo de datos, como felicitaciones, no es tan importante. Además, hay un conjunto importante de usuarios llamados «vaqueros de grupa»(3), que ni contribuyen ni colaboran al proyecto, la gran mayoría de usuarios, entre los que me encuentro.
Este trabajo se centra en el problema que puede suponer para un proyecto de este tipo la pérdida de usuarios con conocimiento. Uno de los problemas con los que se encuentran es que la mayoría de las investigaciones sobre la robustez de redes se centran en redes estáticas, mientras que por su propia naturaleza las redes que producen software libre son muy dinámicas, con los miembros cambiando a lo largo del tiempo mucho de manera muy fluida. Además, la mayoría de estudios sobre la robustez de redes emplean algún tipo de medida que tiene en cuenta la propia estructura de la red, no el conocimiento de sus miembros, que en redes de programación es fundamental, puesto que la pérdida de demasiado conocimiento causa que el proyecto fracase.
Para ello, emplearon redes de producción abierta de coches de la empresa Local Motors, que tiene una filosofía abierta sobre su fabricación y desarrollo de productos. Construyeron una base de datos de 11 proyectos de su web durante 8 años. Para construir la red, tuvieron que observar las 25472 comunicaciones de sus 1689 usuarios. Un trabajo complicado, que se tradujo en una red con nodos, los usuarios que poseen conocimiento, y filos, las formas en las que ese conocimiento se transmite por los nodos.
Al observar la evolución histórica delas diversas redes de la compañía, representada en la figura 1, pudieron dividirlas en tres estados: comienzo, crecimiento y madurez. En los tres estados, la redes son del tipo «mundo pequeño», lo que quiere decir que la colaboración se produce entre agrupaciones pequeñas de los nodos de la red, más que entre todos los nodos. También observaron que son redes libres de escala, es decir, que sus características fundamentales no varían según el tamaño de la red.
Al tratar de separar los usuarios (nodos) de la red, observaron tres comportamientos típicos: los innovadores, los diseñadores importantes y los usuarios comunes. Con la red inicial, apenas había usuarios diseñadores o comunes, en comparación con las redes en crecimiento y maduras. De manera bastante lógica, es este último tipo de red la que tiene una mayor proporción de usuarios diseñadores y comunes frente a innovadores.
También pudieron contar el número de usuarios por tipo que se unían a la red o que la dejaban, observando una gran variabilidad temporal, que se puede ajustar por una ley de potencias del estilo:
y = a * xb,
tanto para los usuarios que llegan como para los que se marchan.Luego tratan de ver como las pérdidas de usuarios podrían afectar a la red, para lo que definen dos tipos principales de pérdidas, las aleatorias y voluntarias. Las aleatorias son nodos que simplemente, cambian dentro de la red, pero que pueden volver a la misma, mientras que las voluntarias son personas que por cualquier motivo deciden dejar el grupo, llevándose su conocimiento con ellos.
Tras definir estos valores, hacen simulaciones en los que representan la pérdida de estos tres tipos de usuarios para las tres redes, inicial, en crecimiento y madura, con el propósito de observar cuán resistentes son.
Cuando la red es inicial, sus resultados demuestran que la misma es muy sensible a la pérdida de usuarios innovadores, que pueden hacer que la red incluso caiga si son demasiados. Por la misma razón, además de evitar que se vayan por la pérdida de conocimiento que supone para la propia red, es importante tratar de que diseminen rápidamente su conocimiento para que se transmita lo antes posible.
Para las redes en crecimiento la situación es parecida, en el sentido de que la pérdida de usuarios deliberada puede hacer que la red deje de funcionar. Sin embargo, las pérdidas aleatorias de usuarios no le afectan tanto, siendo una estructura muy resistente a ellas.
En las redes maduras, la influencia de los usuarios innovadores se incrementa, en el sentido de que cuando ellos desparecen, la red sufre mucho más que en los casos anteriores, también debido a que todos los usuarios comparten mucho más conocimiento que en otros estados de las redes. Por ello, en este tipo de redes es fundamental la distribución de tareas que logre una mayor implicación de los miembros de la misma.
El artículo termina con una serie de recomendaciones para que las comunidades de este estilo puedan crecer y prosperar según el estado en el que se encuentra la comunidad, que se pueden resumir en las siguientes ideas:
- Para los gestores de la comunidad:
- para comunidades iniciales, lograr que los usuarios con conocimiento aumenten al interaccionar en la red e incrementar el número de usuarios.
- Para una comunidad en crecimiento, hay que establecer mecanismos de protección de los usuarios que saben, para evitar su pérdida.
- Si la comunidad es madura, se deben establecer mecanismos para estimular los usuarios diseñadores e innovadores, para tratar de evitar su pérdida.
- Para los usuarios:
- Tratar de tener una gran diversidad de usuarios,
- animar a los innovadores y diseñadores a compartir conocimiento, para incrementar su número,
- animar a los usuarios normales a aceptar desafíos, con la idea de que se conviertan en usuarios experimentados.
El artículo se publicó en la revista Physica A, Statistial Mechanics and ist Applications, 15 February 2020, 122888.
(1) En la página de la asociación para el software libre explican (en inglés) estos cuatro principios: What is free software?
(2) Es mi traducción de la palabra «robustness» que emplean en el artículo. Se trata de la habilidad de cualquier sistema en red de resistir perturbaciones o falos, internos o externos, sin dejar de cumplir su función. La Wikipedia en inglés tiene un artículo decente sobre el tema: Robustness of complex networks.
(3) En realidad en inglés los llaman «free riders», pero me parece que se conserva mejor el sentido si se traduce pensando en vaqueros, entendidos estos como personas que cabalgan. Además, es mucho más divertido.