Come collegare il codice alle pubblicazioni


40

I lavori accademici nel campo dell'informatica scientifica (e molti altri campi, oggigiorno) in genere riguardano una certa quantità di codice o persino pacchetti software interi che sono stati scritti appositamente per quel documento o sono stati usati per ottenere risultati nel documento. Qual è il modo migliore per aiutare i lettori del documento ad accedere al codice? Il mio approccio attuale è quello di inserire un collegamento a un repository Github (insieme a un tag di versione particolare) nel documento o in una citazione.


2
La condivisione del codice è un'ottima idea e dovrebbe essere fatta di più. So che potrei essere migliore nel fornire il codice pertinente per un documento. Un repository Github sembra una buona soluzione. Sicuramente molto meglio che includere il codice sorgente in un'appendice, che ho visto fare per piccoli sforzi di codifica.
Barron,

4
Questa è una domanda MO correlata.
JM,

@JM Grazie, le risposte su MO sono molto buone!
David Ketcheson,

si noti che è possibile pubblicare i notebook ipython su github e che sono renderizzati, ad eccezione delle parti interattive
denfromufa

1
@denfromufa Sfortunatamente, Github disabilita Mathjax, quindi neanche la matematica è resa. Ciò lo rende piuttosto inutile per i campi più rilevanti. Ma c'è sempre nbviewer.
David Ketcheson,

Risposte:


17

Bene, penso che tu abbia alcune opzioni.

  1. Se hai una pagina stabile, come quella sponsorizzata da un'università o da un'altra istituzione senza scopo di lucro che difficilmente svanirà presto, potresti pubblicare lì.
  2. È possibile utilizzare un servizio come Github o Bitbucket o SourceForge per distribuire il codice.
  3. Se il codice ha un valore generale marginale (è un codice di analisi per un insieme specifico di condizioni, ecc.), È possibile renderlo disponibile come download di "informazioni supplementari" con il documento in cui lo si utilizza.
  4. È possibile utilizzare una combinazione di quanto sopra.

In uno o tutti questi casi, tuttavia, è necessario indicare chiaramente la fonte nell'articolo e indicare che tipo di licenza è (GPL, Creative Commons, ecc.), In modo che non ci siano problemi relativi alla proprietà intellettuale in futuro.


6
Penso che uno dovrebbe mettere il proprio codice nel posto più probabile per sopravvivere e, se possibile, in più posti. Le pagine universitarie sembrano avere meno probabilità di sopravvivere rispetto ai servizi di hosting, ad esempio. Avere il diario rende disponibili anche alcune istantanee. Sfortunatamente, nessun diario che conosco fa l'hosting di repository.
Faheem Mitha,

1
Uno studente non dovrebbe probabilmente mettere il software in una home page personale; tuttavia, direi che per un tipico codice di ricerca, probabilmente c'è molto da guadagnare distribuendolo su una pagina associata a un gruppo di ricerca piuttosto che su una pagina esterna in cui è probabile che l'attribuzione vada persa. Per quanto riguarda le riviste, è vero che non fanno hosting di repository. Tuttavia, la capacità di avere "informazioni supplementari" sotto forma di codice di ricerca credo soddisfi la maggior parte dei requisiti di sviluppo responsabile di software scientifico. (Se necessario).
Aeismail

La mia sensazione è che le pagine universitarie hanno maggiori probabilità di perdersi rispetto ai normali siti di hosting. Naturalmente, la maggior parte dei siti di hosting che sono popolari al giorno d'oggi (Bitbucket, Github, Google Code) non esistono da così tanto tempo. D'altra parte, Sourceforge per esempio è in circolazione da un po 'di tempo.
Faheem Mitha,

Ci sono altri problemi di cui essere a conoscenza; Anche i problemi di PI e le normative universitarie o governative possono controllare la scelta dei repository. Ma il contro- argomento è che ci sono un certo numero di codici ( NAMD è un esempio importante) che hanno avuto una distribuzione di successo su siti di proprietà universitaria. In generale, il "significato" del codice determinerà quanto sia visibile. Dubito che un codice che sviluppa una base di utenti significativa sparirà mai completamente.
Aeismail,

1
Vero, ma se il codice è oscuro non significa che sia OK se scompare. E si spera che la maggior parte del codice scientifico sia sotto licenza gratuita e senza restrizioni irragionevoli. Credo che il NIH, ad esempio, lo stia ora imponendo per il lavoro sviluppato con il denaro del NIH (contribuente). Penso che questo dovrebbe essere il caso di tutti i progetti finanziati dai contribuenti.
Faheem Mitha,

