Como vincular código a publicações

40

Trabalhos acadêmicos em computação científica (e em muitos outros campos atualmente) normalmente envolvem uma certa quantidade de código ou mesmo pacotes de software completos que foram escritos especificamente para esse trabalho ou que foram usados ​​para obter resultados no trabalho. Qual é a melhor maneira de ajudar os leitores do artigo a acessar o código? Minha abordagem atual é colocar um link para um repositório do Github (junto com uma tag de versão específica) no artigo ou em uma citação.

David Ketcheson
fonte
2
Compartilhar o código é uma ótima idéia e deve ser feito mais. Eu sei que poderia ser melhor em fornecer o código relevante para um artigo. Um repositório do Github parece ser uma boa solução. Certamente muito melhor do que incluir o código-fonte em um apêndice, o que já vi feito para esforços menores de codificação.
Barron
4
Esta é uma pergunta relacionada ao MO.
JM
@JM Obrigado, as respostas no MO são muito boas!
David Ketcheson
Note que você pode publicar ipython cadernos no github e eles são prestados, exceto para peças interativas
denfromufa
11
@denfromufa Infelizmente, o Github desativa o Mathjax, portanto a matemática também não é renderizada. Isso o torna bastante inútil para os campos mais relevantes. Mas sempre há nbviewer.
David Ketcheson

Respostas:

17

Bem, acho que você tem algumas opções.

  1. Se você possui uma página estável - como uma patrocinada por uma universidade ou outra instituição sem fins lucrativos que provavelmente não desaparecerá tão cedo -, você pode publicar lá.
  2. Você pode usar um serviço como Github ou Bitbucket ou SourceForge para distribuir o código.
  3. Se o código for de valor geral marginal (é um código de análise para um conjunto específico de condições, etc.), você pode disponibilizá-lo como um download de "informações suplementares" no documento em que o utiliza.
  4. Você pode usar alguma combinação dos itens acima.

Em qualquer um ou em todos esses casos, no entanto, você deve indicar claramente o fornecimento no artigo e indicar que tipo de licenciamento é (GPL, Creative Commons etc.), para que não haja problemas relacionados à IP no futuro.

aeismail
fonte
6
Acho que devemos colocar o código no lugar mais provável para sobreviver e, em vários lugares, se possível. As páginas da universidade parecem menos propensas a sobreviver do que os serviços de hospedagem, por exemplo. Ter o diário disponibilizando alguns instantâneos também faz sentido. Infelizmente, nenhum diário que conheço reposiciona a hospedagem.
Faheem Mitha
11
Um aluno provavelmente não deve colocar software em uma home page pessoal; no entanto, eu argumentaria que, para um código de pesquisa típico, provavelmente há mais a ganhar distribuindo-o em uma página associada a um grupo de pesquisa do que em uma página externa em que a atribuição provavelmente será perdida. Quanto aos periódicos, é verdade que eles não fazem hospedagem de repositórios. No entanto, acho que a capacidade de ter "informações suplementares" na forma do código de pesquisa satisfaz a maioria dos requisitos do desenvolvimento científico responsável de software. (Se necessário).
aeismail
Meu sentimento é que as páginas da universidade são mais propensas a se perder do que os sites de hospedagem regulares. Obviamente, a maioria dos sites de hospedagem populares hoje em dia (Bitbucket, Github, Google Code) não existe há tanto tempo. Por outro lado, o Sourceforge, por exemplo, já existe há algum tempo.
Faheem Mitha
Há outros problemas a serem observados; Preocupações com PI e regulamentos universitários ou governamentais também podem controlar a escolha de repositórios. Mas o contra-argumento é que existem vários códigos (o NAMD é um exemplo importante) que tiveram uma distribuição bem-sucedida em sites pertencentes a universidades. Em geral, o "significado" do código determinará como é visível. Duvido que um código que desenvolva uma base significativa de usuários desapareça completamente.
precisa saber é
11
É verdade, mas se o código for obscuro, não significa que está OK se desaparecer. E seria de esperar que a maioria dos códigos científicos estivesse sob licença gratuita e sem restrições irracionais. Acredito que o NIH, por exemplo, está agora exigindo isso para o trabalho desenvolvido com o dinheiro do NIH (contribuinte). Eu acho que esse deveria ser o caso de todos os projetos financiados pelos contribuintes.
Faheem Mitha
8

