Perché i documenti di ricerca che menzionano software personalizzato non rilasciano il codice sorgente? [chiuso]


69

C'è un motivo per cui il codice sorgente del software menzionato nei documenti di ricerca non viene rilasciato? Comprendo che i documenti di ricerca riguardano più l'idea generale di realizzare qualcosa che i dettagli di implementazione, ma non capisco perché non rilasciano il codice.

Ad esempio, questo documento termina con:

risultati

Il sistema di tracciamento di linee umane è implementato attraverso il framework Qt in C ++ utilizzando OpenGL e funziona su una workstation con processore Intel dual core da 2,00 GHz senza ulteriore assistenza hardware. Possiamo disegnare in modo interattivo linee mentre il sistema sintetizza il nuovo percorso e la nuova trama.

Mantengono il codice sorgente chiuso intenzionalmente a causa di una monetizzazione che intendono realizzare o a causa del copyright?


42
Per lo stesso motivo, alla maggior parte dei documenti mancano i dati non elaborati (pubblicazione di "risultati" statisticamente distorti).
SK-logic,

2
Ho modificato la domanda. Forse "menzione" non è la parola migliore. In alcuni casi, alcuni dei punti evidenziati nei documenti dipendono in modo critico dal software, ma il software è vaporware. Come in, per valutare correttamente la validità del documento, qualcuno deve essere in grado di eseguire il software.
Kaz,

7
@JohnL Direi che un articolo può dipendere in modo critico dal software senza riguardare il software. Come una proprietà interessante del mondo che viene dimostrata / trovata utilizzando uno strumento software. Se non possiamo rivedere lo strumento, come possiamo sapere se la conclusione è corretta? (O meglio: è molto più semplice convalidarlo se possiamo vedere lo strumento!)
Andres F.

4
@Andres F - Una possibilità è quella di implementare la tua versione del software usando le idee descritte nel documento. Sebbene si tratti di più lavoro, ha probabilmente anche più valore: eseguire di nuovo la stessa implementazione dimostra di nuovo una sola implementazione. Una nuova implementazione aiuta a dimostrare che le idee stesse sono valide e non un colpo di fortuna di alcuni dettagli di implementazione. Problemi significativi che potrebbero non essere stati notati o descritti prima possono essere scoperti durante la reimplementazione.
Steve314,

3
@KonradRudolph, ovviamente non sarà sempre disponibile. Potrebbe anche non essere disponibile tra un paio d'anni dalla pubblicazione (nastri cancellati e riutilizzati, l'intero gruppo sciolto, carta stracciata, ecc.)
SK-logic,

Risposte:


71

Vengono in mente diverse ragioni.

  • Il codice è troppo grande per l'articolo. Per un breve periodo di tempo, progetti interessanti furono abbastanza brevi da essere pubblicati con il documento che li descrisse. Questo può ancora succedere, ma molti progetti di dimensioni sufficientemente grandi per essere interessanti sono diventati troppo grandi per essere pubblicati con gli articoli che li descrivono.
  • Host pubblici non gratuiti o durevoli. Fino a poco tempo fa non erano disponibili host pubblici economici, durevoli e di facile accesso.
  • La pubblicazione di un documento è più semplice della pubblicazione di un progetto. Alcune persone hanno il tempo di pubblicare un articolo o un progetto, ma non entrambi.
  • Incentivi legati al ruolo. Molti anni fa ho chiesto a un collega lo sviluppo del prodotto e i brevetti e ho saputo che la maggior parte delle persone ha fatto l'uno o l'altro. Come per gli scrittori di carta (pensa al mondo accademico) e gli sviluppatori open source, i premi sono orientati verso un prodotto di lavoro o l'altro.
  • Auto motivazione. Il desiderio di descrivere idee o di implementare il codice non è sempre presente in parti uguali nella stessa persona. Molti dei miei professori hanno ammesso apertamente di non aver mai codificato molto, o che sono stati lontani molti anni dall'aver codificato fluentemente. Allo stesso modo, molti sviluppatori vogliono a malapena scrivere commenti nel loro codice o quando si impegnano nel controllo del codice sorgente.
  • Anche la durabilità del project hosting e del prodotto di lavoro è un problema. Chi vuole collegarsi da qualche parte che potrebbe essere scomparso tra qualche anno e, di conseguenza, diminuire il valore del documento.
  • Tradizione. Gli editori sono orientati alla revisione e alla pubblicazione di articoli, ma potrebbero non essere pronti ad assumere la stessa valutazione per i progetti.
    Anche le opinioni tradizionali su ciò che è un livello sensibile di riproducibilità variano tra i campi. Un chimico che pubblica un articolo su un nuovo metodo di sintesi dovrebbe scrivere abbastanza dettagli per un altro chimico per eseguire la sintesi. Non ci si aspettava che spedisse gli educati e il prodotto al diario. I lettori che desiderano utilizzare / riprodurre il documento devono acquistare i propri educatori e fare la sintesi da soli nel proprio laboratorio (anche se possono chiedere di venire a visitare il laboratorio per vedere come viene fatto in pratica). Né ci si aspetterebbe da un biologo di attaccare i suoi nuovi topi transgenici alla carta. Questa visione sulla riproducibilità corrisponde, ad esempio, a fornire una descrizione (pseudo-codice) dell'algoritmo invece di fornire l'implementazione effettiva.
  • Il codice nudo può essere scioccante . Richiede molta meno lucidatura per rileggere un documento in formato cartaceo che per ispezionare il codice, revisionare il codice e assicurare la qualità di un progetto. Ho un sacco di codice di cui mi farebbe più comodo parlarti che mostrarti. Spero che le cose stiano andando avanti fino al punto in cui scriveremo tutti un bellissimo codice, ma se il tuo codice è stato affrettato, a malapena o non funziona completamente, potresti essere più a tuo agio nel non condividere gli eseguibili o la fonte.
  • Fonte chiusa. Non tutti hanno abbracciato l'open source. Molti articoli sono scritti sul lavoro per DoD, progetti commerciali o progetti finanziati con fondi privati ​​in cui vi sono vantaggi derivanti dall'esposizione del progetto al pubblico, ma ci sono ancora segreti commerciali o primi vantaggi sul mercato che potrebbero essere erosi dall'approvvigionamento aperto del codice o altri prodotti di lavoro.
  • Pubblica ulteriori lavori basati su questo codice. Se il codice non viene pubblicato, può offrire all'autore un vantaggio nella pubblicazione di lavori di follow-up. Altri ricercatori concorrenti potrebbero dover reimplementare il lavoro che potrebbe richiedere del tempo prezioso.

