So verknüpfen Sie Code mit Veröffentlichungen

40

Wissenschaftliche Arbeiten im Bereich des wissenschaftlichen Rechnens (und in vielen anderen Bereichen heutzutage) beinhalten typischerweise eine gewisse Menge an Code oder sogar ganze Softwarepakete, die speziell für dieses Papier geschrieben wurden oder verwendet wurden, um Ergebnisse in dem Papier zu erhalten. Wie kann man den Lesern des Papiers am besten helfen, auf den Code zuzugreifen? Mein aktueller Ansatz ist es, einen Link zu einem Github-Repository (zusammen mit einem bestimmten Versions-Tag) in das Papier oder in ein Zitat zu setzen.

David Ketcheson
quelle
2
Das Teilen des Codes ist eine großartige Idee und sollte mehr getan werden. Ich weiß, dass ich besser in der Lage sein könnte, den relevanten Code für ein Papier bereitzustellen. Ein Github-Repo scheint eine gute Lösung zu sein. Mit Sicherheit viel besser, als Quellcode in einen Anhang aufzunehmen, was ich für kleinere Programmieraufwände gesehen habe.
Barron
4
Dies ist eine verwandte MO-Frage.
JM
@JM Danke, die Antworten auf MO sind sehr gut!
David Ketcheson
Beachten Sie, dass Sie Ipython-Notizbücher auf Github veröffentlichen können und diese mit Ausnahme interaktiver Teile gerendert werden
denfromufa 30.10.15
1
@denfromufa Leider deaktiviert Github Mathjax, daher wird auch Math nicht gerendert. Das macht es für die meisten relevanten Bereiche ziemlich nutzlos. Aber es gibt immer nbviewer.
David Ketcheson

Antworten:

17

Nun, ich denke, Sie haben ein paar Möglichkeiten.

  1. Wenn Sie über eine stabile Seite verfügen, beispielsweise eine, die von einer Universität oder einer anderen gemeinnützigen Einrichtung gesponsert wurde und die wahrscheinlich nicht so schnell verschwindet, können Sie sie dort veröffentlichen.
  2. Sie könnten einen Dienst wie Github oder Bitbucket oder SourceForge verwenden, um den Code zu verbreiten.
  3. Wenn der Code von geringem allgemeinem Wert ist (es handelt sich um einen Analysecode für einen bestimmten Satz von Bedingungen usw.), können Sie den Code zusammen mit dem Papier, in dem Sie ihn verwenden, als Download mit zusätzlichen Informationen zur Verfügung stellen.
  4. Sie könnten eine Kombination der oben genannten verwenden.

In einigen oder allen diesen Fällen sollten Sie jedoch im Artikel die Bezugsquellen klar angeben und angeben, um welche Art von Lizenz es sich handelt (GPL, Creative Commons usw.), damit es auf der ganzen Linie keine IP-bezogenen Probleme gibt.