Ótima pergunta e ótimas respostas, mas acho que nenhuma aborda adequadamente a questão da persistência, se o objetivo é atingir o mesmo padrão concedido à própria publicação. (Que pode ser bobo devido às chances de o código ainda ser executado , mas ainda assim ser pelo menos tão útil quanto a publicação).

Os suplementos de periódicos de sites da universidade não são persistentes

É improvável que os sites da universidade forneçam estabilidade ou redundância para preservar o conteúdo hospedado. O conteúdo é mais difícil de citar e geralmente não possui metadados legíveis por máquina.

Infelizmente, parece que os periódicos não estão se saindo muito melhor na manutenção de seus materiais suplementares (ver Anderson et al. 2006 ) e podem não aceitar os formatos necessários, ou até mesmo aceitar material suplementar (veja um exemplo notável ).

Por esses motivos, as pessoas preocupadas com o arquivamento de dados a longo prazo voltaram-se por unanimidade à defesa do uso de repositórios dedicados, em vez de sites ou materiais complementares, e muitos periódicos agora exigem essa prática . Parece justo que o código seja mantido com esse padrão.

A solução de muitas cópias?

O Github e sites relacionados ainda não comprovaram a longevidade na escala de cem anos alcançada pelas bibliotecas universitárias e pelos editores estabelecidos. Ao facilitar a distribuição ampla, ele pode fornecer uma solução que outros ecoaram nos comentários, incluindo um colega que não pôde comentar sobre a troca de pilha,

... vamos salvar o que resta: não por cofres e fechaduras que os cercam dos olhos do público e os consignam ao desperdício de tempo, mas por uma multiplicação de cópias, que os colocará fora do alcance do acidente.

- Thomas Jefferson, 18 de fevereiro de 1791

Figshare e o padrão CLOCKSS

O único padrão de arquivamento que conheço é o figshare , que pode aceitar repositórios de código completos (como "conjuntos de arquivos" no momento, mas acredito que em breve terá a opção de ser listado como tipo "código"). A peça chave para o figshare não é apenas o DOI citável com metadados programáticos, mas o suporte do serviço de arquivamento CLOCKSS , que mantém cópias de todo o seu conteúdo em 12 nós geograficamente e geopoliticamente distribuídos em todo o mundo. Caso o figshare saia do negócio ou deixe de existir, isso fará com que todo o seu conteúdo seja disponibilizado gratuitamente no CLOCKSS.

Consequentemente, sugiro usar o Github para distribuição de código, mas também fornecer uma cópia de arquivo para o figshare no momento da publicação.

cboettig
fonte
11
O figshare é um grande passo à frente, embora a licença CC-BY não seja uma licença de software, e eu não sei quantos cientistas estão dispostos a liberar seu código sob CC0, então esse é um problema a ser resolvido. Eu aprecio o fato de que eles usam DOI e CLOCKSS, no entanto, isso é ótimo.
Aron Ahmadia 10/10/12
Sim, um grande ponto sobre as licenças ainda serem um pouco problemáticas, principalmente para softwares mais desenvolvidos. Para os scripts replicarem uma análise, pude ver CC0 mais adequado.
cboettig
O código do Google pode ser um pouco melhor para o público em geral, pois você pode ter uma página da Web melhor com resumo, imagens, link DOI, maior visibilidade na pesquisa etc. Você definitivamente deve colocar um tgz na seção Download e fornecer um link na primeira página. Lembre-se de que a maioria dos não desenvolvedores nem sequer conhece o controle de versão e muito menos o git / hg. Subversion é tanto quanto eu gostaria para uma audiência mais ampla.
stali
11
O @stali lembra que o github também suporta páginas da web personalizadas para repositórios através de páginas gh e tarballs para download a partir de downloads. Mas nem o Google nem o Github fornecem um DOI separado para o código, nem abordam a longevidade do arquivo além da vida útil da empresa.
cboettig
4

Você pode usar algumas técnicas sofisticadas de pdf para simplesmente anexar o código ao pdf (ou seja, os arquivos de código são incorporados ao pdf e podem ser "baixados" com um clique em algum botão do pdf). Isso pode ser realizado com o pacote attachfile , por exemplo. Claro, este trabalho com pré-impressões (embora eu não saiba se já funciona com o arxiv), mas você provavelmente terá problemas com arquivos de diário ...