27
Se il documento dipende dal codice sorgente, non dovrebbe essere pubblicato. Se non riesci a pubblicare il codice, non puoi pubblicare l'articolo. Un documento che dice "il nostro programma fa queste cose meravigliose", e non è possibile valutare il documento senza eseguire quel programma, quindi il documento si configura come una brochure pubblicitaria per alcuni software.
Kaz,

3
In completo accordo con Kaz - se per rivedere i colleghi la ricerca è necessario qualcosa che non è disponibile (dati, codice, ecc.), Non dovrebbe essere accettato da una rivista peer-reviewed. Quasi tutte le argomentazioni che lo sviluppatore menziona sono valide anche per il rilascio dei dati ... eppure negli ultimi anni c'è un movimento piuttosto grande verso di esso.
Joe,

3
GRANDE post. Aggiungo anche che a volte scienziati separati che ricreano il software da soli fanno parte della ripetibilità dell'esperimento. Se funziona solo nel modo in cui 1 persona lo ha codificato, ma non nel modo in cui gli altri lo codificano ... i risultati possono essere messi in discussione e gli errori possono essere identificati.
Jimbo Jonny,

4
il tuo secondo all'ultimo punto è il più forte
l --''''''--------- '' '' '' '' '' '' '25

4
@AndresF. Il codice è assolutamente la cosa meno importante in un documento. Un documento è "Ecco cosa ho fatto; ecco i miei metodi; ecco i miei risultati". Il codice è una codificazione del metodo e dovrebbe produrre esattamente gli stessi risultati. Se si desidera riprodurre i risultati del documento ma utilizzare il codice del documento, non è stato riprodotto nulla; quello che dovresti fare è leggere la loro sezione dei metodi, elaborare la tua implementazione e quindi scrivere un articolo su di esso quando non puoi riprodurre i loro risultati.
Tacroy,

40

Leggi la presentazione di Randall LeVeque su "I 10 principali motivi per non condividere il tuo codice (e perché dovresti comunque)" http://faculty.washington.edu/rjl/talks/LeVeque_CSE2011.pdf

Sostiene in modo convincente che il codice è analogo alle prove in Matematica e ci invita a considerare un mondo in cui le prove non sono pubblicate, perché sono troppo lunghe o troppo brutte o non funzionano nei casi limite o potrebbero valere la pena denaro o qualcuno potrebbe rubarlo ...

Fondamentalmente, se stai facendo scienza, allora dovresti pubblicare il tuo codice. Altrimenti, stai facendo l'alchimia e puoi volare fino ai secoli bui e morire di peste per quanto mi riguarda.


7
+1 Ottima presentazione. Sono contento che ci siano persone che spingono per il cambiamento :)
Andres F.

