Cara menautkan kode ke publikasi


40

Makalah ilmiah dalam komputasi ilmiah (dan banyak bidang lain, saat ini) biasanya melibatkan sejumlah kode atau bahkan seluruh paket perangkat lunak yang ditulis khusus untuk makalah itu atau digunakan untuk mendapatkan hasil dalam makalah tersebut. Apa cara terbaik untuk membantu pembaca makalah mengakses kode? Pendekatan saya saat ini adalah meletakkan tautan ke repositori Github (bersama dengan tag versi tertentu) di kertas atau dalam kutipan.


2
Berbagi kode adalah ide bagus dan harus dilakukan lebih banyak. Saya tahu saya bisa lebih baik dalam menyediakan kode yang relevan untuk sebuah makalah. Repo Github sepertinya solusi yang bagus. Tentu jauh lebih baik daripada memasukkan kode sumber dalam lampiran, yang saya lihat dilakukan untuk upaya pengkodean yang lebih kecil.
Barron

4
Ini adalah pertanyaan MO terkait.
JM

@ JM Terima kasih, jawaban pada MO sangat bagus!
David Ketcheson

perhatikan bahwa Anda dapat menerbitkan notebook ipython di github dan diberikan, kecuali untuk bagian interaktif
denfromufa

1
@denfromufa Sayangnya, Github menonaktifkan Mathjax, jadi matematika juga tidak diterjemahkan. Itu membuatnya sangat tidak berguna untuk bidang yang paling relevan. Tapi selalu ada nbviewer.
David Ketcheson

Jawaban:


17

Saya pikir Anda punya beberapa pilihan.

  1. Jika Anda memiliki halaman stabil — seperti halaman yang disponsori oleh universitas atau lembaga nirlaba lainnya yang tidak akan segera hilang dalam waktu dekat — Anda dapat menerbitkannya di sana.
  2. Anda dapat menggunakan layanan seperti Github atau Bitbucket atau SourceForge untuk mendistribusikan kode.
  3. Jika kode tersebut memiliki nilai umum marginal (ini adalah kode analisis untuk serangkaian kondisi tertentu, dll.), Anda dapat membuat kode tersebut tersedia sebagai unduhan "informasi tambahan" dengan kertas di mana Anda menggunakannya.
  4. Anda dapat menggunakan beberapa kombinasi di atas.

Namun, dalam salah satu atau semua kasus ini, Anda harus menunjukkan sumber dengan jelas dalam artikel, dan menunjukkan jenis lisensi seperti apa (GPL, Creative Commons, dll.), Sehingga tidak ada masalah terkait IP di telepon.


6
Saya pikir seseorang harus meletakkan kode seseorang di tempat yang paling mungkin untuk bertahan hidup, dan di banyak tempat jika memungkinkan. Halaman-halaman universitas tampaknya lebih kecil kemungkinannya untuk bertahan daripada layanan hosting, misalnya. Memiliki jurnal membuat beberapa snapshot tersedia juga masuk akal. Sayangnya, tidak ada jurnal yang saya tahu melakukan repo hosting.
Faheem Mitha

1
Seorang siswa seharusnya tidak boleh meletakkan perangkat lunak di halaman rumah pribadi; Namun, saya berpendapat bahwa untuk kode penelitian tipikal, mungkin ada lebih banyak yang bisa diperoleh dengan mendistribusikannya pada halaman yang terkait dengan grup riset daripada halaman eksternal di mana atribusi cenderung hilang. Adapun jurnal, memang benar bahwa mereka tidak melakukan hosting repositori. Namun, kemampuan untuk memiliki "info tambahan" dalam bentuk kode penelitian saya pikir memenuhi sebagian besar persyaratan pengembangan perangkat lunak ilmiah yang bertanggung jawab. (Jika perlu.)
aeismail

Perasaan saya adalah bahwa laman universitas lebih cenderung hilang daripada situs hosting biasa. Tentu saja, sebagian besar situs hosting yang populer saat ini (Bitbucket, Github, Google Code) belum ada selama itu. Di sisi lain, Sourceforge misalnya telah ada untuk sementara waktu.
Faheem Mitha

Ada masalah lain yang harus diperhatikan; Kekhawatiran IP dan peraturan universitas atau pemerintah dapat mengendalikan pilihan repositori juga. Tetapi bantahannya adalah bahwa ada sejumlah kode ( NAMD menjadi salah satu contoh utama) yang telah berhasil didistribusikan di situs milik universitas. Secara umum, "signifikansi" kode akan menentukan seberapa terlihat kode itu. Saya ragu bahwa kode yang mengembangkan basis pengguna yang signifikan akan pernah hilang sepenuhnya.
aeismail

1
Benar, tetapi jika kodenya tidak jelas bukan berarti OK jika hilang. Dan orang akan berharap bahwa sebagian besar kode ilmiah akan berada di bawah lisensi gratis dan tanpa batasan yang tidak masuk akal. Saya percaya NIH misalnya sekarang mengamanatkan ini untuk pekerjaan yang dikembangkan dengan uang NIH (pembayar pajak). Saya pikir ini harus menjadi kasus untuk semua proyek yang didanai wajib pajak.
Faheem Mitha