Aeismail
quelle
6
Ich denke, man sollte seinen Code am wahrscheinlichsten platzieren, um zu überleben, und wenn möglich an mehreren Orten. Universitätsseiten scheinen weniger zu überleben als beispielsweise Hosting-Dienste. Es macht auch Sinn, dass das Tagebuch einen Schnappschuss zur Verfügung stellt. Leider gibt es keine Zeitschrift, die mir bekannt ist, die Repos hostet.
Faheem Mitha
1
Ein Student sollte wahrscheinlich keine Software auf einer persönlichen Homepage platzieren. Ich würde jedoch argumentieren, dass für einen typischen Forschungscode wahrscheinlich mehr erreicht werden kann, wenn er auf einer Seite verteilt wird, die einer Forschungsgruppe zugeordnet ist, als auf einer externen Seite, auf der die Zuordnung wahrscheinlich verloren geht. Bei den Journalen ist es richtig, dass sie kein Repository-Hosting durchführen. Die Fähigkeit, "Zusatzinformationen" in Form des Forschungscodes zu haben, erfüllt meines Erachtens jedoch die meisten Anforderungen einer verantwortungsvollen wissenschaftlichen Softwareentwicklung. (Wenn nötig.)
aeismail
Ich habe das Gefühl, dass Seiten von Universitäten mit größerer Wahrscheinlichkeit verloren gehen als normale Hosting-Websites. Natürlich gibt es die meisten der heute beliebten Hosting-Sites (Bitbucket, Github, Google Code) noch nicht so lange. Andererseits gibt es Sourceforge zum Beispiel schon eine Weile.
Faheem Mitha
Es gibt noch andere Punkte, die Sie beachten sollten. IP-Bedenken sowie Bestimmungen der Universität oder der Regierung können auch die Auswahl der Repositories regeln. Das Gegenargument ist jedoch, dass es eine Reihe von Codes gibt ( NAMD ist ein wichtiges Beispiel), die erfolgreich an Standorten in Universitätsbesitz verbreitet wurden. Im Allgemeinen bestimmt die "Bedeutung" des Codes, wie sichtbar er ist. Ich bezweifle, dass ein Code, der eine signifikante Benutzerbasis entwickelt, jemals vollständig verschwinden wird.
Aeismail
1
Stimmt, aber wenn der Code dunkel ist, heißt das nicht, dass er in Ordnung ist, wenn er verschwindet. Und man würde hoffen, dass der meiste wissenschaftliche Code unter einer freien Lizenz und ohne unangemessene Einschränkung sein würde. Ich glaube, die NIH zum Beispiel schreibt dies jetzt für Arbeiten vor, die mit Geldern der NIH (Steuerzahler) entwickelt wurden. Ich denke, das sollte für alle steuerfinanzierten Projekte der Fall sein.
Faheem Mitha
8

Gute Frage und gute Antworten, aber meines Erachtens geht keine ausreichend auf die Frage der Beharrlichkeit ein, wenn das Ziel darin besteht, denselben Standard zu erreichen, der der Veröffentlichung selbst zuerkannt wurde. (Was vielleicht albern ist, wenn man bedenkt, dass der Code immer noch ausgeführt wird , aber trotzdem mindestens so nützlich ist wie die Veröffentlichung).

Beilagen zu Zeitschriften auf Universitätswebsites sind nicht dauerhaft

Es ist unwahrscheinlich, dass Universitätswebsites die Stabilität oder Redundanz bieten, um gehostete Inhalte zu erhalten. Der Inhalt ist schwieriger zu zitieren und es fehlen normalerweise maschinenlesbare Metadaten.

Leider scheint es, dass Zeitschriften bei der Pflege ihrer Zusatzmaterialien nicht viel besser abschneiden (siehe Anderson et al. 2006 ) und möglicherweise nicht die erforderlichen Formate oder überhaupt kein Zusatzmaterial akzeptieren (siehe ein bemerkenswertes Beispiel ).

Aus diesen Gründen haben sich die Leute, die sich mit der Langzeitarchivierung von Daten befassen, einstimmig für die Verwendung dedizierter Repositories anstelle von Websites oder ergänzenden Materialien ausgesprochen, und viele Zeitschriften schreiben diese Praxis inzwischen vor . Es scheint nur fair zu sein, dass der Code diesen Standard einhält.

Die Lösung vieler Kopien?

Github und verwandte Websites müssen erst noch die Langlebigkeit von Universitätsbibliotheken und etablierten Verlagen nachweisen. Durch die Erleichterung einer breiten Verbreitung kann es eine Lösung bieten, die andere in den Kommentaren wiederholt haben, einschließlich eines Kollegen, der sich nicht zu stackexchange äußern konnte.

... retten wir, was übrig bleibt: nicht durch Gewölbe und Schlösser, die sie vor der Öffentlichkeit schützen und dazu verwenden, sie der Zeitverschwendung zu überlassen, sondern durch eine solche Vervielfältigung von Kopien, die sie außerhalb der Reichweite eines Unfalls platzieren soll.

- Thomas Jefferson, 18. Februar 1791

Figshare & der CLOCKSS Standard

Der einzige mir bekannte Archivierungsstandard ist figshare , der vollständige Code-Repositorys akzeptieren kann (derzeit als "Dateigruppen", ich glaube jedoch, dass bald die Option besteht, als Typ "Code" aufgeführt zu werden). Das Schlüsselstück von figshare ist nicht nur die zitierfähige DOI mit programmatischen Metadaten, sondern auch die Unterstützung des CLOCKSS- Archivdienstes, der Kopien sämtlicher Inhalte an 12 geografisch und geopolitisch verteilten Knotenpunkten auf der ganzen Welt aufbewahrt. Sollte figshare aus dem Geschäft kommen oder aufhören zu existieren, wird dies dazu führen, dass der gesamte Inhalt von CLOCKSS frei verfügbar ist.

