Kod yayınlara nasıl bağlanır


40

Bilimsel hesaplama alanındaki bilimsel yazılar (ve günümüzde birçok başka alan) tipik olarak, bu kağıt için özel olarak yazılmış veya kağıtta sonuç elde etmek için kullanılmış bir miktar kod veya hatta tüm yazılım paketlerini içerir. Gazetenin okuyucularının koda erişmelerine yardımcı olmanın en iyi yolu nedir? Mevcut yaklaşımım, bir Github deposuna (belirli bir sürüm etiketi ile birlikte) gazeteye ya da alıntıya bir bağlantı koymaktır.


2
Kodu paylaşmak harika bir fikir ve daha fazlası yapılmalı. Bir kağıt için ilgili kodu vermede daha iyi olabileceğimi biliyorum. Bir Github deposu iyi bir çözüm gibi görünüyor. Kesinlikle, daha küçük kodlama çalışmaları için yaptığım bir eke kaynak kod eklemekten çok daha iyi.
Barron

4
Bu ilgili bir MO sorusudur.
JM

@JM Teşekkürler, MO cevaplar çok iyi!
David Ketcheson

ipython not defterlerini github'da yayınlayabileceğinizi ve etkileşimli kısımlar dışında oluşturulduğunu unutmayın
denfromufa

1
@denfromufa Ne yazık ki, Github Mathjax'ı devre dışı bırakır, bu nedenle matematik de yapılmaz. Bu, çoğu ilgili alan için oldukça işe yaramaz hale getirir. Ama her zaman nbviewer var.
David Ketcheson

Yanıtlar:


17

Bence birkaç seçeneğin var.

  1. Kararlı bir sayfanız varsa - örneğin bir üniversite ya da herhangi bir zamanda kaybolacak başka bir kar amacı gütmeyen kuruluş tarafından sponsor olunursa - orada yayınlayabilirsiniz.
  2. Kodu dağıtmak için Github veya Bitbucket veya SourceForge gibi bir servis kullanabilirsiniz.
  3. Kod marjinal genel değere sahipse (belirli bir koşul kümesi için bir analiz kodu vb.), Kodu kullandığınız kağıtla birlikte "ek bilgi" indirmesi olarak sunabilirsiniz.
  4. Yukarıdakilerin bir kombinasyonunu kullanabilirsiniz.

Bununla birlikte, bu davaların herhangi birinde veya hepsinde, makaleyi kaynaklarda açıkça belirtmeli ve IP ile ilgili hiçbir sorun bulunmaması için ne tür bir lisanslama olduğunu belirtmelisiniz (GPL, Creative Commons, vb.).


6
Sanırım birinin kodu hayatta kalması en muhtemel yere, mümkünse birden çok yere konması gerekiyor. Örneğin üniversite sayfalarının hayatta kalma olasılığı, barındırma hizmetlerinden daha azdır. Derginin bazı anlık görüntülerin kullanılabilir olması da mantıklı. Ne yazık ki, bildiğim hiçbir dergi barındırma repoları yok.
Faheem Mitha

1
Bir öğrenci muhtemelen kişisel bir giriş sayfasına yazılım koymamalıdır; bununla birlikte, tipik bir araştırma kodu için, özelliğin kaybedilmesi muhtemel harici bir sayfadan ziyade bir araştırma grubuyla ilişkili bir sayfaya dağıtılmasıyla elde edilmesinin daha fazla olacağını savunuyorum. Dergilere gelince, depo barındırma yapmadıkları doğru. Ancak, araştırma kodu şeklinde "ek bilgiye" sahip olma yeteneği, sorumlu bilimsel yazılım geliştirme gereksinimlerinin çoğunu karşıladığını düşünüyorum. (Gerekirse.)
aeismail,