8

Pertanyaan yang bagus dan balasan yang bagus, tetapi saya rasa tidak ada yang menjawab pertanyaan tentang kegigihan secara memadai, jika tujuannya adalah untuk mencapai standar yang sama dengan publikasi itu sendiri. (Yang mungkin konyol mengingat peluang kode masih berjalan , tetapi mungkin masih setidaknya sama bermanfaatnya dengan publikasi semua sama).

Suplemen jurnal situs web universitas tidak persisten

Situs web Universitas tidak mungkin memberikan stabilitas atau redundansi untuk mempertahankan konten yang dihosting. Konten lebih sulit dikutip dan biasanya tidak memiliki metadata yang dapat dibaca mesin.

Sayangnya nampak bahwa jurnal tidak melakukan jauh lebih baik dalam mempertahankan bahan tambahan mereka (lihat Anderson et al. 2006 ), dan mungkin tidak menerima format yang diperlukan, atau bahkan menerima materi tambahan sama sekali (lihat satu contoh penting ).

Karena alasan ini, orang-orang yang peduli dengan pengarsipan data jangka panjang telah dengan suara bulat beralih ke advokasi untuk penggunaan repositori khusus daripada situs web atau bahan tambahan, dan banyak jurnal sekarang mengamanatkan praktik ini . Tampaknya adil jika kode dipegang oleh standar ini.

Solusi banyak salinan?

Github dan situs terkait belum membuktikan umur panjang selama skala 100 tahun yang dicapai oleh perpustakaan universitas dan penerbit yang sudah mapan. Dengan memfasilitasi distribusi yang luas, ini mungkin memberikan solusi yang orang lain gema di komentar, termasuk satu orang yang tidak bisa mengomentari stackexchange,

... mari kita selamatkan apa yang tersisa: bukan dengan brankas dan kunci yang memagari mereka dari mata publik dan menggunakannya untuk membuang-buang waktu, tetapi dengan penggandaan salinan seperti itu, sebagaimana menempatkan mereka di luar jangkauan kecelakaan.

- Thomas Jefferson, 18 Februari 1791

Figshare & standar CLOCKSS

Satu-satunya standar kearsipan yang saya ketahui adalah figshare , yang dapat menerima repositori kode lengkap (sebagai "filesets" untuk saat ini, tetapi saya yakin akan segera memiliki opsi untuk dicantumkan sebagai tipe "kode"). Bagian penting dari figshare bukan hanya DOI yang dapat dicita-citakan dengan metadata terprogram, tetapi juga didukung oleh layanan arsip CLOCKSS , yang menyimpan salinan semua kontennya di 12 simpul geografis dan geografis yang didistribusikan secara geografis di seluruh dunia. Jika figshare keluar dari bisnis atau tidak ada lagi, ini akan memicu semua kontennya tersedia secara bebas dari CLOCKSS.

Karenanya, saya sarankan menggunakan Github untuk distribusi kode, tetapi juga menyediakan salinan arsip ke figshare pada saat publikasi.


1
figshare adalah langkah maju, meskipun lisensi CC-BY bukan lisensi perangkat lunak, dan saya tidak tahu berapa banyak ilmuwan yang mau merilis kode mereka di bawah CC0, jadi ini adalah masalah yang harus diatasi. Saya menghargai mereka menggunakan DOI dan CLOCKSS, itu bagus.
Aron Ahmadia

Ya, poin bagus tentang lisensi masih agak bermasalah, terutama untuk perangkat lunak yang lebih berkembang. Untuk skrip untuk mereplikasi analisis saya bisa melihat CC0 lebih tepat.
cboettig

Kode Google mungkin sedikit lebih baik untuk audiens yang lebih luas karena Anda dapat memiliki halaman web yang lebih bagus dengan ringkasan, gambar, tautan DOI, visibilitas yang lebih tinggi dalam pencarian, dll. Anda harus meletakkan tgz di bagian Unduh dan memberikan tautan di halaman depan. Ingatlah bahwa mayoritas non-pengembang bahkan tidak terbiasa dengan kontrol versi apalagi git / hg. Subversi sejauh yang saya akan lakukan untuk audiens yang lebih luas.
stali

1
@stali ingat bahwa github juga mendukung halaman web khusus untuk repositori melalui halaman gh dan tarbal yang dapat diunduh dari unduhan. Tetapi baik Google maupun Github tidak menyediakan DOI terpisah untuk kode tersebut, atau membahas umur panjang arsip di luar kehidupan perusahaan afaik.
cboettig

4

Anda dapat menggunakan beberapa teknik pdf mewah untuk cukup melampirkan kode ke pdf (yaitu, file kode disematkan ke pdf dan dapat "diunduh" dengan klik pada beberapa tombol di pdf). Ini dapat dilakukan dengan paket attachfile , misalnya. Tentu saja, ini bekerja dengan preprints (walaupun saya tidak tahu apakah itu sudah bekerja dengan arxiv) tetapi Anda mungkin mendapatkan masalah dengan file jurnal ...


