- Informes recientes han cuestionado el uso de software de código abierto creado por un desarrollador ruso
- En realidad, la gran mayoría de los proyectos de código abierto están operados por una sola persona mantenedora
- No solo en NPM, sino en diversos ecosistemas, hay muchísimos casos de paquetes populares gestionados por una sola persona mantenedora
- El problema de esta estructura es la sobrecarga excesiva y el riesgo de cadena de suministro que recaen en una sola persona mantenedora
- La esencia del problema no es la nacionalidad, sino la falta real de recursos y apoyo
Introducción: código abierto y la controversia reciente
- The Register publicó un artículo que cuestiona la dependencia del Departamento de Defensa de EE. UU. respecto al uso de una utilidad de código abierto creada por un desarrollador ruso
- El desarrollador de código abierto en cuestión está recibiendo críticas injustas
- El contenido del artículo malinterpreta la realidad del código abierto y señala las limitaciones de este enfoque
La realidad del código abierto: la estructura de 'una sola persona'
- Según los datos, casi todos los proyectos de código abierto son gestionados por una sola persona
- El proyecto ecosyste.ms registra datos de aproximadamente 11.8 millones de proyectos de código abierto
- De ellos, cerca de 7 millones tienen una sola persona mantenedora
- En los otros cerca de 4 millones de proyectos no se conoce la cantidad de personas mantenedoras, pero se estima que una gran parte también corresponde a una sola persona
- Solo una fracción muy pequeña de los proyectos tiene cientos de personas mantenedoras
Ni siquiera los proyectos populares son la excepción
- Mucha gente piensa que "los proyectos importantes de código abierto o los proyectos populares estarán mantenidos por varias personas", pero en realidad los principales ecosistemas como NPM no son distintos
- En el ecosistema de NPM existen más de 4 millones de proyectos con una sola persona mantenedora
- Incluso entre los paquetes de NPM con más de 1 millón de descargas mensuales, aproximadamente la mitad son operados por una sola persona mantenedora
- Si se eleva la cifra de descargas a mil millones, hay algunas diferencias, pero aun así siguen existiendo paquetes mantenidos por una sola persona
- Las personas reales que operan esos 4 millones de proyectos de una sola persona en NPM son alrededor de 900 mil (es decir, una misma persona se hace responsable de varios proyectos)
La esencia del problema: no es el país, es la falta de recursos
- La escala económica del código abierto es una base valuada en billones de dólares (según un estudio de Harvard, 8.8 billones de dólares)
- La mayoría de los proyectos con una sola persona mantenedora carecen de recursos y presentan riesgos en la cadena de suministro
- El mayor riesgo no es un país, sino esa 'única persona mantenedora' que trabaja en exceso y no recibe una compensación adecuada
- Que los medios u otros actores pongan en la mira a personas mantenedoras individuales no es una solución
Conclusión y puntos de acción
- La causa del problema actual está en la estructura de una sola persona mantenedora, y enfocarse en el país no tiene sentido
- Demonizar o detectar a personas mantenedoras individuales no es la solución
- Este problema es complejo y no existe una solución inmediata
- En lugar de señalar y culpar a personas mantenedoras individuales, hace falta pensar en el problema estructural y en formas de apoyo
1 comentarios
Opinión de Hacker News
Da la impresión de que hay mucho malentendido sobre este tema en la comunidad de software; en realidad, el riesgo de la cadena de suministro me parece más un problema de gobernanza que de software o ingeniería
Incluso sin mala intención de nadie, un proyecto puede generar riesgo de cadena de suministro, y cada persona que lo evalúa tiene una perspectiva y criterios de seguridad distintos
El DoD (Departamento de Defensa de EE. UU.) evalúa el riesgo desde una óptica completamente distinta a la de un desarrollador común, y muchos proyectos de una sola persona se consideran riesgosos simplemente porque solo hay una persona a cargo
Si el “bus factor” es 1, eso por sí mismo ya es un riesgo de cadena de suministro
La mayoría de la gente no piensa en escenarios de guerra al elegir paquetes, pero el ejército sí puede hacerlo
Si estalla una guerra, incluso proyectos de código abierto que normalmente se gestionan de manera autónoma pueden ver su situación cambiar de golpe
De hecho, en muchos países durante una guerra la ley puede exigir la cooperación de empresas privadas o proyectos personales, así que hay lugares (como el DoD) que incluso contabilizan ese tipo de cosas como riesgo de seguridad
No operarían en una situación de guerra pensando algo como “ojalá hubiera aunque fuera otra persona en la que no confiamos nada”
Había datos que decían que en NPM hay 4 millones de proyectos de una sola persona y que unas 900 mil personas mantienen esos proyectos; me pregunté si ese era realmente el punto importante
Es decir, que la mayor parte de lo que genera el valor económico del código abierto (Harvard lo estima en 8.8 billones de dólares) son “proyectos de una sola persona”, y casi ninguno de esos mantenedores recibe recursos adecuados
En toda esta conversación sobre riesgo de cadena de suministro, lo realmente peligroso es el mantenedor solitario, mal pagado y sobrecargado de trabajo
De dónde venga esa persona en realidad no me parece tan importante
Me da curiosidad si habrá estadísticas sobre qué pasa cuando un mantenedor solitario sufre un accidente de repente o abandona el proyecto
Con tantos datos, parece algo que valdría la pena investigar
Me gustaría saber si llega un nuevo desarrollador a continuar el proyecto, si lo reemplaza otro proyecto similar o si simplemente desaparece por completo
En la práctica, es más común que “lo atropelle un autobús” que el hecho de que el mantenedor pierda interés o ya no tenga tiempo y lo deje
Los escenarios que suelen darse son
La fortaleza del código abierto es que, aunque su creador desaparezca, se vuelva raro o cambie la licencia, alguien puede hacer un fork y mantenerlo vivo
En cambio, con el software comercial, si el creador —sea empresa o individuo— desaparece o cambia las cosas, ahí se acabó
A lo mucho te toca buscar un producto sustituto
Esa también es la razón por la que no dirijo Netflix
Al final depende de la cantidad de usuarios, la complejidad de la base de código y de si existen alternativas
Es una historia mucho más extraña que simplemente “lo atropelló un autobús”, y al final ese proyecto desapareció
Incluso en proyectos mantenidos por dos o más personas, en la práctica la mayoría de los commits suelen recaer al final en una sola persona
Enlace relacionado: https://github.com/11ty/eleventy/graphs/contributors
Si al menos hubieran revisado la actividad, habrían visto de inmediato que la mitad de todos los proyectos tiene 0 mantenedores
Significa que puedes dejarlo ahí sin necesidad de limpieza, ajuste o calibración
De hecho, a veces el problema son las actualizaciones, no el proyecto en sí
Me preocupa más el hecho de que el DoD use node
Siento que plataformas como npm tienen una superficie de ataque demasiado grande
El DoD es una de las organizaciones más grandes del mundo, así que también tiene tareas como enviar newsletters o páginas web para reservar visitas a bases de los Boy Scouts
Para ese tipo de cosas, usar node no me parece problema
Esos sistemas operan aparte de los sistemas críticos como el lanzamiento de misiles, y no pasa gran cosa si solo vandalizan una página para registrarse a un evento
Creo que muchos proyectos de una sola persona en GitHub en realidad no pasan de ser experimentos personales o bromas tipo "hello world"
No sé cómo sea en npm, pero en PyPI sobran ejemplos parecidos
Le di clic a “browse projects” y me salió esto: https://pypi.org/project/helloworld-eduardo/
De verdad, por muy borracho que estuvieras, a nadie se le ocurriría usar algo así en producción
El DoD es muy bueno para, si puede sacar algo gratis, convencer a todo el mundo de que “esto nos beneficia a todos” y al final terminar pagándole a un contratista externo
Dijeron que existe un “paquete con más de mil millones de descargas administrado por una sola persona”, y me quedé con la duda de qué significa exactamente eso
He oído muchas cosas buenas sobre el trabajo de alguien llamado Linus, y creo que lo he usado bastante
Como viene de un país que comparte frontera con Rusia, me hace preguntarme si eso también habría que tomarlo en cuenta
Llevo décadas desarrollando código abierto, casi siempre solo o a veces armando equipos de voluntarios
Quienes han trabajado con equipos de voluntarios saben que no es nada fácil
Claro que no es totalmente imposible, pero tampoco funciona bien con tanta frecuencia como solemos imaginar
Cuando funciona, por lo general es porque hay un “BDFL (dictador benevolente de por vida)” o porque todos avanzan alineados hacia un mismo objetivo
En mi caso, casi siempre fue más bien lo segundo
Su padre incluso pasó varios años en Moscú