¿Por qué los trabajos de investigación que mencionan software personalizado liberan el código fuente? [cerrado]

69

¿Hay alguna razón por la cual no se publica el código fuente del software mencionado en los trabajos de investigación? Entiendo que los trabajos de investigación tienen más que ver con la idea general de lograr algo que con los detalles de implementación, pero no entiendo por qué no publican el código.

Por ejemplo, este documento termina con:

Resultados

El sistema de dibujo lineal humano se implementa a través del marco Qt en C ++ usando OpenGL, y se ejecuta en una estación de trabajo con procesador Intel dual core de 2.00 GHz sin ninguna ayuda adicional de hardware. Podemos dibujar líneas interactivamente mientras el sistema sintetiza la nueva ruta y textura.

¿Mantienen el código fuente cerrado intencionalmente debido a una monetización que pretenden hacer con él o por derechos de autor?

Antoine
fuente
42
Por la misma razón, la mayoría de los documentos carecen de datos sin procesar (publicando solo "resultados" estadísticamente distorsionados).
SK-logic
2
Edité la pregunta. Quizás "mencionar" no es la mejor palabra. En algunos casos, algunos de los puntos que se hacen en los documentos dependen de manera crítica del software, pero el software es vaporware. Como en, para evaluar adecuadamente la validez del documento, alguien tiene que poder ejecutar el software.
Kaz
77
@JohnL yo diría que un documento puede depender críticamente del software sin estar sobre el software. Como una propiedad interesante del mundo que se demuestra / encuentra utilizando una herramienta de software. Si no podemos revisar la herramienta, ¿cómo podemos saber que la conclusión es correcta? (O más bien: ¡es mucho más fácil validarlo si podemos ver la herramienta!)
Andres F.
44
@Andres F: una posibilidad es implementar su propia versión del software utilizando las ideas descritas en el documento. Aunque esto es más trabajo, también podría decirse que tiene más valor: ejecutar la misma implementación nuevamente solo demuestra la implementación otra vez. Una nueva implementación ayuda a demostrar que las ideas mismas son válidas, y no una casualidad de algún detalle de implementación. Durante la reimplementación, se pueden descubrir problemas importantes que pueden no haberse notado o descrito antes.
Steve314
3
@KonradRudolph, por supuesto, no siempre estará disponible. Incluso puede dejar de estar disponible en un par de años desde la publicación (cintas borradas y reutilizadas, todo el grupo disuelto, papel triturado, etc.)
SK-logic

Respuestas:

71

Se me ocurren varias razones.

  • El código es demasiado grande para el artículo. Durante un corto período de tiempo, los proyectos interesantes fueron lo suficientemente cortos como para ser publicados con el documento que los describió. Esto todavía puede suceder, pero muchos proyectos de tamaño suficientemente grande para ser interesantes han crecido demasiado para ser publicados con los documentos que los describen.
  • Anfitriones públicos no gratuitos ni duraderos. Hasta hace poco, los servidores públicos baratos, duraderos y de fácil acceso no estaban disponibles.
  • Publicar un artículo es más fácil que publicar un proyecto. Algunas personas tienen tiempo para publicar un artículo o un proyecto, pero no ambos.
  • Incentivos vinculados al rol. Hace muchos años, le pregunté a un colega sobre el desarrollo de productos y las patentes y recibí la noticia de que la mayoría de la gente allí hacía una u otra. Al igual que con los escritores en papel (piense en la academia) y los desarrolladores de código abierto, las recompensas están orientadas a un producto de trabajo u otro.
  • Automotivación. El deseo de describir ideas o implementar código no siempre está presente en partes iguales en la misma persona. Muchos de mis profesores admitieron abiertamente que nunca codificaron mucho o estuvieron a muchos años de haberlo codificado con fluidez. Del mismo modo, muchos desarrolladores apenas quieren escribir comentarios en su código o cuando se comprometen a controlar la fuente.
  • La durabilidad del alojamiento de proyectos y el producto de trabajo también es un problema. ¿Quién quiere vincular a algún lugar que podría haber desaparecido dentro de unos años y, como resultado, disminuir el valor del documento?
  • Tradicion. Los editores están orientados a la revisión y publicación de documentos, pero es posible que no estén listos para asumir la misma evaluación para los proyectos.
    Además, los puntos de vista tradicionales sobre lo que es un nivel sensible de reproducibilidad varía entre los campos. Se espera que un químico que publica un artículo sobre un nuevo método de síntesis escriba suficientes detalles para que otro químico realice la síntesis. No se esperaría que enviara los eductos y el producto al diario. Se espera que los lectores que quieran usar / reproducir el documento compren sus propios eductos y realicen la síntesis ellos mismos en su laboratorio (aunque pueden pedir visitar el laboratorio para ver cómo se hace en la práctica). Tampoco se esperaría que un biólogo adjunte sus nuevos ratones transgénicos al papel. Esta visión sobre la reproducibilidad corresponde, por ejemplo, a proporcionar una descripción (pseudocódigo) del algoritmo en lugar de enviar la implementación real.
  • El código desnudo puede ser impactante . Se necesita mucho menos pulido para revisar un documento de longitud de papel que inspeccionar el código, revisar el código y garantizar la calidad de un proyecto. Tengo mucho código del que me sentiría más cómodo contándote que mostrándote. Esperemos que las cosas avancen a un punto en el que todos escribiremos un código hermoso, pero si su código se apresuró, apenas o no funciona por completo, es posible que se sienta más cómodo al no compartir los archivos ejecutables o la fuente.
  • Fuente cerrada No todos han aceptado el código abierto. Muchos documentos se escriben sobre el trabajo para DoD, proyectos comerciales o proyectos financiados de forma privada donde existen beneficios de la exposición del proyecto al público, pero todavía hay secretos comerciales o ventajas de primer mercado que podrían ser erosionadas por el código abierto o Otros productos de trabajo.
  • Publica más trabajo basado en este código. Si el código no se publica, puede dar al autor una ventaja en la publicación del trabajo de seguimiento. Otros investigadores competidores pueden necesitar reimplementar el trabajo, lo que puede llevar un tiempo precioso.