+1 Grazie per il link; ciò potrebbe aiutarmi nelle negoziazioni in corso con il mio capo in merito alla pubblicazione di parte del nostro codice come Open Source.
Frank,

Word up! Una buona analogia merita un voto da parte mia.
nullpotent

Non sono sicuro che questo confronto sia davvero buono per lo scopo qui. Sono un chimico (che preferirebbe vedere molto più codice pubblicato), nessun matematico, ma le prove che ho visto di solito non stanno dando tutti i piccoli passi. Quindi IMHO corrispondono piuttosto a una descrizione ridotta dello pseudo-codice dell'algoritmo che al codice sorgente effettivo.
cbeleites,

27

In generale, i programmi utilizzati per produrre i risultati dei documenti sono solo strumenti e contano solo i risultati. Quindi non vengono inseriti nel documento che presenta il contesto, la metodologia, i risultati e una discussione su di essi.

Ma i risultati devono essere riproducibili. E poi, quando le fonti di dati su cui si basa il documento sono pubblicamente disponibili, anche i programmi che li trasformano in risultati sono generalmente richiesti. Spesso vengono posizionati "da qualche parte" sul Web se non generano problemi di brevetto / copyright. O, almeno, gli autori devono inviarti i programmi se glielo chiedi.


2
Non penso che tu debba inviare chiunque ti chieda il tuo prezioso codice ... IMHO Questa risposta è sbagliata. Ma vorrei vedere un mondo di ricerca in cui le informazioni sono gratuite ...
Dirk,

3
@Dirk Per quanto ne so, questo è relativamente comune negli studi empirici sul software. Nell'ultima (non ancora accettata) presentazione del mio team in questo dominio, uno dei revisori ha esplicitamente chiesto un accesso pubblico ai nostri dati e alcune parti di codice. Non capisco perché il codice dovrebbe essere così prezioso. È (generalmente) solo la realizzazione delle idee descritte nel documento. La pubblicazione dei programmi è un modo per consentire al lettore di verificare se traduciamo correttamente le nostre idee in azioni.
mgoeminne,

1
Hmm, quindi sai (a) chi è il tuo revisore e (b) dai il tuo codice e i tuoi dati a qualcuno che potrebbe essere in diretta concorrenza con te?
Dirk,

