¿Debo dar atribución a las dependencias de desarrollo transitivas?
Estoy trabajando en una biblioteca / herramienta cli para agrupar licencias de dependencia en un solo archivo. Actualmente, estoy tratando de licencias de cobro revertido: dependencias directas, transitiva y dependencias directas dev -dependencies .
En otras palabras, estoy tratando de recopilar licencias de paquetes que están instalados en node_modules. El administrador de paquetes no instala las dependencias de desarrollo transitivas, debido a la naturaleza misma de las dependencias de desarrollo.
Me preocupa si las porciones de código de esas dependencias transitivas de alguna manera se pueden incluir en los paquetes instalados.
Por ejemplo: el proyecto "A" depende del paquete "B". El paquete "B" tiene Transpiler "C" como dependencia de desarrollo. El código generado por Transpiler "C" en el paquete "B" incluye no solo el resultado de la transpilación simple, sino también algunos polyfill para una función, que no está disponible en los navegadores más antiguos, de Transpiler "C". Pero, debido a que Transpiler "C" es una dependencia de desarrollo transitiva, no está instalado en node_modules del Proyecto "A", por lo que sin instalarlo manualmente, la licencia de Transpiler "C" -s no se puede obtener correctamente, ¿verdad? Incluso si pudiéramos, tendremos que buscar las dependencias / dev-dependencies de Transpiler "C" también, etc., etc.
En este caso hipotético, solo tenemos una dependencia de desarrollo transitiva, pero, en escenarios del mundo real, podría haber cientos. Podría haber varias versiones del mismo paquete definidas como una dependencia dev transitiva en diferentes paquetes. Al instalar manualmente las dependencias de desarrollo transitivas para recopilar información de licencia, estas dependencias de desarrollo transitivas podrían tener sus propias dependencias de desarrollo, que también será necesario instalar. Este proceso tendrá que repetirse hasta que se instalen todas las dev-dependencies transitivas de todas las dev-dependencies transitivas.
La pregunta es: ¿Debería preocuparme por recopilar información de licencia sobre dependencias de desarrollo transitivas? Y si debería, ¿hasta qué punto?
Ya me preocupo por las dependencias transitivas habituales, pero me preocupan las dependencias dev transitivas.
Respuestas
Este es un escenario realmente complicado, por lo que las herramientas automatizadas de cumplimiento de licencias solo pueden llegar hasta cierto punto. Su análisis parece correcto en general.
En la práctica, esperaría que la licencia de B no solo cubra el código fuente original de B, sino también el código transpilado de B (al menos si B se distribuye en forma transpilada). Esto evitaría perfectamente el problema de las dependencias de desarrollo transitivas. Sin embargo, esto apunta a un problema más general: los metadatos de la licencia pueden no ser precisos, otra razón por la que las herramientas automatizadas solo llegan hasta cierto punto.
Si está diseñando una herramienta de uso general, puede ser útil agregar una opción que también active el análisis de las dependencias de desarrollo y las dependencias de desarrollo transitivas, obteniendo metadatos para las herramientas mencionadas en los metadatos del paquete (no es necesario instalarlas). De forma predeterminada, no esperaría que las dependencias de desarrollo tuvieran ningún efecto directo sobre el estado de la licencia (aunque, como explica correctamente, los polyfills especialmente podrían violar esta expectativa).