“Heavier-than-air flying machines are impossible” - Lord Kelvin, 1895
“the first principle is that you must not fool yourself, and you are the easiest person to fool.” - R. Feynman, 1974
“I am thinking about something much more important than bombs. I am thinking about computers.” - John von Neumann, 1946.
Otherwise it's not science.
Since 6th century BCE, science has been perfecting these tenents.
Open source software is now superior at all of them.
But scientists aren't trained to use them effectively.
“ Organized Skepticism. Scientists are critical: All ideas must be tested and are subject to rigorous structured community scrutiny.” - R.K. Merton, 1942
Formats: Evaluated Nuclear Data File (ENDF), Evaluated Nuclear Structure Data File (ENSDF), Hierarchical Data Format (HDF), etc.
Management: C/Python/Fortran APIs, SQL, MySQL, MongoDB, etc.
Version Control Systems: cvs, svn, hg, git
“ It takes just as much time to write a good paper as it takes to write a bad one. ” - Polterovich, 2014
Hint: Python, scipy, numpy, numba, pandas, scikit-learn, scikit-image, etc.
Hint: try a tutorial on BASH, CSH, Python, or Perl.
Build System Tools: make, autoconf, automake, cmake, etc.
Hint: In FORTAN, learn about arrays. In C++, learn about maps, vectors, deques, queues, etc. In python, the power lies in dictionaries and numpy arrays.
DRY: Dont Repeat Yourself. Code replication is bug proliferation.
Tools: python argparse, xml rng, etc.
“ The scientific method’s central motivation is the ubiquity of error—the awareness that mistakes and self-delusion can creep in absolutely anywhere and that the scientist’s effort is primarily expended in recognizing and rooting out error. ” - Donoho, 2009.
Tools: cpplint, pyflakes, gdb, lldb, pdb, idb, valgrind, kernprof, kcachegrind
“ just-in-time review of small code changes is more likely to succeed than large-scale end-of-work reviews. ” - Petre, Wilson 2014
Books: Clean Code, Working Effectively with Legacy Code
Tools: sphinx, doxygen, gooletest, unitttest, nosetests
“ If a piece of scientific software is released in the forest, does it change the field? ”
Tools: LaTeX, markdown, restructured text
Example: github.com/cyclus
Export control is serious.
''Reading brings us unknown friends'' - Honore de Balzac
The Journal of Open Source Software (JOSS) is a developer friendly journal for research software packages.
What exactly do you mean by 'journal'?
The Journal of Open Source Software (JOSS) is an academic journal (ISSN 2475-9066) with a formal peer review process that is designed to improve the quality of the software submitted. Upon acceptance into JOSS, a CrossRef DOI is minted and we list your paper on the JOSS website.
(More: JOSS Editorial Board. "About JOSS" joss.theoj.org/about. 2018.)
Don't we have enough journals already?
Perhaps, and in a perfect world we'd rather papers about software weren't necessary but we recognize that for most researchers, papers and not software are the currency of academic research and that citations are required for a good career.
(More: JOSS Editorial Board. "About JOSS" joss.theoj.org/about. 2018.)
You said developer friendly, what do you mean?
We have a simple submission workflow and extensive documentation to help you prepare your submission. If your software is already well documented then paper preparation should take no more than an hour.
(More: JOSS Editorial Board. "About JOSS" joss.theoj.org/about. 2018.)
DOI: 10.7717/peerjcs.147/fig-1
Image DOI: 10.7717/peerjcs.147/fig-2
JOSS papers accepted by month, as of today.
A lot of these thoughts came from my personal experience. However, much of it was annealed from conversations with colleagues throughout the scientific and computing communities (too many of you to name).