Sangat keren! Saya tidak tahu LaTeX bisa melakukan ini.
qubyte

4

Untuk skrip kecil yang khusus untuk proyek penelitian tertentu, tempat terbaik untuk publikasi adalah situs Web jurnal, sebagai "informasi tambahan" untuk kertas. Di situlah cara termudah untuk menemukan seseorang yang membaca artikel.

Paket yang lebih substansial yang menarik bagi proyek lain juga sebaiknya diterbitkan secara terpisah. Sayangnya tidak ada solusi yang benar-benar bagus saat ini. Idealnya, publikasi kode dapat diakses secara permanen melalui DOI, seperti kertas, tetapi saya tidak mengetahui adanya situs hosting yang membagikan DOI dan menjamin keabadiannya. Repositori publik seperti Github atau Bitbucket mungkin merupakan taruhan terbaik untuk saat ini.

Solusi terbaik adalah dengan menerbitkan kertas yang dikemas dengan kode dan data yang menyertainya, tetapi itu belum layak secara teknis. Saya sedang mengerjakan prototipe penelitian yang mengeksplorasi ide ini, lihat situs ini untuk detailnya.


1
+1 untuk ActivePapers. Saya tidak berpikir itu memenuhi kebutuhan saya sekarang, tapi saya senang melihat seseorang mengerjakan solusi!
David Ketcheson

figshare menyediakan DOI: lihat figshare.com/blog/…
Jeromy Anglim

3

Saya telah mengambil dua taktik, lahir dari kenyataan bahwa saya mengantisipasi perubahan institusi segera, jadi URL universitas saya tidak stabil sedikit pun.

Ketika kode ini relatif pendek, saya sudah mencoba memasukkannya sebagai lampiran tambahan dalam jurnal itu sendiri, dengan asumsi bahwa mereka mungkin akan melakukan pekerjaan yang layak menjaga kertas dan kode di tempat yang kira-kira sama. Ini sangat berguna untuk kode di mana tidak ada banyak minat umum - kode yang agak tidak berguna tanpa kertas yang bersangkutan untuk memberikan konteks.

Tetapi untuk kode sumber, perangkat lunak aktual, dan proyek yang lebih rumit atau yang menjadi perhatian umum, saya telah mengikuti taktik Anda untuk menautkan ke repositori GitHub, yang setidaknya harus stabil untuk umur produktif rata-rata kertas saya.


2

Lihatlah http://www.runmycode.org . Mereka meng-host situs pendamping untuk kode yang terkait dengan makalah penelitian. Jika kodenya adalah R, Matlab, atau beberapa lainnya, kode itu benar-benar akan menjalankannya untuk Anda. Saya belum mencobanya, tetapi saya bermaksud. Saya pikir David Donoho dan rekan-rekannya menggunakannya.



@ David Ketcheson dan saya juga melakukan percobaan pada bulan Desember menggunakan tumpukan wakari.io dan notebook IPython untuk salah satu kode berbasis Python kami. Anda dapat memeriksa buku catatan reproduksibilitas PyClaw di sini .
Aron Ahmadia

0

Perpustakaan universitas dapat menjadi tempat untuk ini atau pusat hosting universitas.


-2

Sebagai pembaca, pernyataan dalam makalah yang menyatakan bahwa kode dapat diperoleh dengan menghubungi penulis secara langsung akan efektif. Sebagai seorang penulis, ini dapat membantu mendorong kolaborasi, dan memberi saya kesempatan untuk mengingatkan orang lain untuk mengutip artikel saya jika mereka menggunakan kode dalam pekerjaan mereka.


4
Itu sudut pandang yang menarik, dan saya ingin tahu seberapa umum itu. Secara pribadi, itulah yang saya coba hindari. Saya merasa itu seperti menerbitkan makalah yang tidak lengkap dan meminta pembaca untuk menanyakan hal yang lengkap. Lihat sciencecodemanifesto.org .
David Ketcheson

2
Memiliki alamat kontak pada salah satu kertas saya yang paling menonjol pada dasarnya sudah mati - dan tidak yakin tentang beberapa yang lain - saya umumnya menentang ini sebagai solusi. "Menghubungi saya" tidak selalu merupakan hal termudah di dunia untuk dilakukan - terutama satu dekade kemudian.
Fomite

2
Pendekatan "hubungi saya" juga tidak menjamin reproduksibilitas. Ketika Anda menghubungi saya untuk meminta beberapa kode, saya mungkin akan mengirimkan versi yang paling baru, bukan yang saya gunakan di koran asli. Kalau saja karena saya tidak akan memiliki versi aslinya lagi.
khinsen

3
Studi empiris sebenarnya menghubungi penulis dan meminta data, bahkan ketika penulis telah menandatangani perjanjian lisensi untuk menyediakannya berdasarkan permintaan, telah menunjukkan bahwa secara mengejutkan hanya sedikit penulis yang patuh. Misalnya, lihat dx.doi.org/10.1371/journal.pone.0007078 dan kutipan di dalamnya. Jika ini tidak berfungsi dengan baik untuk data, saya kira itu bukan solusi yang baik untuk kode juga.
cboettig
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.