Benim düşüncem üniversite sayfalarının normal barındırma sitelerine göre kaybolma olasılığı daha yüksektir. Tabii ki, günümüzde popüler olan barındırma sitelerinin çoğu (Bitbucket, Github, Google Code) bu kadar uzun süredir bulunmuyor. Öte yandan, örneğin Sourceforge bir süredir buralarda.
Faheem Mitha

Dikkat edilmesi gereken başka konular var; Fikri mülkiyet endişeleri ve üniversite veya devlet düzenlemeleri depo seçimini de kontrol edebilir. Ancak bunun karşıtlığı, üniversiteye ait sitelerde başarılı bir şekilde dağıtılan birçok kodun ( NAMD'nin en büyük örneklerden biri olması) olmasıdır. Genel olarak, kodun "önemi" ne kadar görünür olduğunu belirler. Önemli bir kullanıcı tabanı geliştiren bir kodun tamamen kaybolacağından şüpheliyim.
aeismail,

1
Doğru, ancak kod belirsiz ise ortadan kalkması durumunda Tamam olduğu anlamına gelmez. Ve birincisi, çoğu bilimsel kodun ücretsiz bir lisans altında ve mantıksız bir kısıtlama olmadan olacağını umuyordum. Örneğin, NIH'nin şimdi bunu NIH (vergi mükellefi) parasıyla geliştirilen işler için zorunlu kıldığına inanıyorum. Bunun tüm vergi mükelleflerinin finanse ettiği projeler için geçerli olması gerektiğini düşünüyorum.
Faheem Mitha

8

Müthiş soru ve müthiş cevaplar, ancak bence, yayının kendisine verilen aynı standarda ulaşmaksa, hiç kimse ısrar meselesine yeterince cevap vermez. ( Kodun hala çalıştığı ihtimali aptalca verilebilir , ancak yine de en az aynı şekilde yayın için faydalı olabilir).

Üniversite web siteleri dergi takviyeleri kalıcı değildir

Üniversite web sitelerinin barındırılan içeriği korumak için istikrar veya fazlalık sağlama olasılığı yoktur. İçeriğin alıntılanması daha zordur ve genellikle makinede okunabilen meta veriler yoktur.

Maalesef dergilerin tamamlayıcı materyallerini muhafaza etmede çok daha iyi bir performans göstermediği anlaşılıyor (bkz. Anderson ve ark. 2006 ) ve gerekli formatları kabul etmeyebilir veya hatta tamamlayıcı materyalleri kabul edebilir (bkz . Dikkate değer bir örnek ).

Bu nedenlerden dolayı, uzun süreli veri arşivlemesi ile ilgilenen kişiler oybirliğiyle web siteleri veya tamamlayıcı malzemeler yerine adanmış havuzların kullanılmasını savunmaya yöneldiler ve şimdi birçok dergi bu uygulamayı zorunlu kılıyor . Kodun bu standarda uygun olması adil gözüküyor.

Birçok kopyanın çözümü?

Github ve ilgili siteler henüz üniversite kütüphaneleri ve yerleşik yayıncılar tarafından elde edilen 100'lü yıllar boyunca uzun ömürlü olduğunu kanıtlamamıştır. Yaygın dağıtımın kolaylaştırılmasıyla, diğerlerinin de, yığın değişimi hakkında yorum yapamayan biri de dahil olmak üzere, yorumlardaki yankılanan bir çözüm sağlayabilir,

... geriye kalanları kurtarmamıza izin verin: onları halkın gözünden çeken tonozlar ve kilitler ile değil, zaman kaybına teslim etmek için kullandıkları, ancak bu tür kopyaların kazayla ulaşamayacağı şekilde çoğaltılmasıyla.

- Thomas Jefferson, 18 Şubat 1791

Figshare ve CLOCKSS standardı

Bildiğim tek arşivleme standardı tam kod havuzlarını kabul edebilen figshare'dir (şu an için "filesets" olarak, ancak yakında "code" olarak listelenme seçeneğinin olacağına inanıyorum). Figshare için anahtar parça, yalnızca programatik meta veri içeren güvenilir DOI değil, aynı zamanda tüm içeriğinin kopyalarını dünyadaki coğrafi ve coğrafi olarak dağıtılmış düğümlerde saklayan CLOCKSS arşiv hizmetinin desteğidir . Figshare işsiz kalırsa veya kesilirse, bu, tüm içeriğinin CLOCKSS'ta serbestçe erişilebilir olmasını tetikler.

Sonuç olarak, Github'un kod dağıtımı için kullanılmasını öneririm, fakat aynı zamanda yayın sırasında figshare'e bir arşiv kopyası sağladım.


1
figshare, CC-BY lisansı bir yazılım lisansı olmasa da ileriye doğru atılmış büyük bir adımdır ve kaç bilim adamının kodlarını CC0 altında yayınlamak istediklerini bilmiyorum, bu yüzden bu bir konudur. DOI ve CLOCKSS kullandıklarını takdir ediyorum, ancak bu harika.
Aron Ahmadia 10:12

Evet, lisanslarla ilgili harika nokta, özellikle daha gelişmiş yazılımlar için hala biraz sorunlu. Scriptlerin bir analizi çoğaltması için CC0'ın daha uygun olduğunu görebiliyordum.
cboettig

Google kodu, daha geniş bir kitleye göre daha iyi olabilir; çünkü özet, resimler, DOI bağlantısı, aramada daha fazla görünürlük vb. İçeren daha iyi bir web sayfasına sahip olabilirsiniz. Unutmayın ki geliştiricilerin çoğunluğu, git / hg bile değil, sürüm kontrolünü bile bilmiyorlar. Yıkılma, daha geniş bir izleyici kitlesine gideceğim kadar.
stali

1
@stali, github'un, gh sayfaları ve indirilebilen indirilebilir tarball'lar aracılığıyla depolar için özel web sayfalarını da desteklediğini hatırlatır . Ancak ne Google ne de Github , kod için ayrı bir DOI sağlamaz , ayrıca şirket afaik'in ömrünün ötesindeki arşiv ömrünü de ele alır.
cboettig

4

Kodu basitçe pdf'e eklemek için bazı süslü pdf-teknikleri kullanabilirsiniz (yani, kod dosyaları pdf içine gömülüdür ve pdf'deki bir düğmeye tıklayarak "indirilebilir"). Bu, örneğin attachfile paketi ile gerçekleştirilebilir . Tabii ki, bu önceden baskılarla çalışıyor (zaten arxiv ile çalışıp çalışmadığını bilmiyor olsam da) ama muhtemelen günlük dosyalarında sorunla karşılaşıyorsun ...


