Cómo vincular código a publicaciones

40

Los trabajos académicos en computación científica (y muchos otros campos, hoy en día) generalmente involucran cierta cantidad de código o incluso paquetes de software completos que se escribieron específicamente para ese papel o se usaron para obtener resultados en el papel. ¿Cuál es la mejor manera de ayudar a los lectores del periódico a acceder al código? Mi enfoque actual es poner un enlace a un repositorio de Github (junto con una etiqueta de versión particular) en el documento o en una cita.

David Ketcheson
fuente
2
Compartir el código es una gran idea y debería hacerse más. Sé que podría ser mejor al proporcionar el código relevante para un artículo. Un repositorio de Github parece una buena solución. Ciertamente, es mucho mejor que incluir el código fuente en un apéndice, lo que he visto hacer para esfuerzos de codificación más pequeños.
Barron
44
Esta es una pregunta relacionada con MO.
JM
@JM ¡Gracias, las respuestas en MO son muy buenas!
David Ketcheson el
tenga en cuenta que puede publicar cuadernos de ipython en github y se representan, a excepción de las partes interactivas
denfromufa
1
@denfromufa Desafortunadamente, Github desactiva Mathjax, por lo que las matemáticas tampoco se representan. Eso lo hace bastante inútil para los campos más relevantes. Pero siempre hay nbviewer.
David Ketcheson

Respuestas:

17

Bueno, creo que tienes algunas opciones.

  1. Si tiene una página estable, como una patrocinada por una universidad u otra institución sin fines de lucro que es poco probable que desaparezca pronto, podría publicarla allí.
  2. Puede usar un servicio como Github o Bitbucket o SourceForge para distribuir el código.
  3. Si el código tiene un valor general marginal (es un código de análisis para un conjunto específico de condiciones, etc.), puede hacer que el código esté disponible como una descarga de "información complementaria" con el documento en el que lo usa.
  4. Podrías usar alguna combinación de lo anterior.

Sin embargo, en cualquiera o en todos estos casos, debe indicar el origen claramente en el artículo e indicar qué tipo de licencia es (GPL, Creative Commons, etc.), para que no haya problemas relacionados con la propiedad intelectual en el futuro.

aeismail
fuente
66
Creo que uno debería poner el código en el lugar más probable para sobrevivir, y en varios lugares si es posible. Las páginas universitarias parecen menos propensas a sobrevivir que los servicios de alojamiento, por ejemplo. También tiene sentido que el diario haga alguna instantánea disponible. Desafortunadamente, ningún diario que conozca tiene repositorios.
Faheem Mitha
1
Un estudiante probablemente no debería poner el software en una página de inicio personal; sin embargo, diría que para un código de investigación típico, probablemente se gane más distribuyéndolo en una página asociada con un grupo de investigación que en una página externa donde es probable que se pierda la atribución. En cuanto a las revistas, es cierto que no hacen alojamiento de repositorios. Sin embargo, creo que la capacidad de tener "información complementaria" en forma del código de investigación satisface la mayoría de los requisitos del desarrollo de software científico responsable. (Si es necesario)
Aeismail
Mi sensación es que las páginas de la universidad tienen más probabilidades de perderse que los sitios de alojamiento regulares. Por supuesto, la mayoría de los sitios de alojamiento que son populares hoy en día (Bitbucket, Github, Google Code) no han existido tanto tiempo. Por otro lado, Sourceforge, por ejemplo, ha existido por un tiempo.
Faheem Mitha
Hay otros problemas a tener en cuenta; Las inquietudes de PI y las regulaciones de la universidad o el gobierno también pueden controlar la elección de los repositorios. Pero el argumento en contra es que hay una serie de códigos ( NAMD es un ejemplo importante) que han tenido una distribución exitosa en sitios propiedad de universidades. En general, la "importancia" del código determinará qué tan visible es. Dudo que un código que desarrolle una base de usuarios significativa desaparezca por completo.
aeismail el
1
Es cierto, pero si el código es oscuro no significa que esté bien si desaparece. Y uno esperaría que la mayoría del código científico estuviera bajo una licencia libre y sin restricciones irrazonables. Creo que el NIH, por ejemplo, ahora exige esto para el trabajo desarrollado con dinero del NIH (contribuyente). Creo que este debería ser el caso para todos los proyectos financiados por los contribuyentes.
Faheem Mitha
8