1
Non proprio perché (a) I revisori chiedono di pubblicare il codice in un luogo a cui possono accedere in modo anonimo (o l'autenticazione viene effettuata dalla rivista) (b) Poiché il tuo documento è pubblicato, gli altri ricercatori possono usare francamente la stessa metodologia / strumenti per replicare il tuo studio su un altro set di dati o anche sullo stesso set di dati. Le repliche sono meno prestigiose del documento originale, citeranno il tuo lavoro e offrono una valida convalida al tuo documento. Quindi gli autori originali sono felici di lasciare che gli altri facciano tutto questo lavoro per loro.
mgoeminne,

@Paul Non vedo la connessione con la pubblicazione del codice sorgente. Comunque, i bravi redattori prestano attenzione alle note che i revisori scrivono per giustificare le loro decisioni. Pertanto menzioni come "È una cazzata" non sono prese in considerazione. Se l'editore stima che le raccomandazioni dei revisori non siano abbastanza rilevanti, chiede il parere di un altro esperto. Gli studenti laureati non prendono parte al processo di revisione. E se non puoi lasciare che il tuo documento sia accettato dopo alcuni anni di presentazione, dovresti immaginare che questo documento (o il suo contenuto) non è così buono.
mgoeminne,

14

Non è una fonte chiusa. Il software semplicemente non è stato pubblicato affatto.

Risposta breve:

Esistono diversi motivi per non pubblicare il software, ma è raro pubblicare il software in modo chiuso.

Risposta lunga:

Il codice sorgente chiuso indica che il software è stato pubblicato e il codice sorgente no. Ma il caso comune è che né il software né il codice sorgente sono stati pubblicati .

Nella mia esperienza (lavoro nella scienza dell'atmosfera), gli autori sono molto contenti se li contatti e chiedi se puoi ottenere il loro software (incluso il codice sorgente, ovviamente) per fare ricerche. Se ho intenzione di scrivere un articolo con un progetto basato sul loro, almeno ne trarranno una citazione (bene!), Ma probabilmente ne trarranno un articolo scritto da un co-autore (perché, ovviamente, non lo hanno fatto documentare il loro software in modo che qualcuno possa utilizzarlo senza il loro aiuto). Un articolo di co-autore relativamente economico, quindi è ancora meglio .

La vera domanda è:

Perché non pubblicano il software?

Ci sono diverse ragioni per questo:

  • Il software pubblicato necessita di documentazione. Di solito, alle persone non piace scrivere documentazione.
  • I software pubblicati possono attirare utenti. Gli utenti potrebbero avere domande. Questo richiede tempo (ma vedi sopra).
  • Il software pubblicato potrebbe richiedere una manutenzione non banale.
  • Il software di pubblicazione richiede l'hosting.

L'elenco potrebbe essere allungato. Merita di essere una domanda separata, su Academia.SE, non qui.

(Nota che nel mio gruppo pubblichiamo il nostro software - concesso in licenza in base a GPL )


Potrebbe anche essere possibile pubblicare il codice, ma con una licenza che non consente la modifica.
asmeurer,

Non avevo nemmeno pensato a questa situazione in cui gli autori avrebbero pubblicato solo una versione compilata solo per dimostrare che il software esiste davvero, perché non aiuta a capire come hanno fatto - per come intendo i dettagli di implementazione .. Adoro leggere la fonte codice!
alecail,

8

Ciò potrebbe sembrare cinico, ma nella mia esperienza i documenti di ricerca non sono scritti per essere facili da capire o semplici da riprodurre. Invece, nella comunità di ricerca è più importante avere un articolo che suona e sembra molto scientifico. Per questo motivo la maggior parte degli autori trasforma il proprio codice in formule matematiche e prova a dimostrare che il loro algoritmo è matematicamente corretto. Di solito il numero di pagine per un articolo del genere è limitato, quindi non c'è spazio per pubblicare il codice. Tuttavia, questo ovviamente non limiterebbe nessun autore a collegarsi al codice completo con un URL ...

Si potrebbe presumere che se il codice non viene pubblicato, o gli autori vogliono mometarizzare le loro scoperte o (ciò che penso personalmente sia il caso più spesso) hanno paura che le persone vedano che la loro ricerca non è eccezionale come sostengono. Spesso i risultati si applicano solo a un numero molto limitato di casi.

Inoltre, ho visto che da un semplice programma / algortihm sono stati fatti diversi documenti di ricerca. Se il codice fosse pubblicato, sarebbe difficile scrivere ulteriori articoli sullo stesso argomento. Quindi la conoscenza viene trattenuta per poterla pubblicare nel tempo in piccole porzioni.

Tieni sempre presente che nelle università non sono tanto i risultati o l'applicabilità della ricerca a essere importanti, ma il numero di articoli che pubblichi. È triste, ma vero.


13
Detto questo, prova a chiedere ai ricercatori! A volte ti forniranno il codice sorgente.
Lucina,

3
Non credo che tu sia pienamente onesto qui: "Invece, nella comunità di ricerca è più importante avere un articolo che suoni e sembri molto scientifico". Ciò implica che non c'è valore per il contenuto sottostante, quasi perché non puoi capirlo perché sembra scientifico. Il numero di articoli che pubblichi è quasi irrilevante se nessuno è molto interessato al contenuto. Questa risposta, a mio avviso, parla dei tuoi pregiudizi piuttosto che della realtà.
temptar,

2
@temptar Beh, forse sono un po 'negativamente influenzato. Ciò che in realtà mi colpisce di più è che la maggior parte dei ricercatori ovviamente non sono disposti a descrivere le loro ricerche in un modo che sia facile da capire. Una volta ho avuto un professore che, dopo avermi spiegato un algoritmo, ha aggiunto: "Ma nel documento lo scriveremo più complicato per farlo sembrare più scientifico".
codingFriend1

6
@ codingFriend1: non puoi e non dovresti generalizzare sulla base di un'unica esperienza. Questo è un approccio profondamente non scientifico. Devi considerare chi è il target di riferimento per uno specialista della ricerca e in molti, molti casi, non sono le persone che hanno bisogno del tipo di spiegazione che ritieni necessaria. Questo è ciò per cui abbiamo comunicazioni scientifiche: da collegare ai non specialisti.
temptar,

3
Sostengo la risposta di codingFriend1. Questa è stata una critica comune rivolta alla comunità scientifica in cui vivo, e in particolare alla mia Università (che è comunque la migliore del paese): che gli scienziati sono spinti a pubblicare articoli, più esotici sono, meglio è. "Pubblica o muori". Anche gli scienziati delle aree con cui ho meno familiarità lo riportano. Mi dispiace, ma in molti posti è la verità triste e diffusa.
Andres F.

7

A parte l'intenzione di monetizzare, non vedo una buona ragione per lasciare il codice sorgente fuori dai documenti di ricerca. C'è un piccolo movimento di partenza che propone di fornire il codice sorgente come regola per pubblicare qualsiasi ricerca che dipenda dal software in qualche modo, forma o forma. Puoi leggere di più al riguardo, si chiama Science Code Manifesto .


1
+1 per il link! Incarna pienamente la mia convinzione in ciò che scienza e ricerca dovrebbero essere.
Andres F.

6

Le risposte di cui sopra mancano alcune ragioni pratiche che sorgono frequentemente in Computer Graphics (l'area in cui è stato pubblicato il documento citato dall'autore). Il rilascio del codice varia notevolmente tra i campi in CS - ad esempio in Machine Learning, il codice viene solitamente pubblicato. In Human Computer Interaction, il codice non viene quasi mai pubblicato.

Ho rilasciato un bel po 'di codice in Computer Graphics, e mentre penso che gli autori dovrebbero rilasciare il loro codice, ci sono molte ragioni semplici, non basate sulla teoria della cospirazione, per cui non lo fanno . Per esempio

1) La maggior parte dei progetti di ricerca di Computer Graphics prevede la collaborazione tra più ricercatori, spesso in diverse istituzioni, ognuno dei quali fornisce alcuni elementi del puzzle (ovvero algoritmi, librerie, ecc.). Per rilasciare il codice di lavoro, tutti i ricercatori devono essere d'accordo. Raramente questa è una discussione semplice e di solito è più facile evitare il problema.

2) Spesso il codice per un singolo documento è incorporato in una base di codice più grande sviluppata in un laboratorio. Quella base di codice conterrà altri lavori non pubblicati. Separare il codice per un singolo progetto è un sacco di lavoro, spesso senza vantaggi immediati per le persone che devono svolgere questo lavoro (vedi incentivo sotto).