DeveloperDon
fuente
27
Si el documento depende del código fuente, entonces no debería publicarse. Si no puede publicar el código, no puede publicar el documento. Un documento que dice "nuestro programa hace estas cosas maravillosas", y no se puede evaluar el documento sin ejecutar ese programa, entonces el documento es un folleto publicitario para algún software.
Kaz
3
De acuerdo con Kaz: si para realizar una revisión por pares de la investigación necesita algo que no está disponible (datos, código, etc.), no debería ser aceptado por una revista revisada por pares. Casi todos los argumentos que menciona DeveloperDon han señalado también son válidos para la publicación de datos ... sin embargo, ahora hay un movimiento bastante grande en los últimos años hacia ella.
Joe
3
Buena publicación. También agregaría que a veces los científicos separados que recrean el software por su cuenta es PARTE de la repetibilidad del experimento. Si solo funciona de la forma en que 1 persona lo codificó, pero no de la forma en que otros lo codifican ... entonces los resultados pueden cuestionarse y los errores pueden identificarse.
Jimbo Jonny
44
su segundo al último punto es el más fuerte
l --''''''--------- '' '' '' '' '' ''
44
@AndresF. El código es absolutamente lo menos importante en un documento. Un documento es "Esto es lo que hice; aquí están mis métodos; aquí están mis resultados". El código es una codificación del método y debe producir exactamente los mismos resultados. Si desea reproducir los resultados del documento pero utiliza el código del documento, no ha reproducido nada; lo que se supone que debes hacer es leer la sección de métodos, idear tu propia implementación y luego escribir un documento al respecto cuando no puedas reproducir sus resultados.
Tacroy
40

Lea la presentación de Randall LeVeque sobre "Las 10 razones principales para no compartir su código (y por qué debería hacerlo de todos modos)" http://faculty.washington.edu/rjl/talks/LeVeque_CSE2011.pdf

Él argumenta convincentemente que el código es análogo a las pruebas en Matemáticas, y nos invita a considerar un mundo donde las pruebas no se publican, porque son demasiado largas o demasiado feas, o no funcionan en los casos extremos, o podrían valer la pena. dinero, o alguien podría robarlo ...

Básicamente, si estás haciendo ciencia, entonces debes publicar tu código. De lo contrario, estás haciendo alquimia y puedes volar de regreso a la edad oscura y morir de peste en lo que a mí respecta.