Gran pregunta y excelentes respuestas, pero creo que ninguna aborda adecuadamente la cuestión de la persistencia, si el objetivo es lograr el mismo estándar acorde con la publicación misma. (Lo cual puede ser una tontería dadas las posibilidades de que el código aún se ejecute , pero puede ser al menos tan útil como la publicación de todos modos).

Los suplementos de revistas de sitios web universitarios no son persistentes

Es poco probable que los sitios web de las universidades proporcionen la estabilidad o la redundancia para preservar el contenido alojado. El contenido es más difícil de citar y generalmente carece de metadatos legibles por máquina.

Desafortunadamente, parece que las revistas no están haciendo mucho mejor en el mantenimiento de sus materiales suplementarios (ver Anderson et al. 2006 ), y pueden no aceptar los formatos necesarios, o incluso aceptar material suplementario (ver un ejemplo notable ).

Por estas razones, las personas preocupadas por el archivado de datos a largo plazo han recurrido unánimemente a abogar por el uso de repositorios dedicados en lugar de sitios web o materiales complementarios, y muchas revistas ahora exigen esta práctica . Parece justo que el código se cumpla con este estándar.

¿La solución de muchas copias?

Github y los sitios relacionados aún no han demostrado su longevidad a lo largo de los 100 años de escala alcanzada por las bibliotecas universitarias y las editoriales establecidas. Al facilitar la distribución generalizada, puede proporcionar una solución que otros han hecho eco en los comentarios, incluido un compañero que no pudo comentar sobre stackexchange,

... guardemos lo que queda: no con bóvedas y cerraduras que los cierren de la vista del público y utilicémoslos para consignarlos a la pérdida de tiempo, sino mediante tal multiplicación de copias, que las colocará fuera del alcance del accidente.

- Thomas Jefferson, 18 de febrero de 1791

Figshare y el estándar CLOCKSS

El único estándar de archivo que conozco es figshare , que puede aceptar repositorios de código completos (como "conjuntos de archivos" por el momento, pero creo que pronto tendrá la opción de aparecer como tipo "código"). La pieza clave de figshare no es solo el DOI citable con metadatos programáticos, sino el respaldo del servicio de archivo CLOCKSS , que mantiene copias de todo su contenido en 12 nodos distribuidos geográficamente y geopolíticamente en todo el mundo. Si se comparte el negocio o deja de existir, esto hará que todo su contenido esté disponible gratuitamente desde CLOCKSS.

En consecuencia, sugeriría usar Github para la distribución de código, pero también proporcionar una copia de archivo a figshare en el momento de la publicación.

cboettig
fuente
1
figshare es un gran paso adelante, aunque la licencia CC-BY no es una licencia de software, y no sé cuántos científicos están dispuestos a lanzar su código bajo CC0, por lo que este es un problema que se debe abordar. Sin embargo, aprecio que usen DOI y CLOCKSS, eso es genial.
Aron Ahmadia
Sí, un gran punto sobre las licencias sigue siendo algo problemático, particularmente para un software más desarrollado. Para las secuencias de comandos para replicar un análisis, pude ver que CC0 es más apropiado.
cboettig
El código de Google podría ser un poco mejor para el público en general, ya que puede tener una página web más agradable con resumen, imágenes, enlace DOI, mayor visibilidad en la búsqueda, etc. Recuerde que la mayoría de los que no son desarrolladores ni siquiera están familiarizados con el control de versiones y mucho menos con git / hg. Subversion es lo más lejos que llegaría para una audiencia más amplia.
stali
1
@stali recuerda que github también admite páginas web personalizadas para repositorios a través de páginas gh y tarballs descargables de descargas. Pero ni Google ni Github proporcionan un DOI separado para el código, ni abordan la longevidad de archivo más allá de la vida de la empresa afaik.
cboettig
4

Puede utilizar algunas técnicas de pdf sofisticadas para simplemente adjuntar el código al pdf (es decir, los archivos de código se incrustan en el pdf y se pueden "descargar" haciendo clic en algún botón en el pdf). Esto se puede lograr con el paquete attachfile , por ejemplo. Por supuesto, esto funciona con preimpresiones (aunque no sé si ya funciona con el arxiv) pero probablemente tenga problemas con los archivos de diario ...

Puñal
fuente
¡Muy genial! No sabía que LaTeX podría hacer esto.
qubyte
4