Folglich würde ich vorschlagen, Github für die Verteilung von Code zu verwenden, aber auch eine Archivierungskopie für figshare zum Zeitpunkt der Veröffentlichung bereitzustellen.

cboettig
quelle
1
figshare ist ein großer Schritt vorwärts, obwohl die CC-BY-Lizenz keine Softwarelizenz ist, und ich weiß nicht, wie viele Wissenschaftler bereit sind, ihren Code unter CC0 zu veröffentlichen. Ich weiß es zu schätzen, dass sie DOI und CLOCKSS verwenden, das ist großartig.
Aron Ahmadia
Ja, ein großartiger Punkt, dass die Lizenzen immer noch etwas problematisch sind, insbesondere für weiterentwickelte Software. Für Skripte zum Replizieren einer Analyse könnte CC0 geeigneter sein.
Cboettig
Google-Code ist möglicherweise etwas besser für ein breiteres Publikum, da Sie eine schönere Webseite mit Zusammenfassung, Bildern, DOI-Link, höherer Sichtbarkeit in der Suche usw. haben können. Sie sollten auf jeden Fall ein tgz in den Download-Bereich einfügen und einen Link auf der Startseite bereitstellen. Denken Sie daran, dass die meisten Nicht-Entwickler nicht einmal mit der Versionskontrolle vertraut sind, geschweige denn mit git / hg. Subversion ist so weit wie ich es für ein breiteres Publikum tun würde.
Stali
1
@stali daran erinnern, dass Github auch benutzerdefinierte Webseiten für Repositorys über Gh-Seiten und herunterladbare Tarballs von Downloads unterstützt. Aber weder Google noch Github stellen einen separaten DOI für den Code bereit , noch befassen sie sich mit der Langlebigkeit der Archivierung über das Leben des Unternehmens hinaus.
Cboettig
4

Sie können einige ausgefallene PDF-Techniken verwenden, um den Code einfach an das PDF anzuhängen (dh die Code-Dateien werden in das PDF eingebettet und können mit einem Klick auf eine Schaltfläche im PDF "heruntergeladen" werden). Dies kann zum Beispiel mit dem attachfile- Paket erreicht werden. Natürlich funktioniert dies mit Preprints (obwohl ich nicht weiß, ob es bereits mit dem arxiv funktioniert), aber Sie bekommen wahrscheinlich Probleme mit Journal-Dateien ...

Dolch
quelle
Sehr cool! Ich wusste nicht, dass LaTeX das kann.
Qubyte
4

Für kleine Skripte, die spezifisch für ein bestimmtes Forschungsprojekt sind, ist der beste Ort für die Veröffentlichung die Website der Zeitschrift als "ergänzende Information" zum Artikel. Dort ist es am einfachsten, jemanden zu finden, der den Artikel liest.

Umfangreichere Pakete, die auch für andere Projekte von Interesse sind, sollten besser separat veröffentlicht werden. Leider gibt es derzeit keine wirklich gute Lösung. Im Idealfall wäre eine Codeveröffentlichung über eine DOI dauerhaft zugänglich, genau wie ein Papier, aber mir ist keine Hosting-Site bekannt, die DOIs austeilt und deren Beständigkeit garantiert. Öffentliche Repositories wie Github oder Bitbucket sind momentan vielleicht die beste Wahl.

Die beste Lösung wäre, das mit dem Code und den dazugehörigen Daten verpackte Papier zu veröffentlichen, aber das ist technisch noch nicht machbar. Ich arbeite an einem Forschungsprototyp, der diese Idee untersucht. Weitere Informationen finden Sie auf dieser Website .

khinsen
quelle
1
+1 für ActivePapers. Ich glaube nicht, dass es jetzt meine Bedürfnisse erfüllt, aber ich bin froh, jemanden zu sehen, der an einer Lösung arbeitet!
David Ketcheson
figshare bietet DOIs: siehe figshare.com/blog/…
Jeromy Anglim
3