3) Le università hanno spesso diritti di proprietà intellettuale sul codice. Quindi, è necessario contattare un "ufficio delle innovazioni" che renderà la tua vita infinitamente difficile, desiderando che tu documenti l '"invenzione" in modo che possano brevettarla, ecc., Prima di aprirla. In alcuni casi l'università può persino negare il permesso di rilasciare la fonte (questo varia tra le istituzioni ed è notevolmente complicato da (1))

4) Molte ricerche di Computer Graphics sono condotte da società. In tal caso, gli autori non possiedono neanche il codice e devono ottenere l'autorizzazione dagli avvocati per rilasciare il codice. Gli avvocati hanno poco o nessun incentivo per dire di sì.

5) Non vi è alcun incentivo a pubblicare il codice. La maggior parte del codice di ricerca di Computer Graphics non viene mai utilizzato da nessun altro. Anche se lo è, per un codice generico di solito ricevi solo un riconoscimento (senza valore in termini di CV). Se sei fortunato riceverai una citazione. I comitati di assunzione e le agenzie di sovvenzione in genere non si preoccupano un po 'se hai rilasciato il tuo codice. Quindi, il tempo speso per preparare il codice per il rilascio è tempo perso che avrebbe potuto essere speso su un altro documento. (Ci sono persone che stanno attivamente cercando di cambiare questo in Computer Graphics).

6) Ci sono incentivi a non pubblicare codice. Il codice a volte può trasformarsi in società startup, essere concesso in licenza a società esistenti, ecc. Ciò finanzia la ricerca futura. Dobbiamo tutti mangiare.


# 2 è molto significativo. Non solo può essere un'enorme quantità di lavoro per separare il codice rilevante per un documento, ma una volta che lo fai, potresti trovarlo fuori dal contesto (cioè lontano dagli altri 100 strumenti, librerie e configurazioni personalizzate di il laboratorio), è essenzialmente inutile e impossibile da capire o usare. Inoltre, il "codice di ricerca" è spesso molto fragile, progettato quanto basta per dimostrare il punto di un documento, non per creare un sistema software robusto, e il ricercatore non ha il tempo o la propensione a sistemarlo abbastanza per essere qualcosa di diverso da un forte mal di testa a chiunque altro.
Larry Gritz,

5

Dipende. Una persona che scrive un documento o il proprio supervisore decide cosa deve essere fatto con il codice sorgente. A volte, le persone rendono il progetto un open source.

A volte, i progetti sono generalmente finanziati da aziende, il che significa che sono di loro proprietà. In questi casi, l'autore del documento non è autorizzato a mostrare il codice.


3

Di solito è una questione di limiti di pagina. Se l'algoritmo è estremamente breve, spesso viene rappresentato, almeno come pseudocodice, nel documento. D'altra parte, se la versione stampata del codice sottostante è lunga anche una manciata di pagine, la stampa del codice non lascerebbe spazio alla carne dell'articolo. Un articolo di giornale di dieci pagine è un lungo articolo.