Hombre espacial
fuente
77
+1 Gran presentación. Me alegra que haya gente presionando por el cambio :)
Andres F.
+1 Gracias por el enlace; eso puede ayudarme en mis negociaciones en curso con mi jefe sobre la liberación de parte de nuestro código como Open Source.
Frank
Palabra! Buena analogía merece un voto de mi parte.
nullpotent
No estoy seguro de que esta comparación sea realmente buena para el propósito aquí. Soy químico (que preferiría ver mucho más código publicado), no soy matemático, pero las pruebas que he visto generalmente no dan cada pequeño paso. Entonces, en mi humilde opinión, corresponden más bien a una descripción condensada de pseudocódigo del algoritmo que al código fuente real.
cbeleites
27

En general, los programas utilizados para producir los resultados de los documentos son solo herramientas, y solo los resultados son importantes. Por lo tanto, no se colocan en el documento que presenta el contexto, la metodología, los resultados y una discusión sobre ellos.

Pero los resultados deben ser reproducibles. Y luego, cuando las fuentes de datos en las que se basa el documento están a disposición del público, generalmente también se requieren los programas que las transforman en resultados. A menudo se colocan "en algún lugar" en la Web si no plantea ningún problema de patentes / derechos de autor. O, al menos, los autores deben enviarle los programas si los solicita.

mgoeminne
fuente
2
No creo que tengas que enviar a alguien que te pida tu precioso código ... En mi humilde opinión, esta respuesta es incorrecta. Pero me gustaría ver un mundo de investigación donde la información es gratuita ...
Dirk
3
@Dirk Hasta donde yo sé, esto es relativamente común en los estudios empíricos de software. En la última presentación (aún no aceptada) de mi equipo en este dominio, uno de los revisores solicitó explícitamente un acceso público a nuestros datos, así como a algunos fragmentos de código. No entiendo por qué el código debería ser tan valioso. Es (generalmente) solo la realización de las ideas descritas en el documento. Publicar los programas es una forma de permitir que el lector compruebe si traducimos correctamente nuestras ideas en acciones.
mgoeminne
1
Hmm, ¿entonces sabes (a) quién es tu revisor y (b) dar tu código y datos a alguien que podría estar en competencia directa contigo?
Dirk
1
No realmente porque (a) Los revisores solicitan publicar el código en un lugar al que puedan acceder de forma anónima (o la autenticación la realiza la revista) (b) Dado que su artículo se publica, los otros investigadores pueden usar francamente la misma metodología / herramientas para replicar su estudio en otro conjunto de datos o incluso en el mismo conjunto de datos. Las réplicas son menos prestigiosas que el documento original, citarán su trabajo y ofrecen una fuerte validación de su documento. Por lo tanto, los autores originales están contentos de dejar que los demás hagan todo este trabajo por ellos.
mgoeminne
@Paul No veo la conexión con la publicación del código fuente. De todos modos, los buenos editores prestan atención a las notas que escriben los revisores para justificar sus decisiones. Por lo tanto, las menciones como "Es una mierda" no se tienen en cuenta. Si el editor estima que las recomendaciones de los revisores no son lo suficientemente relevantes, solicita la opinión de otro experto. Los estudiantes de posgrado no participan en el proceso de revisión. Y si no puede permitir que su documento sea aceptado después de algunos años de presentación, debe considerar que este documento (o su contenido) no es tan bueno.
mgoeminne
14

No es de código cerrado. El software simplemente no ha sido publicado en absoluto.

Respuesta corta:

Hay varias razones para no publicar el software, pero es poco común publicar el software de forma cerrada.

Respuesta larga:

Fuente cerrada significa que el software ha sido publicado y el código fuente no. Pero el caso común es que ni el software ni el código fuente han sido publicados .

En mi experiencia (trabajo en ciencias atmosféricas), los autores están muy contentos si los contacta y les pregunta si puede obtener su software (incluido el código fuente, por supuesto) para realizar investigaciones. Si voy a escribir un artículo con un proyecto basado en el de ellos, al menos obtendrán una cita (¡bueno!), Pero probablemente obtendrán un documento en coautoría (porque, por supuesto, no lo hicieron) t documente su software para que alguien pueda usarlo sin su ayuda). Un artículo de coautor relativamente barato, por lo que es aún mejor .

La verdadera pregunta es:

¿Por qué no publican el software?

Hay varias razones para esto:

  • El software publicado necesita documentación. Por lo general, a la gente no le gusta escribir documentación.
  • El software publicado puede atraer usuarios. Los usuarios pueden tener preguntas. Esto lleva tiempo (pero ver arriba).
  • El software publicado puede requerir un mantenimiento no trivial.
  • El software de publicación requiere alojamiento.

