Mientras investigaba un área temática, me encontré con una serie de artículos que pretenden mejorar el estado del arte y que han sido publicados en medios respetados (por ejemplo, CVPR, ICIP). Estos documentos a menudo están escritos de una manera que oscurece algunos de los detalles y sus métodos pueden carecer de detalles. Al ponerse en contacto con estos autores para obtener más información y preguntarles si tendrían la amabilidad de poner a disposición su código fuente, dejan de responder o rechazan la oferta.
¿Por qué los investigadores de informática son reacios a compartir su código?
Habría esperado que la difusión de su código fuente tuviera efectos positivos para el autor, por ejemplo, mayor reconocimiento y visibilidad dentro de la comunidad y más citas. ¿Qué me estoy perdiendo?
Para el futuro, ¿cuáles son algunas formas mejores de acercarse a otros investigadores que resulten en un mayor éxito para obtener una copia de su código fuente?
Por qué los investigadores pueden ser reacios a compartir su código: en mi experiencia, hay dos razones comunes por las que algunos/muchos investigadores no comparten su código.
Primero, el código puede dar a los investigadores una ventaja importante para el trabajo de seguimiento. Puede ayudarlos a adelantarse a otros investigadores y publicar investigaciones de seguimiento más rápido. Si los investigadores tienen planes de hacer una investigación de seguimiento, mantener su código en secreto les da una ventaja competitiva y les ayuda a evitar que otra persona se los lleve. (Esto puede ser bueno, o puede ser malo; no estoy tomando una posición al respecto).
En segundo lugar, una gran cantidad de código de investigación es, bueno, calidad de investigación. Los investigadores probablemente pensaron que era lo suficientemente bueno como para probar las hipótesis del artículo, pero eso es todo. Puede tener muchos problemas conocidos; puede no tener ninguna documentación; puede ser complicado de usar; podría compilarse en una sola plataforma; Etcétera. Todo esto puede hacer que sea difícil de usar para otra persona. O bien, puede llevar mucho trabajo explicarle a otra persona cómo usar el código. Además, el código puede ser un prototipo, pero no de calidad de producción. No es inusual tomar atajos durante la codificación: atajos que no afectan los resultados de la investigación y están bien en el contexto de un trabajo de investigación, pero que serían inaceptables para el código de calidad de producción implementado. Algunas personas son perfeccionistas y no t me gusta la idea de compartir código con debilidades conocidas o donde tomaron atajos; no quieren avergonzarse cuando otros ven el código.
La segunda razón es probablemente la más importante; Es muy común.
Cómo acercarse a los investigadores: Mi sugerencia es reenfocar sus interacciones con esos investigadores. ¿Cuáles son tus objetivos reales? Sus objetivos reales son comprender mejor sus algoritmos. Entonces, comience desde esa perspectiva y actúe en consecuencia. Si hay algunas partes en el trabajo que son difíciles de seguir o ambiguas, comience leyendo y releyendo su trabajo, para ver si hay algunos detalles que podría haberse perdido. Piense mucho acerca de cómo llenar los espacios que faltan. Haz un esfuerzo serio por tu cuenta, primero.
Si está en un nivel de investigación y se ha esforzado seriamente por comprender, y aún no comprende... envíe un correo electrónico a los autores y pídales que aclaren los puntos específicos que cree que no están claros. . No moleste a los autores innecesariamente, pero si muestra interés en su trabajo y tiene una buena pregunta, muchos autores estarán encantados de responder. Simplemente están agradecidos de que alguien lea sus artículos y esté lo suficientemente interesado en su trabajo como para estudiar su trabajo cuidadosamente y hacer preguntas perspicaces.
Pero asegúrese de hacer buenas preguntas. No seas perezoso y pide a los autores que aclaren algo que podrías haber descubierto por tu cuenta con más pensamiento. Los autores pueden sentir eso y lo descartarán como una plaga, no como un colega valioso.
Muy importante: comprenda que mi respuesta que explica por qué los investigadores podrían no compartir su código pretende ser una respuesta descriptiva , no una respuesta prescriptiva . Enfáticamente, no estoy haciendo ningún juicio sobre si sus razones son buenas, o si los investigadores tienen razón (o no) para pensar de esta manera. No estoy tomando una posición sobre si los investigadores deben compartir su código o no; Sólo estoy describiendo cómo se comportan algunos investigadores. Lo que deberían hacer es una bola de cera completamente diferente.
El cartel original pedía ayuda para comprender por qué muchos investigadores no comparten su código, y eso es lo que estoy respondiendo. Los argumentos sobre si estas razones son buenas son subjetivos y están fuera de tema para esta pregunta; si desea tener ese debate, publique una pregunta por separado.
Y, por favor, les insto a que usen un poco de empatía aquí. Independientemente de si cree que los investigadores tienen razón o no para no compartir su código en estas circunstancias, comprenda que muchos investigadores tienen razones que les parecen válidas y apropiadas. Trate de entender su forma de pensar antes de criticarlos reflexivamente. No estoy tratando de decir que sus razones sean necesariamente correctas y buenas para el campo. Solo digo que, si desea persuadir a las personas para que cambien sus prácticas, es importante comprender primero las motivaciones y las fuerzas estructurales que han influido en sus acciones actuales, antes de lanzarse a tratar de intimidarlas para que actúen de manera diferente.
Apéndice: definitivamente secundo la recomendación de Jan Gorzny de leer el artículo en SIAM News que él cita. es informativo
Stephen, tengo la misma experiencia que usted y mi explicación es que la relación costo/beneficio es demasiado baja.
Empaquetar una pieza de software para que pueda ser utilizada por otra persona es difícil, a menudo incluso más difícil que escribirlo en primer lugar. Requiere, entre otros:
Además, debería estar disponible para responder preguntas y corregir errores, varios años después de graduarme, cuando ya trabajo a tiempo completo en otro lugar y tengo hijos pequeños.
Y todo ello, sin recibir ningún pago especial ni crédito académico por todo ese esfuerzo.
Una posible solución que pensé recientemente es crear una nueva revista, Journal of Reproducible Computer Science , que aceptará solo publicaciones cuyos experimentos se puedan repetir fácilmente. Aquí están algunos de mis pensamientos acerca de tal diario:
Los trabajos enviados deben tener una sección de reproducción detallada , con (al menos) las siguientes subsecciones: - requisitos previos : qué sistemas, software de terceros, etc., se requieren para repetir el experimento; - instrucciones - instrucciones detalladas sobre cómo repetir el experimento. - licencias : ya sea una licencia de código abierto o de código cerrado, pero debe permitir el uso gratuito con fines de investigación.
El proceso de revisión requiere que cada uno de los 3 revisores diferentes, con diferentes antecedentes, pase por esta sección, utilizando diferentes computadoras y sistemas operativos.
Después del proceso de revisión, si el artículo es aceptado para su publicación, habrá otro paso previo a la publicación , que tendrá una duración de un año. Durante este paso, el artículo estará disponible para todos los lectores, y tendrán la opción de repetir el experimento y también contactar al autor en caso de que haya algún problema. Solo después de este año, el artículo será finalmente publicado.
Esta revista permitirá a los investigadores obtener crédito por el difícil e importante trabajo de hacer que su código sea útil para otros.
EDITAR: ¡Ahora veo que alguien ya pensó en esto! https://www.scienceexchange.com/reproducibilidad
"Science Exchange, PLOS ONE, figshare y Mendeley han lanzado la Iniciativa de Reproducibilidad para abordar este problema. Es hora de comenzar a recompensar a las personas que se toman el tiempo extra para hacer el trabajo más cuidadoso y reproducible. Los incentivos académicos actuales ponen énfasis en la novedad , que viene a expensas del rigor. Los estudios enviados a la Iniciativa se unen a un grupo de investigación, que se replicará selectivamente a medida que haya fondos disponibles. La Iniciativa opera sobre una base de aceptación porque creemos que el consenso científico sobre el más sólido , a diferencia de simplemente los más citados, el trabajo es una señal valiosa para ayudar a identificar hallazgos reproducibles de alta calidad que se pueden construir de manera confiable para avanzar en la comprensión científica".
Este artículo en SIAM News arroja algo de luz sobre la primera pregunta, por lo que podría valer la pena echarle un vistazo. Argumenta, para una audiencia matemática, por qué los investigadores deben publicar su código fuente y enumera muchas de las razones por las que los investigadores no comparten su código fuente. Lo hace mediante una ingeniosa analogía, que compara el intercambio de pruebas matemáticas con el intercambio de código fuente. Echar un vistazo; tiene una lista bastante extensa de razones por las que los investigadores podrían preferir no compartir su código fuente (así como algunas respuestas que argumentan que esas razones no son buenas).
Aquí hay una cita:
Las diez razones principales para no compartir su código (y por qué debería hacerlo). Randall J. LeVeque. Noticias SIAM, 1 de abril de 2013.
Al compartir código hay varios problemas:
El primer problema son los derechos de autor, ya que algunas investigaciones/proyectos de CS están financiados por ciertos industriales/organizaciones de financiación que desalientan el intercambio de información confidencial, como algoritmos, códigos o software, mientras se publican en publicaciones periódicas públicas.
De hecho, hay documentos basados en ciertos datos (recopilados de la ejecución del código) que, lamentablemente, los autores modifican manualmente. Si comparten el código, detectar su error/error/modificaciones se vuelve muy fácil, lo que lleva al fracaso en su maestría/doctorado o proyecto de investigación, lo cual no es deseable.
En la investigación de CS y especialmente en la publicación, el desarrollo de código, particularmente un código largo y complejo, es una tarea no trivial y en la mayoría de los casos se considera un activo generador de dinero y papel. Al compartir el código con el público, revelan hechos con mucho detalle que pueden degradar su contribución en futuras investigaciones. Además, es posible que no sean los únicos que pueden regenerar el artículo y dar crédito a esa investigación y código en particular. En la mayoría de los casos, los estudiantes de maestría eligen un algoritmo o método, lo modifican ligeramente y presentan una tesis y un artículo basados en él, que pueden contradecir los hallazgos y afirmaciones del primer autor. Recuerde a Thoma Herdon , un estudiante de posgrado que criticó los hallazgos de dos eminentes economistas de la Universidad de Harvard ( aquíes el enlace). Si se revelan los códigos en CS, es probable que las consecuencias sean catastróficas (puede que no haya demasiados casos, pero si sucede, será catastrófico).
Los códigos son propiedad vital para la mayoría de los investigadores para realizar experimentos e investigaciones. Si tiene un código, simplemente puede jugar con él y modificarlo para generar un nuevo conjunto de hallazgos que podrían ser más valiosos que los hallazgos iniciales. Sin tener autoría del autor inicial, no hay crédito a los mismos.
Sin embargo, Elsevier introdujo recientemente una nueva característica utilizando COLLAGE llamada Executable Papers que actualmente está disponible para la revista Computers & Graphics mediante la cual los códigos y los datos están disponibles y los investigadores pueden modificar el código y los valores de entrada para jugar.
Espero eso ayude.
No soy un investigador de CS per se, pero estoy escribiendo código de Android para mi investigación en física atmosférica, por lo que mi visión es algo limitada. Sin embargo, puedo decir desde mi propia experiencia que gran parte del código que estoy desarrollando y probando es parte de un proyecto mayor que está desarrollando el equipo del que formo parte. Es una combinación de las reglas a las que estoy sujeto y la necesidad de mantener una parte del código en secreto por el momento.
Piotr Migdal
Esteban Tierney
miguel pankov
Faheem Mitha
DW
marsupial dikran
Esteban Tierney
marsupial dikran
marsupial dikran