Non rendere disponibile la fonte crea un potenziale di frode. A causa di questo potenziale, molte riviste richiedono ora che gli autori inviino il loro codice sorgente come informazioni supplementari (che è possibile ottenere dalla rivista se si ha accesso; potrebbe essere coinvolta una forte quota di abbonamento). Alcuni altri giornali richiedono agli autori di rilasciare il loro codice sorgente a chiunque lo richieda. Eppure altre riviste sono ancora nei secoli bui; il codice sorgente non è richiesto per l'invio e gli autori non sono tenuti a rilasciarlo.

La cosa più semplice da fare è chiedere agli autori se possono fornirti il ​​codice sorgente. Al giorno d'oggi gli indirizzi e-mail degli autori sono in genere elencati nella maggior parte dei giornali.


1
Penso che il codice sorgente sia disponibile per la revisione non richieda che il suo testo completo sia incluso nel documento reale :) Non solo a causa del potenziale rischio di frode, ma penso che sia effettivamente utile per i revisori poter ricontrollare che non hai commettere un vero errore. Soprattutto se i programmatori fossero scienziati e non programmatori!
Andres F.

3

La mia esperienza di scienziato (5 articoli pubblicati) è che spesso il diario non è tenuto a rilasciare il codice utilizzato per creare i risultati. Ciò non significa che le riviste non accetterebbero gli script. Molte riviste consentono materiale supplementare online. Alcune riviste orientate verso algoritmi e simili (es. Computer e Geoscienze) richiedono di aggiungere la fonte di un algoritmo, ma questa è più un'eccezione che una regola.

Oltre alla cultura delle riviste, per gli scienziati il ​​codice è solo un mezzo per raggiungere un fine. Molti non sono sviluppatori di software professionali. Poiché molti considerano il codice solo uno strumento per esprimere la scienza, non sentono l'urgenza di pubblicare anche il codice. Inoltre, lucidare il tuo codice al punto da poterlo pubblicare richiede molto lavoro. Uno scienziato è pagato per fare scienza, non per scrivere software.


Ma il software è, in un certo senso, la prova. Ecco di cosa tratta l'informatica: i programmi sono prove. Penso che questo sia un caso di scarsa fiducia nei risultati, o un malinteso culturale sull'importanza di produrre effettivamente una prova funzionante della tua ricerca.
Andres F.

1
Non stavo parlando della persistenza informatica, ma più scienza in generale. Nel CS teorico molte persone lavorano su algoritmi e prove in senso matematico. Il software è solo un'implementazione, un ripensamento.
Paul Hiemstra,

Se il tuo codice è una nota a piè di pagina nel documento, sono d'accordo. Se si tratta di una sorta di verifica e ha una sua sezione, per quanto piccola, fa parte della prova o almeno della convalida. Se non pubblichi il codice, allora è chiaramente non pertinente e potresti anche rimuovere ogni menzione dal tuo documento!
Andres F.

2

Più spesso, il programma attuale è solo uno strumento per arrivare alla fine, piuttosto che il prodotto a sé stante. Fornire tutti i dettagli del codice sorgente sarebbe come fornire un disegno completo della penna utilizzata per firmare il rapporto e / o gli schemi del PC.

Detto questo, specialmente laddove viene invitata la revisione tra pari, il codice sorgente sarà disponibile - anche se in qualche forma di accordo di non divulgazione (NDA) - in quanto vi è una proprietà intrinsecamente intellettuale incorporata nel programma.

Se sei veramente interessato al codice, suggerisco che il commento di @Buttons sia il miglior consiglio: chiedi loro :)


1

Molto dipende dallo scopo per cui è stato scritto il codice. Se fosse per dimostrare un punto, potrebbe darsi che non sia ottimizzato e quindi non ideale per essere rilasciato. Se i concetti e la metodologia sottostanti sono validi, dovrebbe essere possibile ricreare il risultato del codice da zero. Potrebbero esserci anche problemi di copyright e proprietà.

In linea di principio, non è tecnicamente impossibile rilasciare il codice ma le ragioni per le quali potrebbe non essere rilasciato sono varie. Probabilmente non c'è una risposta semplice a questa domanda per quel motivo. In casi specifici forse potresti chiedere ai ricercatori interessati.


1

Il documento che hai citato ha già 28 pagine e la maggior parte del contenuto riguarda le decisioni di progettazione relative alla risoluzione del problema (indicato nel titolo).

Il codice è il passaggio finale per convalidare il design. Non è banale, ma non è la parte che aggiunge valore ai risultati del documento, soprattutto se si considerasse lo spazio che occuperebbe.

Non tutti i casi sono uguali. Alcuni articoli forniscono codice sorgente o almeno pseudo codice. Alcuni editor non lo consentono. Alcuni lo consentono, ma a causa dello spazio, gli autori non lo includono. Un diario in cui ho pubblicato il codice sorgente lo ha formattato come "figure" e la versione elettronica lo ha come dati di immagine, anche se l'ho inviato come testo.