La lista podría hacerse más larga. Merece ser una pregunta separada, en Academia.SE, no aquí.

(Tenga en cuenta que en mi grupo, publicamos nuestro software, bajo licencia GPL )

gerrit
fuente
También es posible publicar el código, pero bajo una licencia que no permite modificaciones.
asmeurer
Ni siquiera había pensado en esta situación en la que los autores publicarían solo una versión compilada solo para demostrar que el software realmente existe, porque no ayuda a entender cómo lo hicieron, por cómo me refiero a los detalles de implementación. Me encanta leer la fuente ¡código!
alecail
8

Eso puede sonar cínico, pero en mi experiencia los trabajos de investigación no están escritos para ser fáciles de entender o simples de reproducir. En cambio, en la comunidad de investigación es más importante tener un artículo que suene y se vea muy científico. Por esa razón, la mayoría de los autores transforman su código en fórmulas matemáticas y tratan de demostrar que su algoritmo es matemáticamente correcto. Por lo general, el número de páginas para dicho artículo es limitado, por lo que no queda espacio para publicar el código. Sin embargo, por supuesto, esto no limitaría a ningún autor a vincular al código completo con una URL ...

Se podría suponer que si el código no se publica, o bien los autores quieren momentáneamente sus hallazgos, o (lo que personalmente creo que es el caso más a menudo) tienen miedo de que la gente vea que su investigación no es tan asombrosa como afirman. A menudo, los resultados solo se aplican a un número muy limitado de casos.

Además, he visto que de un simple programa / algoritmo se desprenden varios trabajos de investigación. Si se publicara el código, sería difícil escribir más documentos sobre el mismo tema. Por lo tanto, el conocimiento se retiene para publicarlo a lo largo del tiempo en pequeños segmentos.

Siempre tenga en cuenta que lo importante en las universidades no es tanto los resultados ni la aplicabilidad de la investigación, sino la cantidad de artículos que publica. Es triste pero cierto.

codingFriend1
fuente
13
Dicho esto, ¡intente preguntar a los investigadores! A veces le proporcionarán el código fuente.
Lucina
3
No creo que estés siendo completamente justo aquí: "En cambio, en la comunidad de investigación es más importante tener un artículo que suene y se vea muy científico". Esto implica que no hay valor para el contenido subyacente, casi porque no puedes entenderlo porque parece científico. La cantidad de artículos que publica es casi irrelevante si nadie está muy interesado en el contenido. Esta respuesta, en mi opinión, habla de tus prejuicios más que de la realidad.
temptar
2
@temptar Bueno, tal vez soy un poco negativo. Lo que realmente me sorprende es que la mayoría de los investigadores obviamente no están dispuestos a describir su investigación de una manera fácil de entender. Una vez tuve un profesor que, después de explicarme un algoritmo, agregó: "Pero en el artículo escribiremos esto más complicado para que suene más científico".
codingFriend1
66
@ codingFriend1: no puede ni debe generalizar sobre la base de una sola experiencia. Ese es un enfoque profundamente no científico. Debe considerar quién es el público objetivo para un especialista en investigación y, en muchos, muchos casos, no son las personas las que necesitan el tipo de explicación que considera necesario. Esto es para lo que tenemos comunicaciones científicas: para unir a los no especialistas.
temptar
3
Apoyo la codificación de la respuesta de Friend1. Esta ha sido una crítica común dirigida a la comunidad científica donde vivo, y específicamente a mi universidad (que sin embargo es la mejor del país): que los científicos se ven obligados a publicar artículos, cuanto más exóticos, mejor. "Publicar o perecer". Los científicos de áreas con las que estoy menos familiarizado también informan esto. Lo siento, pero en muchos lugares es la triste y generalizada verdad.
Andres F.
7

Aparte de la intención de monetizar, no veo una buena razón para dejar el código fuente fuera de los trabajos de investigación. Hay un pequeño movimiento de partida que propone suministrar el código fuente como regla para publicar cualquier investigación que dependa del software de alguna forma o forma. Puede leer más al respecto, se llama Manifiesto del Código de Ciencias .

Hulkmeister
fuente
1
+1 para el enlace! Encarna completamente mi creencia en lo que la ciencia y la investigación deberían ser.
Andres F.
6

