{"id":2031,"date":"2012-02-27T16:35:16","date_gmt":"2012-02-27T21:35:16","guid":{"rendered":"http:\/\/labrigger.com\/blog\/?p=2031"},"modified":"2012-02-28T09:38:57","modified_gmt":"2012-02-28T14:38:57","slug":"nature-article-on-releasing-source-code","status":"publish","type":"post","link":"http:\/\/labrigger.com\/blog\/2012\/02\/27\/nature-article-on-releasing-source-code\/","title":{"rendered":"Nature article on releasing source code"},"content":{"rendered":"<p align=\"center\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/labrigger.com\/blog\/wp-content\/uploads\/2012\/02\/bf.png\" alt=\"\" title=\"Hello World in Brainfuck\" width=\"600\" height=\"67\" class=\"aligncenter size-full wp-image-2035\" srcset=\"http:\/\/labrigger.com\/blog\/wp-content\/uploads\/2012\/02\/bf.png 600w, http:\/\/labrigger.com\/blog\/wp-content\/uploads\/2012\/02\/bf-300x33.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>Nature just published a 4-page <a href=\"http:\/\/www.nature.com\/nature\/journal\/v482\/n7386\/full\/nature10836.html\">perspective article<\/a> on the important of releasing the source code for programs used in scientific research. The authors emphasize the importance of reproducibility for results that depend on computation.<\/p>\n<p>Labrigger has already covered releasing source code <a href=\"http:\/\/labrigger.com\/blog\/2010\/09\/22\/open-science\/\">here<\/a>, including the sympathetic <a href=\"http:\/\/matt.might.net\/articles\/crapl\/\">CRAPL<\/a>. In that license, it is acknowledged that the code offered is not pretty and no promise of support is offered (in fact, quite the opposite is promised). These are among the key concerns about releasing code. Perhaps the software relies on expensive, propriatery hardware and\/or software. Perhaps the code is buggy as hell, thread hostile, devoid of error handling, and relies on core dumps as the main data output interface. Or perhaps the source code is poorly commented, or not commented at all, and all variable names are single characters. Perhaps the code is written in <a href=\"http:\/\/en.wikipedia.org\/wiki\/Whitespace_(programming_language)\">Whitespace<\/a> with inline <a href=\"http:\/\/en.wikipedia.org\/wiki\/Brainfuck\">Brainfuck<\/a>.<\/p>\n<p>The authors spend a long time explaining that there is no substitute for releasing the source code. That is, pseudo code, mathematical, or natural language descriptions are never enough. Of course they&#8217;re right in principle, but I appreciate the alternative descriptions sometimes, so I wouldn&#8217;t want a source code release to replace those alternative descriptions. For example, I don&#8217;t want to have to sift through someone&#8217;s crap code just to find how they performed a specific bootstrap analysis. The description in the methods section should be sufficiently clear and detailed so that I can code it up myself.<\/p>\n<p>One point the authors make is that errors can be detected when the entire source code is released. Sometimes, even commercial programs have bugs that change results. E.g., GraphPad had <a href=\"http:\/\/www.graphpad.com\/faq\/viewfaq.cfm?faq=1590\">a rather unfortunate bug<\/a> that resulted in data groups being flagged as significantly different when they weren&#8217;t.<\/p>\n","protected":false},"excerpt":{"rendered":"<p align=\"center\">\n<p>Nature just published a 4-page <a href=\"http:\/\/www.nature.com\/nature\/journal\/v482\/n7386\/full\/nature10836.html\">perspective article<\/a> on the important of releasing the source code for programs used in scientific research. The authors emphasize the importance of reproducibility for results&#8230;<\/p>\n<div class=\"read-more\"><a href=\"http:\/\/labrigger.com\/blog\/2012\/02\/27\/nature-article-on-releasing-source-code\/\">Read More<\/a><\/div><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[25,30,24,33],"class_list":["post-2031","post","type-post","status-publish","format-standard","hentry","category-software","tag-analysis","tag-computing","tag-dissemination","tag-openness"],"_links":{"self":[{"href":"http:\/\/labrigger.com\/blog\/wp-json\/wp\/v2\/posts\/2031","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/labrigger.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/labrigger.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/labrigger.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/labrigger.com\/blog\/wp-json\/wp\/v2\/comments?post=2031"}],"version-history":[{"count":12,"href":"http:\/\/labrigger.com\/blog\/wp-json\/wp\/v2\/posts\/2031\/revisions"}],"predecessor-version":[{"id":2048,"href":"http:\/\/labrigger.com\/blog\/wp-json\/wp\/v2\/posts\/2031\/revisions\/2048"}],"wp:attachment":[{"href":"http:\/\/labrigger.com\/blog\/wp-json\/wp\/v2\/media?parent=2031"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/labrigger.com\/blog\/wp-json\/wp\/v2\/categories?post=2031"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/labrigger.com\/blog\/wp-json\/wp\/v2\/tags?post=2031"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}