8

Grande domanda e grandi risposte, ma penso che nessuno affronti adeguatamente la questione della persistenza, se l'obiettivo è quello di raggiungere lo stesso standard accordato alla pubblicazione stessa. (Che può essere sciocco date le possibilità che il codice sia ancora in esecuzione , ma può comunque essere utile almeno quanto la pubblicazione lo stesso).

Supplementi di riviste di siti Web universitari non sono persistenti

È improbabile che i siti web universitari forniscano la stabilità o la ridondanza per preservare il contenuto ospitato. Il contenuto è più difficile da citare e in genere manca di metadati leggibili dalla macchina.

Sfortunatamente sembra che le riviste non stiano facendo molto meglio nel mantenere i loro materiali supplementari (vedi Anderson et al. 2006 ), e potrebbero non accettare i formati necessari o addirittura accettare del materiale supplementare (vedi un esempio notevole ).

Per questi motivi, le persone interessate all'archiviazione a lungo termine dei dati si sono rivolte all'unanimità verso la promozione dell'uso di repository dedicati anziché di siti Web o materiali supplementari e molte riviste ora impongono questa pratica . Sembra giusto che il codice sia conforme a questo standard.

La soluzione di molte copie?

Github e i siti correlati devono ancora dimostrare la longevità nel corso dei 100 anni raggiunti dalle biblioteche universitarie e dagli editori affermati. Facilitando una distribuzione capillare può fornire una soluzione che altri hanno fatto eco nei commenti, incluso un collega che non ha potuto commentare stackexchange,

... salviamo ciò che rimane: non con volte e lucchetti che li proteggono dagli occhi del pubblico e li usano per consegnarli allo spreco di tempo, ma con una tale moltiplicazione di copie, che li metterà fuori dalla portata dell'incidente.

- Thomas Jefferson, 18 febbraio 1791

Figshare e lo standard CLOCKSS

L'unico standard di archiviazione di cui sono a conoscenza è figshare , che può accettare repository di codice completi (come "set di file" per il momento, ma credo che presto avrà la possibilità di essere elencato come tipo "codice"). Il pezzo chiave di figshare non è solo il DOI citabile con metadati programmatici, ma il supporto di CLOCKSS servizio di archiviazione , che conserva copie di tutto il suo contenuto in 12 nodi geograficamente e geo-politicamente distribuiti in tutto il mondo. Se figshare dovesse smettere di funzionare o cessare di esistere, ciò farà sì che tutto il suo contenuto sia liberamente disponibile da CLOCKSS.

Di conseguenza, suggerirei di utilizzare Github per la distribuzione del codice, ma anche di fornire una copia di archivio a figshare al momento della pubblicazione.


1
figshare è un grande passo avanti, sebbene la licenza CC-BY non sia una licenza software e non so quanti scienziati siano disposti a rilasciare il loro codice su CC0, quindi questo è un problema da affrontare. Apprezzo il fatto che usano DOI e CLOCKSS, comunque, è fantastico.
Aron Ahmadia,

Sì, il punto positivo delle licenze è ancora alquanto problematico, in particolare per i software più sviluppati. Per gli script per replicare un'analisi ho potuto vedere CC0 più appropriato.
cboettig,

Il codice di Google potrebbe essere leggermente migliore per il pubblico più vasto in quanto puoi avere una pagina web più bella con riepilogo, immagini, link DOI, maggiore visibilità nella ricerca ecc. Dovresti assolutamente mettere un tgz nella sezione Download e fornire un link in prima pagina. Ricorda che la maggior parte dei non sviluppatori non ha nemmeno familiarità con il controllo delle versioni e tanto meno git / hg. Subversion è il massimo per un pubblico più vasto.
Stali,

1
@stali ricorda che github supporta anche pagine web personalizzate per repository tramite pagine gh e tarball scaricabili dai download. Ma né Google né Github forniscono un DOI separato per il codice, né affrontano la longevità dell'archiviazione oltre la vita della società.
cboettig,

4

Puoi usare alcune fantasiose tecniche pdf per allegare semplicemente il codice al pdf (ovvero, i file di codice sono incorporati nel pdf e possono essere "scaricati" con un clic su un pulsante nel pdf). Questo può essere realizzato con il pacchetto attachfile , ad esempio. Certo, questo funziona con le prestampe (anche se non so se funziona già con arxiv) ma probabilmente hai problemi con i file journal ...