1

Gli incentivi contano e gli incentivi dei ricercatori generalmente assicurano che possano produrre un flusso costante di documenti che si basano progressivamente l'uno sull'altro. Gli studenti laureati in genere hanno bisogno di 3-5 articoli pubblicati che possono trasformare in singoli capitoli della loro tesi per laurearsi. La facoltà junior deve generare quante più pubblicazioni possibile prima della revisione del mandato. Per questo motivo, la maggior parte dei documenti accademici sono realmente articoli ndi una serie. Ad esempio, il documento a cui fai riferimento si basa su un documento dello stesso gruppo pubblicato un anno prima e discute il motivo che il prossimo documento tratterà probabilmente.

La pubblicazione del codice sorgente consente potenzialmente a un altro ricercatore in un gruppo diverso di produrre carta n+1prima che l'autore originale faccia o almeno per produrre un documento che copra una parte significativa del terreno che l'autore si aspettava di coprire come parte di questo flusso di ricerca. In tal caso, lo studente laureato potrebbe facilmente ritrovarsi a trascorrere altri 6-12 mesi nella scuola elementare al fine di produrre abbastanza risultati di ricerca per laurearsi. Il membro della facoltà può finire con un altro documento pubblicato quando arriva il momento della revisione del mandato. Entrambi questi sono ovviamente un duro colpo per la carriera del ricercatore. Aggiungete il fatto che le applicazioni accademiche fanno spesso parte degli sforzi di ricerca di più persone all'interno di un gruppo di ricerca (direttamente o perché condividono determinati componenti) e c'è una pressione all'interno del gruppo di ricerca a non rilasciare codice che potrebbe finire per ferire qualcuno che lavori con tutti i giorni.

Spesso si svolgono discussioni simili in campi in cui la raccolta di dati non elaborati richiede tempo ed è altamente distribuita. In astronomia, ad esempio, un gruppo di ricerca può impiegare anni a raccogliere dati prima di avere informazioni sufficienti per pubblicare un articolo. Ma poi useranno quei dati per produrre una serie di articoli. I gruppi di ricerca sono molto riluttanti a condividere un numero maggiore di insiemi di dati di quanto assolutamente necessario perché diventa troppo facile per altri gruppi cavalcare il tempo investito nella raccolta dei dati per raccogliere i frutti dell'analisi effettiva dei dati.

Alla fine, molto di questo codice verrà rilasciato proprio come i dati astronomici vengono infine rilasciati. Ciò accade spesso quando l'autore raggiunge la fine di quella serie di articoli o quando la maggior parte dei gruppi di ricerca che stanno lavorando su argomenti simili hanno motori simili, quindi il rilascio del codice non offre più un vantaggio competitivo a un nuovo ricercatore.

Sarebbe ideale per la scienza se i dati e il codice fossero rilasciati più rapidamente. Ma ciò danneggerebbe spesso il ricercatore scientifico e questo è il motivo per cui gli incentivi contano in questo caso.


"La pubblicazione del codice sorgente consente potenzialmente a un altro ricercatore in un gruppo diverso di produrre carta n + 1 prima dell'autore originale o almeno di produrre un documento che copra una parte significativa del terreno che l'autore si aspettava di coprire come parte di questo flusso di ricerca ". Questo non mi sembra così facile. Molte persone (incluso me stesso) avrebbero difficoltà a comprendere il tipo di codice che i ricercatori scrivono, senza l'aiuto degli autori, e tanto meno estenderlo. Conosci casi in cui ciò è realmente accaduto?
Faheem Mitha,

1

Come qualcuno che ha fatto questo (dalla parte degli studenti) diverse volte in passato: spesso i professori che scrivono il giornale non vedono nemmeno il codice sorgente da soli. Faranno scrivere ai loro studenti laureati, quindi chiederanno l'eseguibile finale (o anche solo una conferma del risultato) quando sarà completo.

Inoltre, spesso il codice scritto non è comunque molto leggibile, perché gli studenti l'hanno appena hackerato insieme per farlo, e perché (sebbene siano molto brillanti) gli studenti laureati senza esperienza nel mondo reale tendono a non essere i migliori programmatori del mondo ...


1

La maggior parte dei motivi che mi vengono in mente sono già stati sollevati qui, ma ho pensato di aggiungere altri due che mi sono realmente accaduti:

Il diario non ha idea di cosa fare .

