Cách liên kết mã với các ấn phẩm


40

Các bài báo học thuật về điện toán khoa học (và nhiều lĩnh vực khác, ngày nay) thường liên quan đến một số lượng mã hoặc thậm chí toàn bộ gói phần mềm được viết riêng cho bài báo đó hoặc được sử dụng để thu được kết quả trong bài báo. Cách tốt nhất để giúp người đọc của bài báo truy cập mã là gì? Cách tiếp cận hiện tại của tôi là đặt một liên kết đến kho lưu trữ Github (cùng với thẻ phiên bản cụ thể) trong bài báo hoặc trong trích dẫn.


2
Chia sẻ mã là một ý tưởng tuyệt vời và nên được thực hiện nhiều hơn nữa. Tôi biết tôi có thể tốt hơn trong việc cung cấp mã liên quan cho một bài báo. Một repo Github có vẻ như là một giải pháp tốt. Chắc chắn tốt hơn nhiều so với việc bao gồm mã nguồn trong một phụ lục, điều mà tôi đã thấy được thực hiện cho những nỗ lực mã hóa nhỏ hơn.
Barron

4
Đây là một câu hỏi MO liên quan.
JM

@JM Cảm ơn, câu trả lời trên MO rất hay!
David Ketcheson

lưu ý rằng bạn có thể xuất bản sổ ghi chép ipython trên github và chúng được hiển thị, ngoại trừ các phần tương tác
denfromufa

1
@denfromufa Thật không may, Github vô hiệu hóa Mathjax, vì vậy toán học cũng không được hiển thị. Điều đó làm cho nó khá vô dụng đối với hầu hết các lĩnh vực có liên quan. Nhưng luôn có nbviewer.
David Ketcheson

Câu trả lời:


17

Vâng, tôi nghĩ rằng bạn có một vài lựa chọn.

  1. Nếu bạn có một trang ổn định, chẳng hạn như một trang được tài trợ bởi một trường đại học hoặc tổ chức phi lợi nhuận khác không có khả năng biến mất bất cứ lúc nào sớm, bạn có thể xuất bản ở đó.
  2. Bạn có thể sử dụng một dịch vụ như Github hoặc Bitbucket hoặc SourceForge để phân phối mã.
  3. Nếu mã có giá trị chung cận biên (đó là mã phân tích cho một tập hợp các điều kiện cụ thể, v.v.), bạn có thể cung cấp mã dưới dạng "thông tin bổ sung" với giấy mà bạn sử dụng.
  4. Bạn có thể sử dụng một số kết hợp ở trên.

Tuy nhiên, trong bất kỳ hoặc tất cả các trường hợp này, bạn nên chỉ rõ nguồn cung cấp rõ ràng trong bài viết và cho biết loại giấy phép đó là gì (GPL, Creative Commons, v.v.), để không xảy ra sự cố liên quan đến IP.


6
Tôi nghĩ người ta nên đặt mã của một người ở nơi có khả năng sống sót nhất và ở nhiều nơi nếu có thể. Các trang đại học dường như ít có khả năng tồn tại hơn các dịch vụ lưu trữ, ví dụ. Có tạp chí làm cho một số ảnh chụp có sẵn cũng có ý nghĩa. Thật không may, không có tạp chí mà tôi biết không lưu trữ repos.
Faheem Mitha

1
Một sinh viên có lẽ không nên đặt phần mềm trên trang chủ cá nhân; tuy nhiên, tôi sẽ lập luận rằng đối với một mã nghiên cứu điển hình, có thể thu được nhiều hơn bằng cách phân phối nó trên một trang được liên kết với một nhóm nghiên cứu hơn là một trang bên ngoài nơi mà sự quy kết có khả năng bị mất. Đối với các tạp chí, đúng là họ không lưu trữ kho lưu trữ. Tuy nhiên, khả năng có "thông tin bổ sung" dưới dạng mã nghiên cứu tôi nghĩ đáp ứng hầu hết các yêu cầu phát triển phần mềm khoa học có trách nhiệm. (Nếu cần.)
aeismail

Cảm giác của tôi là các trang đại học có nhiều khả năng bị mất hơn so với các trang web lưu trữ thông thường. Tất nhiên, hầu hết các trang web lưu trữ phổ biến hiện nay (Bitbucket, Github, Google Code) đã không tồn tại lâu. Mặt khác, Sourceforge chẳng hạn đã xuất hiện được một thời gian.
Faheem Mitha