Molto bello! Non sapevo che LaTeX potesse farlo.
qubyte il

4

Per i piccoli script specifici di un progetto di ricerca specifico, il posto migliore per la pubblicazione è il sito Web della rivista, come "informazioni supplementari" al documento. Ecco dove è più facile da trovare per qualcuno che legge l'articolo.

Pacchetti più sostanziali che interessano anche altri progetti dovrebbero essere pubblicati separatamente. Purtroppo al momento non esiste una soluzione davvero valida. Idealmente, una pubblicazione di codice sarebbe accessibile in modo permanente tramite un DOI, proprio come un documento, ma non sono a conoscenza di alcun sito di hosting che distribuisca DOI e ne garantisca la permanenza. I repository pubblici come Github o Bitbucket sono forse la scommessa migliore per ora.

La soluzione migliore sarebbe quella di pubblicare la carta impacchettata con il codice e i dati che ne derivano, ma ciò non è ancora tecnicamente fattibile. Sto lavorando a un prototipo di ricerca che esplora questa idea, vedi questo sito per i dettagli.


1
+1 per ActivePapers. Non penso che soddisfi le mie esigenze ora, ma sono felice di vedere qualcuno che sta lavorando a una soluzione!
David Ketcheson,

figshare fornisce DOI: vedi figshare.com/blog/…
Jeromy Anglim il

3

Ho preso due tattiche, nate dal fatto che prevedo presto di cambiare le istituzioni, quindi il mio URL universitario non è affatto stabile.

Quando il codice è relativamente breve, ho provato a includerlo come appendice supplementare nel diario stesso, supponendo che probabilmente faranno un lavoro decente mantenendo la carta e il codice all'incirca nello stesso posto. Ciò è particolarmente utile per il codice in cui non c'è una grande quantità di interesse generale - codice che è in qualche modo inutile senza il documento in questione per fornire il contesto.

Ma per codice sorgente, software reale e progetti più complicati o di interesse generale, ho seguito la tua tattica di collegamento a un repository GitHub, che dovrebbe essere almeno stabile per la durata media della vita dei miei articoli.


2

Dai un'occhiata a http://www.runmycode.org . Ospitano siti associati per il codice associato ai documenti di ricerca. Se il codice è R, Matlab o pochi altri, eseguirà effettivamente il codice per te. Non l'ho ancora provato, ma ho intenzione di farlo. Penso che David Donoho e i suoi collaboratori lo usino.



@David Ketcheson e io abbiamo anche fatto un esperimento a dicembre usando lo stack wakari.io e i notebook IPython per uno dei nostri codici basati su Python. Puoi controllare i quaderni di riproducibilità di PyClaw qui .
Aron Ahmadia,

0

Le biblioteche universitarie potrebbero essere un luogo per questo o il centro di accoglienza dell'università.


-2

Come lettore, sarebbe efficace una dichiarazione nel documento secondo cui il codice può essere ottenuto contattando direttamente l'autore. Come autore, questo potrebbe favorire la collaborazione e darmi l'opportunità di ricordare alle persone di citare il mio articolo se usano il codice nel loro lavoro.


4
Questo è un punto di vista interessante e sono curioso di vedere quanto sia comune. Personalmente, è quello che sto cercando di scappare. Sento che è come pubblicare un articolo incompleto e richiedere ai lettori di chiedere tutto. Vedi sciencecodemanifesto.org .
David Ketcheson,

2
Avere l'indirizzo di contatto su uno dei miei documenti più importanti essendo sostanzialmente morto - e non sono sicuro su alcuni altri - in genere sono contrario a questa soluzione. "Contattarmi" non è necessariamente la cosa più semplice al mondo da fare, specialmente un decennio dopo.
Fomite

2
L'approccio "contattami" non garantisce inoltre la riproducibilità. Quando mi contatti chiedendo un codice, probabilmente ti invierò la versione più aggiornata, non quella che ho usato nel documento originale. Se non altro perché non avrei più la versione originale.
Khinsen,

3
Studi empirici in realtà contattando un autore e chiedendo dati, anche quando l'autore ha firmato un accordo di licenza per fornirlo su richiesta, hanno dimostrato che sorprendentemente pochi autori rispettano. Ad esempio, consultare dx.doi.org/10.1371/journal.pone.0007078 e citazioni in esso. Se questo non funziona bene per i dati, sospetto che non sia una buona soluzione per il codice.
cboettig,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.