Çok havalı! LaTeX'in bunu yapabileceğini bilmiyordum.
12'de

4

Belirli bir araştırma projesine özgü küçük senaryolar için, yayınlanacak en iyi yer derginin Web sitesidir, bu makaleye "ek bilgi" olarak verilir. Makaleyi okuyan birini bulmanın en kolay olduğu yer burasıdır.

Diğer projeler için de ilgi çeken daha önemli paketler ayrı ayrı yayınlanmalıdır. Maalesef şu anda gerçekten iyi bir çözüm yok. İdeal olarak, bir kod yayınına, aynı kağıt gibi, bir DOI aracılığıyla kalıcı olarak erişilebilir olacaktır, ancak DOI'leri dağıtan ve kalıcılığını garanti eden herhangi bir barındırma sitesinin farkında değilim. Github veya Bitbucket gibi halka açık depolar belki de şu an için en iyi bahis.

En iyi çözüm, kodla birlikte verilen kağıdı ve onunla birlikte gelen verileri yayınlamak olacaktır, ancak bu henüz teknik olarak mümkün değildir. Bu fikri inceleyen bir araştırma prototipi üzerinde çalışıyorum, ayrıntılar için bu siteye bakın.


1
ActivePapers için +1. Artık ihtiyaçlarımı karşıladığını sanmıyorum, ancak bir çözüm üzerinde çalışan birini gördüğüme sevindim!
David Ketcheson