Per uno dei lavori a cui stavo lavorando, ho deciso che lo avrei incluso assolutamente, senza dubbio includendo il codice sorgente (l'intero punto del documento era la visualizzazione dei dati) e i dati di esempio da seguire. Così insieme alla presentazione ho allegato Supplementi elettronici 1 e 2: uno script R con il mio codice e un file CSV con i dati necessari per detto script R.

Il diario, a quanto pare, può prendere integratori elettronici solo se sono stati inseriti in file Word. Dopo aver provato per buona parte della giornata a ottenere lo script R in quella forma, ho rinunciato e ho deciso di non includere il codice come supplemento. Potrei averlo ospitato presso la mia Università, ma da studente universitario sapevo che avrei perso il mio account lì in circa 1 anno - l'open source non sarebbe di alcuna utilità se fosse stato immediatamente superato da LinkRot.

Alla fine l'ho ospitato su GitHub e ho inserito un riferimento a quello nel documento, ma era perché volevo davvero inserire il codice. Posso vedere, soprattutto perché la maggior parte delle persone nel mio campo non usa qualcosa come GitHub, solo decidendo che lo sforzo non sarebbe valso la manciata di persone che lo avrebbero scaricato e che avrebbero potuto inviarmi un'e-mail se lo volevano davvero.

Il diario non è interessato

Ho inserito alcuni piccoli dettagli sul codice stesso in un documento su richiesta di un revisore, ma è un giornale clinico (leggi: nessuno codici), non consente integratori elettronici e, di nuovo, l'aggiunta del codice sorgente sarebbe stata probabilmente più problemi di quanti ne valesse la pena.

Ironia della sorte, se qualcuno è andato a cercare il codice, è (o presto sarà) open source, ma stavo già correndo al limite di "Questo sta diventando distrattamente tecnico" e ho deciso che il brief "rende felice il recensore 'menzione era tutto ciò che stavo per fare.


0

Molte volte l'implementazione (ovvero il software non ha importanza) ma sempre più l'implementazione influisce sui risultati.

Ogni volta che l'implementazione è importante ... il codice sorgente dovrebbe essere sicuramente reso disponibile! Più i risultati dipendono dall'implementazione o dai metodi computazionali, più diventa importante pubblicare il codice sorgente.


Per quanto riguarda chi / dove memorizzerà il codice sorgente. Idealmente, il diario in cui l'articolo è pubblicato memorizzerà l'intero codice sorgente. Tuttavia, molte delle riviste più importanti non memorizzano sia l'articolo che il codice sorgente. IMO se il giornale non ha la capacità di memorizzare l'intero codice sorgente, l'autore è responsabile di trovare un posto di archiviazione indirizzabile web per il codice sorgente.
Trevor Boyd Smith,

0

Vorrei aggiungere alcuni punti sul tipo di codice di cui mi occupo come chemometrico (chimico che esegue l'analisi dei dati):

  • Le persone che scrivono codice di analisi dei dati (come faccio io) sono relativamente poche rispetto alle persone che usano quel codice. "Codice personalizzato scritto in casa" non significa che gli autori lo abbiano scritto - potrebbe essere il codice dei colleghi, quindi gli autori non possono pubblicarlo.

  • È possibile pianificare una pubblicazione separata del codice e l'autore del codice (o il supervisore) può essere preoccupato che la novità venga persa se il codice è stato (parzialmente) reso pubblico in precedenza.
    Anche se il giornale a cui è destinata la pubblicazione del codice non si oppone al fatto che il codice sia stato reso pubblico prima, la pura preoccupazione del supervisore (o di qualcuno nell'ufficio IP) può essere sufficiente per interrompere la pubblicazione del codice.

  • Il codice di analisi dei dati è spesso adattato ai dati. Non ha molto senso senza i dati. (Potresti sostenere che i dati dovrebbero essere pubblicati comunque, ma questa è una domanda diversa e fuori tema qui.)
    In ogni modo, nel mio istituto, archiviamo i dati grezzi e il codice di analisi dei dati insieme al documento. La politica di default non è (ancora?) Per renderli disponibili al pubblico , ma sarebbero certamente disponibili su richiesta.

  • (La visione tradizionale di ciò che è riproducibilità in chimica corrisponde piuttosto a una descrizione (possibilmente pseudo-codice) dell'algoritmo che alla spedizione del codice sorgente effettivo)

  • Molti dei miei colleghi utilizzano strumenti interattivi per l'analisi dei dati che non registrano i passaggi dell'analisi dei dati. Quindi non esiste un codice sorgente che potrebbe essere pubblicato. L'analisi dei dati corrisponde meno a una programmazione che a un approccio di laboratorio: fai le cose e scrivi quello che fai e osserva nel tuo libro di laboratorio.


Questa risposta è dal punto di vista dell'analisi dei dati, quindi piuttosto di una nicchia particolare. Tuttavia, questa domanda è collegata dal mondo accademico.SX, quindi i non informatici possono venire a leggere questo.
cbeleites,
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.