In a suggested order of importance.
- Thou shalt use an open source licence.
- Thou shalt use version control and version number significant releases.
- Thou shalt not write redundant software (e.g., another short read aligner).
- Thou shalt not invent new file formats.
- Thou shalt not frivolously re-implement software, especially parsers and anything R does already.
- Thou shalt not fail silently.
- Thou shalt not use hard-coded paths or filenames... ever.
- Thou shalt not create empty files if you fail (including files with just column headers in).
- Thou shalt log everything, including the command line called, paths to executables, versions, environmental variables, the lot.
- Thou shalt always resolve all input paths and filenames to absolute paths before doing anything else.
- Thou shalt have tests.
- Thou shalt have documentation, including a 'getting started' section.
- Thou shalt generate neatly organised output directory heirarchies.
- Thou shalt work with gzipped input as well as unconpressed input.
- Thou shall build checkpoints into long running software.
- Thou shalt not write >200 temprary files (Trinity).
- Thou shalt generate plots as vector pdfs or svgs, never bitmaps.
- Tho shalt use
--help
and not-help
. - Though shall always pad numbers with leading zeros to a standard length.
- Thou shalt use version control for all coding work.
- Thou shalt not publish a paper that use "in-house (Language X) scripts, available upon request"
- Thou shalt RTFM first.
- Thou shalt not use massively outdated versions of actively maintained software.
- Thou shalt not put weird characters in filenames or paths, including spaces.
- Thou shalt verify the input before submitting a bug report.
- After verisfying the input, thou shalt RTFM again, before submitting a bug report.
- Thou shalt cite the versions of all codes used.