Las respuestas anteriores omiten algunas razones prácticas que surgen con frecuencia en Computer Graphics (el área en la que se publicó el artículo mencionado por el autor). La publicación de código varía mucho entre los campos de CS; por ejemplo, en Machine Learning, el código generalmente se publica. En Human Computer Interaction, el código casi nunca se publica.

He publicado bastante código en Computer Graphics, y aunque creo que los autores deberían publicar su código, hay muchas razones simples, no teóricas de conspiración, por las que no lo hacen . Por ejemplo

1) La mayoría de los proyectos de investigación de Computer Graphics implican la colaboración entre múltiples investigadores, a menudo en diferentes instituciones, cada uno de los cuales proporciona una pieza del rompecabezas (es decir, algoritmos, bibliotecas, etc.). Para publicar el código de trabajo, todos los investigadores tienen que estar de acuerdo. Rara vez es una discusión simple y generalmente es más fácil evitar el problema.

2) A menudo, el código para un solo documento está incrustado en una base de código más grande que se está desarrollando dentro de un laboratorio. Esa base de código contendrá otro trabajo no publicado. Separar el código para un solo proyecto es mucho trabajo, a menudo sin beneficio inmediato para las personas que tienen que hacer este trabajo (ver el incentivo a continuación).

3) Las universidades a menudo tienen derechos de propiedad intelectual sobre el código. Por lo tanto, es necesario ponerse en contacto con una "oficina de innovaciones" que hará que su vida sea infinitamente difícil, deseando que documente el "invento" para que puedan patentarlo, etc., antes de abrirlo. En algunos casos, la universidad puede incluso negar el permiso para liberar la fuente (esto varía entre las instituciones y es muy complicado por (1))

4) Gran parte de la investigación de gráficos por computadora es realizada por corporaciones En ese caso, los autores tampoco son dueños del código y tienen que obtener el permiso de los abogados para publicar el código. Los abogados tienen poco o ningún incentivo para decir que sí.

5) No hay incentivo para publicar código. La mayoría del código de investigación de Computer Graphics nunca es utilizado por nadie más. Incluso si es así, para el código de uso general, generalmente solo recibe un reconocimiento (sin valor en términos de su CV). Si tienes suerte, recibirás una cita. Los comités de contratación y las agencias Grant generalmente no se preocupan un poco si publican su código. Por lo tanto, el tiempo dedicado a preparar el código para su lanzamiento es una pérdida de tiempo que podría haberse gastado en otro documento. (Hay personas que intentan cambiar esto activamente en Computer Graphics).

6) Hay incentivos para no publicar código. El código a veces puede convertirse en empresas nuevas, obtener licencias para empresas existentes, etc. Esto financia investigaciones futuras. Todos tenemos que comer.

Ryan Schmidt
fuente
# 2 es muy significativo. No solo puede ser una gran cantidad de trabajo separar el código que es relevante para un documento, sino que una vez que lo haga, puede encontrarlo fuera de contexto (es decir, lejos de las otras 100 herramientas, bibliotecas y configuraciones personalizadas de el laboratorio), es esencialmente inútil e imposible de entender o usar. Además, el "código de investigación" es a menudo muy frágil, diseñado lo suficiente como para demostrar el punto de un artículo, no para hacer un sistema de software robusto, y el investigador no tiene tiempo ni ganas de arreglarlo lo suficiente como para ser otra cosa que no sea un dolor de cabeza severo para alguien más.
Larry Gritz
5

Depende. Una persona que escribe un documento, o su supervisor, decide qué se debe hacer con el código fuente. A veces, las personas hacen que el proyecto sea de código abierto.

A veces, los proyectos generalmente son financiados por empresas, lo que significa que son de su propiedad. En esos casos, el autor del artículo no puede mostrar el código.

BЈовић
fuente
3

Por lo general, es una cuestión de limitaciones de página. Si el algoritmo es extremadamente corto, a menudo se representa, al menos como pseudocódigo, en el documento. Por otro lado, si la versión impresa del código subyacente es incluso un puñado de páginas largas, la impresión del código no dejaría espacio para la carne del artículo. Un artículo de revista que tiene diez páginas es un artículo largo.

No hacer que la fuente esté disponible crea un potencial de fraude. Debido a este potencial, muchas revistas ahora requieren que los autores envíen su código fuente como información complementaria (que se puede obtener de la revista si tiene acceso; puede haber una tarifa de suscripción considerable). Algunas otras revistas requieren que los autores publiquen su código fuente a cualquiera que lo solicite. Sin embargo, otras revistas todavía están en la edad oscura; el código fuente no se requiere para el envío y los autores no están obligados a publicarlo.