Para guiones pequeños que son específicos de un proyecto de investigación específico, el mejor lugar para la publicación es el sitio web de la revista, como "información complementaria" del documento. Ahí es donde es más fácil encontrar a alguien que lea el artículo.

Los paquetes más importantes que sean de interés para otros proyectos también deberían publicarse mejor por separado. Lamentablemente, no hay una solución realmente buena en este momento. Idealmente, una publicación de código sería accesible permanentemente a través de un DOI, al igual que un documento, pero no conozco ningún sitio de alojamiento que distribuya DOI y garantice su permanencia. Los repositorios públicos como Github o Bitbucket son quizás la mejor apuesta por ahora.

La mejor solución sería publicar el documento empaquetado con el código y los datos que lo acompañan, pero eso aún no es técnicamente factible. Estoy trabajando en un prototipo de investigación que explora esta idea, vea este sitio para más detalles.

Khinsen
fuente
1
+1 para ActivePapers. No creo que satisfaga mis necesidades ahora, ¡pero me alegra ver a alguien trabajando en una solución!
David Ketcheson el
figshare proporciona DOI: consulte figshare.com/blog/…
Jeromy Anglim
3

He tomado dos tácticas, nacidas del hecho de que anticipo cambiar de institución pronto, por lo que la URL de mi universidad no es estable en lo más mínimo.

Cuando el código es relativamente corto, he intentado incluirlo como un apéndice suplementario en el propio diario, bajo el supuesto de que probablemente harán un trabajo decente manteniendo el papel y el código aproximadamente en el mismo lugar. Esto es especialmente útil para el código donde no hay una gran cantidad de interés general, código que es algo inútil sin el documento en cuestión para proporcionar contexto.

Pero para el código fuente, el software real y los proyectos más complicados o de interés general, he seguido su táctica de vincular a un repositorio de GitHub, que al menos debería ser estable para la vida productiva promedio de mis documentos.

Fomite
fuente
2

Echa un vistazo a http://www.runmycode.org . Alojan sitios complementarios para el código asociado con trabajos de investigación. Si el código es R, Matlab u otros, ejecutará el código por usted. Todavía no lo he probado, pero tengo la intención de hacerlo. Creo que David Donoho y sus colaboradores lo usan.

Paul G. Constantine
fuente
Ah Ya has usado esto. runmycode.org/CompanionSite/site.do?siteId=158
Paul G. Constantine
@David Ketcheson y yo también hicimos un experimento en diciembre usando la pila wakari.io y las libretas IPython para uno de nuestros códigos basados ​​en Python. Puede consultar los cuadernos de reproducibilidad PyClaw aquí .
Aron Ahmadia
0

Las bibliotecas universitarias podrían ser un lugar para esto o el centro de acogida de la universidad.

vanCompute
fuente
-2

Como lector, una declaración en el documento en el sentido de que el código puede obtenerse contactando directamente al autor sería efectivo. Como autor, esto podría ayudar a fomentar la colaboración y darme la oportunidad de recordarles a las personas que citen mi artículo si usan el código en su trabajo.

JxB
fuente
44
Ese es un punto de vista interesante, y tengo curiosidad por ver qué tan común es. Personalmente, es de lo que estoy tratando de escapar. Siento que es como publicar un artículo incompleto y exigir a los lectores que pregunten por todo. Ver sciencecodemanifesto.org .
David Ketcheson el
2
Tener la dirección de contacto en uno de mis documentos más destacados está esencialmente muerta, y no estoy segura acerca de otros, generalmente me opongo a esto como una solución. "Contactarme" no es necesariamente la cosa más fácil del mundo, especialmente una década después.
Fomite
2
El enfoque de "contactarme" tampoco garantiza la reproducibilidad. Cuando me contacte para pedirme un código, probablemente le envíe la versión más actualizada, no la que utilicé en el documento original. Aunque solo fuera porque ya no tendría la versión original.
Khinsen
3
Los estudios empíricos que realmente se ponen en contacto con un autor y le solicitan datos, incluso cuando el autor ha firmado un acuerdo de licencia para proporcionarlos a pedido, han demostrado que sorprendentemente pocos autores cumplen. Por ejemplo, vea dx.doi.org/10.1371/journal.pone.0007078 y citas en él. Si esto no funciona bien para los datos, sospecho que tampoco es una buena solución para el código.
cboettig