Ich habe zwei Taktiken gewählt, die sich aus der Tatsache ergeben, dass ich einen baldigen Wechsel der Institutionen erwarte, sodass meine Universitäts-URL nicht im geringsten stabil ist.

Wenn der Code relativ kurz ist, habe ich versucht, ihn als zusätzlichen Anhang in die Zeitschrift aufzunehmen, unter der Annahme, dass sie wahrscheinlich gute Arbeit leisten werden, indem sie das Papier und den Code ungefähr an der gleichen Stelle aufbewahren. Dies ist besonders nützlich für Code, bei dem nicht viel allgemeines Interesse besteht - Code, der ohne das betreffende Papier für die Bereitstellung des Kontexts etwas nutzlos ist.

Aber für Quellcode, aktuelle Software und kompliziertere Projekte oder Projekte von allgemeinem Interesse habe ich Ihre Taktik befolgt, eine Verknüpfung zu einem GitHub-Repository herzustellen, das zumindest für die durchschnittliche Lebensdauer meiner Papiere stabil sein sollte.

Fomite
quelle
2

Schauen Sie sich http://www.runmycode.org an . Sie hosten Companion-Sites für Code, der mit Forschungsarbeiten verknüpft ist. Wenn der Code R, Matlab oder ein paar andere ist, wird er tatsächlich für Sie ausgeführt. Ich habe es noch nicht ausprobiert, aber ich beabsichtige es. Ich denke, David Donoho und seine Mitarbeiter nutzen es.

Paul G. Constantine
quelle
Ah. Du hast das schon benutzt. runmycode.org/CompanionSite/site.do?siteId=158
Paul G. Constantine
@David Ketcheson und ich haben im Dezember auch ein Experiment mit dem wakari.io-Stack und IPython-Notizbüchern für einen unserer Python-basierten Codes durchgeführt. Sie können die PyClaw Reproduzierbarkeit Notebooks überprüfen hier .
Aron Ahmadia
0

Universitätsbibliotheken könnten ein Ort dafür oder das Hosting-Center der Universität sein.

vanCompute
quelle
-2

Als Leser wäre eine Aussage in der Veröffentlichung dahingehend wirksam, dass Code durch direkte Kontaktaufnahme mit dem Autor erhalten werden kann. Als Autor könnte dies die Zusammenarbeit fördern und mir die Möglichkeit geben, die Leute daran zu erinnern, meinen Artikel zu zitieren, wenn sie den Code in ihrer Arbeit verwenden.

JxB
quelle
4
Das ist eine interessante Sichtweise, und ich bin gespannt, wie häufig es ist. Persönlich ist es das, wovon ich weg will. Ich fühle, dass es so ist, als würde man eine unvollständige Arbeit veröffentlichen und von den Lesern verlangen, nach dem vollen Inhalt zu fragen. Siehe sciencecodemanifesto.org .
David Ketcheson
2
Da die Kontaktadresse auf einem meiner bekanntesten Papiere im Wesentlichen tot ist - und bei einigen anderen nicht sicher ist - lehne ich dies im Allgemeinen als Lösung ab. "Mich zu kontaktieren" ist nicht unbedingt die einfachste Sache der Welt - vor allem ein Jahrzehnt später.
Fomite
2
Der "Kontakt" -Ansatz garantiert auch keine Reproduzierbarkeit. Wenn Sie mich nach einem Code fragen, sende ich Ihnen wahrscheinlich die aktuellste Version, nicht die, die ich in der Originalarbeit verwendet habe. Wenn nur, weil ich die Originalversion nicht mehr hätte.
Khinsen
3
Empirische Studien, die tatsächlich Kontakt mit einem Autor aufnehmen und nach Daten fragen, selbst wenn der Autor eine Lizenzvereinbarung unterzeichnet hat, um diese auf Anfrage bereitzustellen, haben gezeigt, dass sich überraschend wenige Autoren daran halten. Siehe zum Beispiel dx.doi.org/10.1371/journal.pone.0007078 und Zitate darin. Wenn dies für Daten nicht gut funktioniert, ist es vermutlich auch keine gute Lösung für Code.
Cboettig