Lo más fácil es preguntar a los autores si pueden proporcionarle el código fuente. Las direcciones de correo electrónico de los autores suelen figurar en la mayoría de los artículos de revistas en la actualidad.

David Hammen
fuente
1
Creo que el código fuente que está disponible para su revisión no requiere que se incluya su texto completo en el documento real :) No solo por el potencial de fraude, sino que creo que es realmente útil para los revisores poder verificar dos veces cometer un error genuino ¡Especialmente si los codificadores fueran científicos y no programadores!
Andres F.
3

Mi experiencia como científico (5 artículos publicados) es que muchas veces la revista no requiere que se publique el código que se utilizó para crear los resultados. Eso no quiere decir que las revistas no acepten los guiones. Muchas revistas permiten material complementario en línea. Algunas revistas orientadas a algoritmos y similares (por ejemplo, Computadoras y Geociencias) requieren que agregue la fuente de un algoritmo, pero esto es más una excepción que una regla.

Además de la cultura en las revistas, para los científicos el código es solo un medio para un fin. Muchos no son desarrolladores de software profesionales. Debido a que muchos consideran el código solo como una herramienta para expresar la ciencia, no sienten la urgencia de publicarlo también. Además, pulir su código hasta el punto en que podría publicarse requiere mucho trabajo. A un científico se le paga por hacer ciencia, no por escribir software.

Paul Hiemstra
fuente
Pero el software es, en cierto modo, la prueba. De eso se trata la informática: los programas son pruebas. Creo que este es un caso de falta de confianza suficiente en los resultados, o un malentendido cultural sobre la importancia de producir una prueba de su investigación.
Andres F.
1
No estaba hablando de persecución informática, sino más ciencia en general. En CS teórica, muchas personas trabajan en algoritmos y pruebas en un sentido matemático. El software es solo una implementación, una idea de último momento.
Paul Hiemstra
Si su código es una nota al pie del documento, estoy de acuerdo. Si es algún tipo de verificación y tiene su propia sección, por pequeña que sea, entonces ES parte de la prueba o al menos de la validación. Si no va a publicar el código, entonces claramente no es relevante y ¡también podría eliminar cada mención de su documento!
Andres F.
2

La mayoría de las veces, el programa real es solo una herramienta para llegar al final, en lugar del producto por derecho propio. Dar detalles completos del código fuente sería similar a proporcionar un dibujo completo de la pluma utilizada para firmar el informe y / o los esquemas de la PC.

Dicho esto, especialmente cuando se invita a la revisión por pares, el código fuente estará disponible, aunque bajo alguna forma de Acuerdo de No Divulgación (NDA), ya que hay inherentemente Propiedad Intelectual incorporada dentro del programa.

Si está realmente interesado en el código, sugiero que el comentario de @Buttons sea ​​el mejor consejo: pregúnteles :)

Andrew
fuente
1

Mucho depende del propósito para el que se escribió el código. Si fuera a demostrar un punto, puede ser que no esté optimizado y, por lo tanto, no sea ideal que se libere. Si los conceptos y la metodología subyacentes son válidos, entonces debería ser posible recrear el resultado del código desde cero. Puede haber problemas de derechos de autor y propiedad también.

En principio, no es técnicamente imposible liberar el código, pero las razones por las cuales podría no ser lanzado son variadas. Probablemente no haya una respuesta simple a esta pregunta por esa razón. En casos específicos, tal vez podría preguntar a los investigadores interesados.

temptar
fuente
1

El documento que citó ya tiene 28 páginas, y la mayor parte del contenido trata sobre las decisiones de diseño relacionadas con la resolución del problema (indicado en el título).

El código es el paso final para validar el diseño. No es trivial, pero no es la parte que agrega valor en los resultados del trabajo, especialmente si tuviera que considerar el espacio que ocuparía.

No todos los casos son iguales. Algunos documentos dan código fuente, o al menos pseudocódigo. Algunos editores no lo permiten. Algunos lo permiten, pero debido al espacio, los autores no lo incluyen. Una revista donde publiqué el código fuente lo formateó como "figuras" y la versión electrónica lo tiene como datos de imagen, aunque lo envié como texto.

Fuhrmanator
fuente
1