Có những vấn đề khác cần lưu ý; Mối quan tâm về IP và các quy định của trường đại học hoặc chính phủ cũng có thể kiểm soát việc lựa chọn kho lưu trữ. Nhưng phản biện là có một số mã ( NAMD là một ví dụ chính) đã được phân phối thành công trên các trang web thuộc sở hữu của trường đại học. Nói chung, "tầm quan trọng" của mã sẽ xác định mức độ hiển thị của nó. Tôi nghi ngờ rằng một mã phát triển một cơ sở người dùng quan trọng sẽ biến mất hoàn toàn.
aeismail

1
Đúng, nhưng nếu mã bị che khuất không có nghĩa là nó ổn nếu nó biến mất. Và người ta sẽ hy vọng rằng hầu hết các mã khoa học sẽ được cấp phép miễn phí và không bị hạn chế vô lý. Tôi tin rằng NIH chẳng hạn hiện đang bắt buộc điều này đối với công việc được phát triển bằng tiền NIH (người nộp thuế). Tôi nghĩ rằng đây là trường hợp cho tất cả các dự án do người đóng thuế tài trợ.
Faheem Mitha

8

Câu hỏi tuyệt vời và câu trả lời tuyệt vời, nhưng tôi nghĩ không ai giải quyết được câu hỏi về sự kiên trì đầy đủ, nếu mục tiêu là đạt được cùng tiêu chuẩn phù hợp với chính ấn phẩm. (Điều này có thể ngớ ngẩn khi có cơ hội mã vẫn chạy , nhưng ít nhất vẫn có thể hữu ích như tất cả các ấn phẩm như nhau).

Trang web của trường đại học bổ sung không kiên trì

Các trang web của trường đại học không có khả năng cung cấp sự ổn định hoặc dự phòng để bảo tồn nội dung được lưu trữ. Nội dung khó trích dẫn hơn và thường thiếu siêu dữ liệu có thể đọc được của máy.

Thật không may, có vẻ như các tạp chí không làm tốt hơn trong việc duy trì các tài liệu bổ sung của họ (xem Anderson et al. 2006 ), và có thể không chấp nhận các định dạng cần thiết, hoặc thậm chí chấp nhận tài liệu bổ sung (xem một ví dụ đáng chú ý ).

Vì những lý do này, những người quan tâm đến việc lưu trữ dữ liệu lâu dài đã nhất trí chuyển sang ủng hộ việc sử dụng các kho lưu trữ chuyên dụng thay vì các trang web hoặc tài liệu bổ sung, và nhiều tạp chí hiện bắt buộc thực hành này . Dường như chỉ có công bằng rằng mã được tổ chức theo tiêu chuẩn này.

Giải pháp của nhiều bản sao?

Github và các trang web liên quan vẫn chưa chứng minh được tuổi thọ trong quy mô 100 năm đạt được của các thư viện đại học và các nhà xuất bản được thành lập. Bằng cách tạo điều kiện phân phối rộng rãi, nó có thể cung cấp một giải pháp mà những người khác đã lặp lại trong các bình luận, bao gồm cả một người không thể bình luận về stackexchange,

... Chúng ta hãy tiết kiệm những gì còn lại: không phải bằng kho tiền và khóa mà chúng che khuất chúng khỏi mắt công chúng và sử dụng để ký gửi chúng lãng phí thời gian, mà bằng cách nhân lên các bản sao như vậy, sẽ đặt chúng ngoài tầm với của tai nạn.

- Thomas Jefferson, ngày 18 tháng 2 năm 1791

Figshare & tiêu chuẩn CLOCKSS

Tiêu chuẩn lưu trữ duy nhất mà tôi biết là figshare , có thể chấp nhận kho lưu trữ mã đầy đủ (dưới dạng "tập tin" vào lúc này, nhưng tôi tin rằng sẽ sớm có tùy chọn được liệt kê dưới dạng "mã"). Mấu chốt của figshare không chỉ là DOI có thể sử dụng được với siêu dữ liệu lập trình, mà còn là sự hỗ trợ của dịch vụ lưu trữ CLOCKSS , duy trì các bản sao của tất cả nội dung của nó tại 12 nút phân phối địa lý và chính trị trên toàn thế giới. Nếu figshare ngừng hoạt động hoặc ngừng tồn tại, điều này sẽ kích hoạt tất cả nội dung của nó được cung cấp miễn phí từ CLOCKSS.

