La gestión de dependencias en software es un aspecto crítico para la seguridad y mantenibilidad. En este artículo, un desarrollador con experiencia en Go y Ruby argumenta que el modelo de "publicar un paquete" es inherentemente inseguro y propone que las dependencias se obtengan directamente desde el sistema de control de versiones (VCS).
Go Modules identifica dependencias por URL, las obtiene directamente del VCS y verifica hashes contra sum.golang.org, lo que facilita la auditoría: basta con revisar los commits entre versiones. En cambio, RubyGems, npm y otros sistemas publican archivos .gem o .tar.gz que pueden no corresponder con el repositorio fuente, perdiendo el historial de commits y dificultando la detección de código malicioso. Ejemplos como el compromiso de event-stream o xz demuestran cómo los ataques se centran en la fase de publicación, no en el repositorio.
El autor sugiere que Bundler podría incorporar una opción 'use-git' para forzar el uso de git en todas las dependencias, reproduciendo en Ruby la transparencia de Go. Aunque cambiar el modelo es complejo, la alternativa de parches como cooldowns o IA no resuelve el problema de raíz. El texto aboga por un ecosistema donde la auditoría sea sencilla y confiable, siguiendo el enfoque de Go.