Dirk
fonte
Muito legal! Eu não sabia que o LaTeX poderia fazer isso.
qubyte
4

Para pequenos scripts específicos de um projeto de pesquisa específico, o melhor local para publicação é o site da revista, como "informações suplementares" ao artigo. É aí que é mais fácil encontrar alguém que lê o artigo.

Pacotes mais substanciais interessantes para outros projetos também devem ser publicados separadamente. Infelizmente, não há uma solução realmente boa no momento. Idealmente, uma publicação de código seria permanentemente acessível por meio de um DOI, como um artigo, mas não conheço nenhum site de hospedagem que ofereça DOIs e garanta sua permanência. Repositórios públicos como Github ou Bitbucket são talvez a melhor aposta no momento.

A melhor solução seria publicar o papel empacotado com o código e os dados que o acompanham, mas isso ainda não é tecnicamente viável. Estou trabalhando em um protótipo de pesquisa que explora essa idéia, consulte este site para obter detalhes.

Khinsen
fonte
11
+1 para ActivePapers. Acho que agora não atende às minhas necessidades, mas fico feliz em ver alguém trabalhando em uma solução!
David Ketcheson
A figshare fornece DOIs: consulte figshare.com/blog/…
Jeromy Anglim
3

Eu adotei duas táticas, nascidas do fato de prever mudanças em instituições em breve, para que o URL da minha universidade não seja estável nem um pouco.

Quando o código é relativamente curto, tentei incluí-lo como um apêndice suplementar no próprio periódico, supondo que eles provavelmente farão um trabalho decente mantendo o papel e o código aproximadamente no mesmo lugar. Isso é especialmente útil para códigos em que não há uma grande quantidade de interesse geral - código que é um pouco inútil sem o documento em questão para fornecer contexto.

Mas para código-fonte, software real e projetos mais complicados ou de interesse geral, eu tenho seguido sua tática de vincular a um repositório GitHub, que deve pelo menos ser estável para a vida útil produtiva média dos meus trabalhos.

Fomite
fonte
2

Dê uma olhada em http://www.runmycode.org . Eles hospedam sites complementares para códigos associados a trabalhos de pesquisa. Se o código for R, Matlab ou alguns outros, ele realmente executará o código para você. Ainda não tentei, mas pretendo. Acho que David Donoho e seus colaboradores o usam.

Paul G. Constantine
fonte
Ah Você já usou isso. runmycode.org/CompanionSite/site.do?siteId=158
Paul G. Constantine
O @David Ketcheson e eu também fizemos um experimento em dezembro usando a pilha wakari.io e os blocos de anotações IPython para um de nossos códigos baseados em Python. Você pode conferir os cadernos de reprodutibilidade do PyClaw aqui .
Aron Ahmadia
0

As bibliotecas universitárias podem ser um local para este ou o centro de hospedagem da universidade.

vanCompute
fonte
-2

Como leitor, uma declaração no artigo de que o código pode ser obtido entrando em contato diretamente com o autor seria eficaz. Como autor, isso poderia ajudar a promover a colaboração e me permitir lembrar as pessoas de citarem meu artigo se elas usarem o código em seu trabalho.

JxB
fonte
4
Esse é um ponto de vista interessante e estou curioso para ver como é comum. Pessoalmente, é disso que estou tentando fugir. Sinto que é como publicar um artigo incompleto e exigir que os leitores solicitem tudo. Veja sciencecodemanifesto.org .
David Ketcheson
2
Tendo o endereço de contato em um dos meus artigos mais importantes estando essencialmente morto - e inseguro sobre alguns outros - sou geralmente contra isso como uma solução. "Entrar em contato comigo" não é necessariamente a coisa mais fácil do mundo - especialmente uma década depois.
fomite
2
A abordagem "entre em contato comigo" também não garante a reprodutibilidade. Quando você entra em contato comigo solicitando algum código, eu provavelmente enviaria a versão mais atualizada, não a que usei no artigo original. Se eu não tivesse mais a versão original.
khinsen
3
Estudos empíricos, na verdade, entrando em contato com um autor e solicitando dados, mesmo quando o autor assinou um contrato de licença para fornecê-lo mediante solicitação, mostraram que surpreendentemente poucos autores cumprem. Por exemplo, consulte dx.doi.org/10.1371/journal.pone.0007078 e citações nele. Se isso não funcionar bem para dados, suspeito que também não seja uma boa solução para código.
cboettig