Do đó, tôi khuyên bạn nên sử dụng Github để phân phối mã, nhưng cũng cung cấp một bản sao lưu trữ cho figshare tại thời điểm xuất bản.


1
figshare là một bước tiến tuyệt vời, mặc dù giấy phép CC-BY không phải là giấy phép phần mềm và tôi không biết có bao nhiêu nhà khoa học sẵn sàng phát hành mã của họ theo Muff, vì vậy đây là vấn đề cần giải quyết. Tôi đánh giá cao rằng họ sử dụng DOI và CLOCKSS, tuy nhiên, điều đó thật tuyệt.
Aron Ahmadia

Vâng, điểm tuyệt vời về các giấy phép vẫn còn một số vấn đề, đặc biệt là đối với phần mềm được phát triển đầy đủ hơn. Đối với các kịch bản để sao chép một phân tích, tôi có thể thấy Muff phù hợp hơn.
cboettig

Mã Google có thể tốt hơn một chút cho đối tượng rộng hơn vì bạn có thể có một trang web đẹp hơn với tóm tắt, hình ảnh, liên kết DOI, khả năng hiển thị cao hơn trong tìm kiếm, v.v. Bạn chắc chắn nên đặt một tgz trong phần Tải xuống và cung cấp liên kết trên trang đầu. Hãy nhớ rằng phần lớn những người không phải là nhà phát triển thậm chí không quen thuộc với kiểm soát phiên bản chứ đừng nói đến git / hg. Subversion là xa như tôi sẽ đi cho một đối tượng rộng lớn hơn.
stali

1
@stali nhớ lại rằng github cũng hỗ trợ các trang web tùy chỉnh cho các kho lưu trữ thông qua gh-page và tarball có thể tải xuống từ các bản tải xuống. Nhưng cả Google và Github đều không cung cấp DOI riêng cho mã, cũng như không đề cập đến tuổi thọ lưu trữ ngoài vòng đời của công ty afaik.
cboettig

4

Bạn có thể sử dụng một số kỹ thuật pdf ưa thích để chỉ cần đính kèm mã vào pdf (nghĩa là các tệp mã được nhúng vào pdf và có thể được "tải xuống" bằng cách nhấp vào nút nào đó trong pdf). Điều này có thể được thực hiện với gói đính kèm , ví dụ. Tất nhiên, điều này hoạt động với các bản in sẵn (mặc dù tôi không biết nếu nó đã hoạt động với arxiv) nhưng bạn có thể gặp vấn đề với các tệp nhật ký ...


Rất tuyệt! Tôi không biết LaTeX có thể làm điều này.
qubyte

4

Đối với các tập lệnh nhỏ dành riêng cho một dự án nghiên cứu cụ thể, nơi tốt nhất để xuất bản là trang web của tạp chí, là "thông tin bổ sung" cho bài báo. Đó là nơi dễ tìm nhất cho người đọc bài báo.

Các gói quan trọng hơn cũng được quan tâm cho các dự án khác cũng nên được xuất bản riêng. Thật không may, không có giải pháp thực sự tốt tại thời điểm này. Lý tưởng nhất là một ấn phẩm mã sẽ có thể truy cập vĩnh viễn thông qua DOI, giống như một tờ giấy, nhưng tôi không biết bất kỳ trang web lưu trữ nào cung cấp DOI và đảm bảo tính lâu dài của chúng. Các kho lưu trữ công cộng như Github hoặc Bitbucket có lẽ là lựa chọn tốt nhất hiện nay.

Giải pháp tốt nhất là xuất bản giấy được đóng gói với mã và dữ liệu đi kèm với nó, nhưng điều đó vẫn chưa khả thi về mặt kỹ thuật. Tôi đang làm việc trên một nguyên mẫu nghiên cứu khám phá ý tưởng này, xem trang web này để biết chi tiết.


1
+1 cho ActivePapers. Tôi không nghĩ rằng nó đáp ứng nhu cầu của tôi bây giờ, nhưng tôi rất vui khi thấy ai đó làm việc trên một giải pháp!
David Ketcheson

