¿Por qué los investigadores en CS (generalmente) tienen miedo de publicar el código fuente de sus experimentos?

Esta es realmente una muy buena pregunta. Hay muchas razones por las cuales esto podría suceder. En mi opinión, estos son los cuatro principales:

  1. El investigador científico trabaja para una empresa que tiene la intención de comercializar software que contiene la implementación real: está bien publicar sobre el algoritmo general, pero los detalles de implementación peculiares relacionados con la arquitectura específica del procesador es lo que hace que su software sea más rápido que otros competidores que quieran implementar el mismo algoritmo
  2. Alternativamente, un científico investigador puede haber firmado acuerdos de confidencialidad que le impiden compartir algunos detalles de implementación ( por ejemplo , porque utilizan una instrucción de hardware específica que aún no está disponible en los procesadores actuales y que acelera significativamente la ejecución de el programa)
  3. La mayoría de las veces, el código de los investigadores es muy feo y les da vergüenza mostrarlo a otros.
  4. La mayoría de las veces, el código de los investigadores es muy muy feo y , como resultado, puede contener errores muy graves . Pero bueno, en su configuración , ¡funciona bien! Entonces sus experimentos están bien, y ¿por qué molestarse, verdad? Si comienzan a publicar el código, pueden obtener un informe de error que luego requeriría una solución, lo que a su vez requeriría que vuelvan a ejecutar sus experimentos con el riesgo de cambiar sus resultados …

Este es un problema muy grave: el método científico consiste en poder reproducir los hallazgos de otros científicos. No publicar el protocolo exacto (en el caso de CS, esto incluye el código fuente) hace que sea muy difícil entender por qué funciona una solución dada, reproducirla.

Además, y con respecto a mis primeros dos puntos, es muy posible que a menos que uno use los detalles de implementación extravagantes de los autores de un artículo , no hay forma de que el método / algoritmo global que se propuso alcance el mismo nivel de rendimiento / eficiencia energética / etc.