Los incentivos son importantes y los incentivos de los investigadores son generalmente para garantizar que puedan producir un flujo constante de documentos que se incrementen mutuamente. Los estudiantes graduados generalmente necesitan 3-5 trabajos publicados que pueden convertir en capítulos individuales de su tesis para graduarse. El profesorado junior necesita generar tantas publicaciones como sea posible antes de su revisión de la tenencia. Por esa razón, la mayoría de los trabajos académicos son realmente trabajos nen serie. Por ejemplo, el documento al que hace referencia se basa en un documento que el mismo grupo publicó un año antes y analiza el terreno que probablemente cubrirá el próximo documento.

Publicar el código fuente potencialmente permite que otro investigador en un grupo diferente produzca papel n+1antes de que el autor original haga o al menos produzca un artículo que cubra una fracción significativa del terreno que el autor esperaba cubrir como parte de este flujo de investigación. Si eso sucede, el estudiante graduado podría encontrarse fácilmente pasando otros 6-12 meses en la escuela de posgrado para producir suficientes resultados de investigación para graduarse. El miembro de la facultad puede terminar con un artículo publicado menos cuando llegue el tiempo de revisión de la tenencia. Ambos son, obviamente, grandes golpes para las carreras del investigador. Agregue el hecho de que las aplicaciones académicas a menudo son parte de los esfuerzos de investigación de varias personas dentro de un grupo de investigación (ya sea directamente o porque comparten ciertos componentes) y existe presión dentro del grupo de investigación para no publicar código que pueda terminar lastimando a alguien que trabajas todos los días.

Con frecuencia, recibe discusiones similares en campos en los que la recopilación de datos sin procesar consume mucho tiempo y se distribuye mucho. En astronomía, por ejemplo, un grupo de investigación puede pasar años reuniendo datos antes de tener suficiente información para publicar un artículo. Pero luego usarán esos datos para producir una serie de documentos. Los grupos de investigación son muy reacios a compartir más de sus conjuntos de datos de lo que es absolutamente necesario porque se vuelve demasiado fácil para otros grupos dedicar tiempo libre al tiempo invertido en recopilar los datos para obtener las recompensas de analizar realmente los datos.

Eventualmente, gran parte de este código se lanzará al igual que los datos astronómicos eventualmente se liberarán. Eso ocurre a menudo cuando el autor llega al final de esa serie de documentos o cuando la mayoría de los grupos de investigación que están trabajando en temas similares tienen motores similares, por lo que liberar el código ya no le da a un nuevo investigador una ventaja competitiva.

Sería ideal para la ciencia si los datos y el código se publicaran más rápidamente. Pero eso a menudo dañaría al investigador científico y esos son los incentivos importantes en este caso.

Justin Cave
fuente
"Publicar el código fuente potencialmente le permite a otro investigador en un grupo diferente producir papel n + 1 antes de que el autor original lo haga o al menos producir un papel que cubra una fracción significativa del terreno que el autor esperaba cubrir como parte de esto flujo de investigación ". Esto no me suena tan fácil. La mayoría de las personas (incluido yo mismo) tendría dificultades para comprender el tipo de código que escriben los investigadores, sin la ayuda de los autores, y mucho menos extenderlo. ¿Conoces casos en los que esto realmente ha sucedido?
Faheem Mitha
1

Como alguien que ha hecho esto (en el lado del estudiante) varias veces en el pasado: a menudo los profesores que escriben el artículo ni siquiera ven el código fuente ellos mismos. Harán que sus estudiantes graduados escriban el código, y luego solo pedirán el ejecutable final (o incluso solo una confirmación del resultado) cuando esté completo.

Además, a menudo el código escrito no es muy legible de todos modos, porque los estudiantes simplemente lo piratearon para hacerlo, y porque (aunque son muy brillantes) los estudiantes de posgrado sin experiencia en el mundo real tienden a no ser los mejores codificadores del mundo ...

BlueRaja - Danny Pflughoeft
fuente
1

La mayoría de las razones en las que puedo pensar ya se han planteado aquí, pero pensé que agregaría dos más que realmente me sucedieron:

El diario no tiene idea de qué hacer .

Para uno de los trabajos en los que estaba trabajando, decidí que estaba absolutamente, sin ninguna duda, incluiría el código fuente (todo el punto del documento era la visualización de datos) y datos de ejemplo para acompañarlo. Entonces, junto con la presentación, adjunté los Suplementos electrónicos 1 y 2: un script R con mi código y un archivo CSV con los datos necesarios para dicho script R.