figshare DOI sağlar: bkz: figshare.com/blog/…
Jeromy Anglim

3

Yakında değişen kurumları beklediğim gerçeğinden doğan iki taktik kullandım, bu yüzden üniversite URL’m en az kararlı değil.

Kod nispeten kısa olduğunda, kağıdı ve kodu kabaca aynı yerde tutmak için muhtemelen düzgün bir iş yapacaklarını farzederek derginin kendisine ek bir ek olarak dahil etmeye çalıştım. Bu, özellikle çok fazla sayıda genel çıkarın olmadığı kodlar için yararlıdır - bağlam sağlamak için söz konusu makale olmadan biraz yararsız olan kod.

Ancak kaynak kodu, gerçek yazılım ve daha karmaşık projeler ya da genel ilgi alanları için, en azından makalelerimin ortalama üretken ömrü boyunca kararlı olması gereken bir GitHub deposuyla bağlantı kurma taktiğinizi takip ediyorum.


2

Http://www.runmycode.org adresine bir göz atın . Araştırma makaleleriyle ilgili kod için eşlik eden siteleri barındırıyorlar. Kod R, Matlab veya diğer birkaçıysa, kodu sizin için çalıştıracaktır. Henüz denemedim, ama niyetindeyim. Bence David Donoho ve ortakları onu kullanıyor.



@David Ketcheson ve ben de Aralık ayında Python tabanlı kodlarımızdan biri için wakari.io yığını ve IPython not defterlerini kullanarak bir deney yaptık. PyClaw yeniden üretilebilirlik defterlerini buradan inceleyebilirsiniz .
Aron Ahmadia,

0

Üniversite kütüphaneleri bunun veya üniversitenin barındırma merkezinin yeri olabilir.


-2

Bir okuyucu olarak, makalede yazarın doğrudan temasa geçerek kodun elde edilebileceği sonucuna varılması etkili olacaktır. Bir yazar olarak, bu işbirliğinin geliştirilmesine yardımcı olabilir ve kodları çalışmalarında kullanırlarsa insanlara makalemi aktarmalarını hatırlatmama fırsat verebilir.


4
Bu ilginç bir bakış açısı ve ne kadar yaygın olduğunu merak ediyorum. Şahsen, kaçmaya çalıştığım şey bu. Eksik bir makale yayınlamak ve okuyucunun her şeyi istemesini istemek gibi bir şey olduğunu düşünüyorum. Bkz. Sciencecodemanifesto.org .
David Ketcheson

2
En önde gelen belgelerimden birinin iletişim adresinin esasen ölmüş olması ve bazılarının hakkında emin olmaması, genellikle çözüm olarak karşı çıkıyorum. “Benimle bağlantıya geçmek” mutlaka dünyadaki en kolay şey değil, özellikle on yıl sonra.
Fomite

2
“Bana ulaşın” yaklaşımı da tekrarlanabilirliği garanti etmez. Bazı kodlar sormak için benimle iletişime geçtiğinizde, orijinal belgede kullandığımdan değil, muhtemelen size en güncel sürümü gönderirim. Sadece, çünkü orijinal sürüme artık sahip olamazdım.
khinsen

3
Aslında bir yazarla temasa geçen ve veri isteyen deneysel çalışmalar, yazar talep üzerine sağlamak için bir lisans sözleşmesi imzalamış olsa bile, şaşırtıcı bir şekilde birkaç yazarın uyduğunu göstermiştir. Örneğin, dx.doi.org/10.1371/journal.pone.0007078 ve buradaki alıntılara bakın . Bu veriler için iyi çalışmazsa, kod için de iyi bir çözüm olmadığını düşünüyorum.
cboettig
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.