figshare cung cấp DOIs: xem figshare.com/blog/ từ
Jeromy Anglim

3

Tôi đã thực hiện hai chiến thuật, xuất phát từ thực tế là tôi dự đoán sẽ sớm thay đổi các tổ chức, vì vậy URL của trường đại học của tôi không ổn định trong một chút.

Khi mã tương đối ngắn, tôi đã thử đưa nó vào như một phụ lục bổ sung trong chính tạp chí, với giả định rằng họ có thể sẽ làm tốt công việc giữ giấy và mã ở cùng một chỗ. Điều này đặc biệt hữu ích cho mã khi không có nhiều lợi ích chung - mã đó hơi vô dụng nếu không có bài viết để cung cấp ngữ cảnh.

Nhưng đối với mã nguồn, phần mềm thực tế và các dự án phức tạp hơn hoặc những dự án quan tâm chung, tôi đã tuân theo chiến thuật liên kết với kho lưu trữ GitHub của bạn, ít nhất là ổn định cho tuổi thọ sản xuất trung bình của các bài báo của tôi.


2

Hãy xem http://www.runmycode.org . Họ lưu trữ các trang web đồng hành cho mã liên quan đến các tài liệu nghiên cứu. Nếu mã là R, Matlab hoặc một vài mã khác, nó thực sự sẽ chạy mã cho bạn. Tôi chưa thử, nhưng tôi dự định. Tôi nghĩ David Donoho và cộng tác viên của mình sử dụng nó.


À. Bạn đã sử dụng cái này rồi. runmycode.org/CompmateSite/site.do?siteId=158
Paul G. Constantine

@David Ketcheson và tôi cũng đã thực hiện một thử nghiệm vào tháng 12 bằng cách sử dụng ngăn xếp wakari.io và sổ ghi chép IPython cho một trong các mã dựa trên Python của chúng tôi. Bạn có thể kiểm tra sổ ghi chép tái tạo PyClaw tại đây .
Aron Ahmadia

0

Thư viện đại học có thể là nơi dành cho việc này hoặc trung tâm lưu trữ của trường đại học.


-2

Là một người đọc, một tuyên bố trong bài báo về tác động mà mã có thể thu được bằng cách liên hệ trực tiếp với tác giả sẽ có hiệu lực. Là một tác giả, điều này có thể giúp thúc đẩy sự hợp tác và cho tôi cơ hội nhắc nhở mọi người trích dẫn bài viết của tôi nếu họ sử dụng mã trong công việc của họ.


4
Đó là một quan điểm thú vị và tôi tò mò muốn xem mức độ phổ biến của nó. Cá nhân, đó là những gì tôi đang cố gắng thoát khỏi. Tôi cảm thấy rằng nó giống như xuất bản một bài báo không hoàn chỉnh và yêu cầu độc giả yêu cầu điều đầy đủ. Xem sciencecodemanifesto.org .
David Ketcheson

2
Có địa chỉ liên lạc trên một trong những giấy tờ nổi bật nhất của tôi về cơ bản là đã chết - và không chắc chắn về một số người khác - tôi thường phản đối điều này như một giải pháp. "Liên lạc với tôi" không nhất thiết là điều dễ nhất trên thế giới để làm - đặc biệt là một thập kỷ sau.
Fomite

2
Phương pháp "liên hệ với tôi" cũng không đảm bảo độ tái lập. Khi bạn liên hệ với tôi yêu cầu một số mã, tôi có thể gửi cho bạn phiên bản cập nhật nhất, không phải là phiên bản tôi đã sử dụng trong bài báo gốc. Nếu chỉ vì tôi sẽ không có phiên bản gốc nữa.
khinsen

3
Các nghiên cứu thực nghiệm thực sự liên hệ với một tác giả và yêu cầu dữ liệu, ngay cả khi tác giả đã ký một thỏa thuận cấp phép để cung cấp nó theo yêu cầu, đã chỉ ra rằng đáng ngạc nhiên là rất ít tác giả tuân thủ. Ví dụ: xem dx.doi.org/10.1371/journal.pone.0007078 và trích dẫn trong đó. Nếu điều này không hoạt động tốt cho dữ liệu, tôi nghi ngờ đó cũng không phải là một giải pháp tốt cho mã.
cboettig
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.