Resulta que el diario solo puede tomar suplementos electrónicos si han sido calzados en archivos de Word. Después de intentar durante la mayor parte del día obtener el script R en esa forma, me di por vencido y decidí no incluir el código como suplemento. Podría haberlo alojado en mi universidad, pero como estudiante de posgrado sabía que iba a perder mi cuenta allí en ~ 1 año; el código abierto no sirve de nada si se supera de inmediato con linkrot.

Terminé alojándolo en GitHub y poniendo una referencia a eso en el documento, pero eso fue porque realmente quería que entrara el código. Puedo ver, especialmente porque la mayoría de las personas en mi campo no usan algo como GitHub, solo decidiendo que el esfuerzo no valdría la pena para un puñado de personas que lo descargarían y que podrían enviarme un correo electrónico de todos modos si realmente lo desean.

El diario simplemente no está interesado.

Inserté algunos pequeños detalles sobre el código en sí mismo en un documento a pedido de un revisor, pero es una revista clínica (léase: nadie codifica), no permite suplementos electrónicos y, nuevamente, agregar el código fuente probablemente habría sido más problemas de los que valió la pena.

Irónicamente, si alguien fue a buscar el código, es (o pronto lo será) de código abierto, pero ya estaba corriendo al borde de 'Esto está creciendo distraídamente técnico' y decidí que el resumen, 'haga feliz al crítico' 'mencionar era todo lo que iba a hacer.

Fomite
fuente
0

Muchas veces la implementación (es decir, el software no importa) pero cada vez más la implementación sí afecta los resultados.

Cada vez que la implementación es importante ... ¡el código fuente definitivamente debe estar disponible! Cuanto más dependan los resultados de la implementación o de los métodos computacionales, más importante será publicar el código fuente.

Trevor Boyd Smith
fuente
En cuanto a quién / dónde almacenará el código fuente. Idealmente, la revista en la que se publica el artículo almacenará la totalidad del código fuente. Sin embargo, muchas de las revistas más importantes no almacenan tanto el artículo como el código fuente. En mi opinión, si la revista no tiene la capacidad de almacenar todo el código fuente, el autor es responsable de encontrar un lugar de almacenamiento web direccionable para el código fuente.
Trevor Boyd Smith
0

Me gustaría agregar algunos puntos sobre el tipo de código con el que trato como quimiométrico (químico haciendo análisis de datos):

  • Las personas que escriben código de análisis de datos (como yo) son relativamente pocas en comparación con las personas que usan ese código. "Código personalizado escrito en casa" no significa que los autores lo hayan escrito; podría ser el código de un compañero para que los autores no puedan publicarlo.

  • Se puede planificar una publicación separada del código, y el autor del código (o el supervisor) puede estar preocupado de que la novedad se pierda si el código se ha hecho público (parcialmente) antes.
    Incluso si la revista donde está destinada la publicación de código no se opone a que el código haya estado disponible públicamente anteriormente, la preocupación pura del supervisor (o alguien en la oficina de IP) puede ser suficiente para detener la publicación del código.

  • El código de análisis de datos a menudo se adapta a los datos. No tiene mucho sentido sin los datos. (Puede argumentar que los datos deben publicarse de todos modos, pero esa es una pregunta diferente y fuera de tema aquí.)
    De cualquier manera, en mi instituto, archivamos datos en bruto y código de análisis de datos junto con el documento. La política predeterminada no está (¿todavía?) Para que estén disponibles públicamente , pero sin duda estarán disponibles a pedido.

  • (La visión tradicional sobre qué es la reproducibilidad en química corresponde más bien a una descripción (posiblemente pseudocódigo) del algoritmo que a enviar el código fuente real)

  • Muchos de mis colegas usan herramientas interactivas para su análisis de datos que no registran los pasos del análisis de datos. Por lo tanto, no hay código fuente que pueda publicarse. El análisis de datos corresponde menos a una programación que a un enfoque de laboratorio: usted hace cosas y escribe lo que hace y observa en su libro de laboratorio.

Cbeleites
fuente
Esta respuesta es desde el punto de vista del análisis de datos, más bien un nicho particular. Sin embargo, esta pregunta está vinculada desde academia.SX, por lo que los que no son informáticos pueden venir a leer esto.
cbeleites