Soy el responsable de mantener un paquete en hackage, lrucache. Recientemente recibí una solicitud de función para agregar instancias para Binary
y NFData
. Ambas cosas son útiles, y no tengo ningún problema con esas instancias, en principio.Cómo tratar solicitudes de funciones que agregan nuevas dependencias de paquetes
Sin embargo, ambos presentan nuevas dependencias de paquetes, y quiero mantener la lista de dependencias de mi paquete lo más mínima posible. ¿Hay una forma sensata de manejar esto? Probablemente hay más de veinte paquetes diferentes que proporcionan clases de tipos útiles que podrían implementar las estructuras de datos en lrucache
, y obtener algún beneficio de.
Obviamente, agregar todos ellos como dependencias no es un comienzo. Pero, ¿qué más se puede hacer?
Puedo agregar banderas a lrucache.cabal que permitirán compilar varias instancias. Eso funciona, en términos de hacer que la lista de dependencias sea mínima, excepto cuando la desee. Pero es horrible en el mundo real, porque no se pueden especificar indicadores de compilación en las secciones dependientes de la compilación. Entonces puede confiar en un paquete con una bandera en particular, pero no especificar esa dependencia. Esto rápidamente se reduce a casi inutilidad.
Puedo crear un conjunto de paquetes de instancias huérfanas. Esto tiene la ventaja de permitir que dependencias en esas instancias se especifiquen en una sección dependiente de la compilación. Su principal desventaja es agregar una tonelada de paquetes adicionales a hackage, y la necesidad de mantenerlos como paquetes separados.
¿Qué más puedo hacer? ¿Qué es lo correcto?
El enfoque del "paquete de instancias huérfanas" parece ser una estrategia común, al menos. Lo correcto es probablemente inventar una mejor administración de la dependencia, pero ... –
@C. A. McCann, personalmente no me gusta cuando el software usa './configure--enable-Z'. Me gustan las cosas simples: tener un paquete marcado como "instalado" significa que está instalado, no "está instalado con las opciones X e Y, pero no Z". Quizás Hackage podría organizar mejor los paquetes de instancias huérfanas, pero no creo que sean ilegítimos en concepto. – gatoatigrado
@gatoatigrado: Estoy de acuerdo. Cabal organizarlos mejor también calificaría como "mejor gestión de dependencia" como mencioné, así que siéntete libre de inventarlo. :] No estoy seguro de cuáles serían los obstáculos para implementar un sistema como ese. –