In random order
- Thou shalt use an open source licence
- thou shalt use version control and version number significant releases
- thou shalt not use hard-coded paths or filenames.. ever
- thou shalt have tests
- tho shalt not write redundant software (e.g., another short read aligner)
- thou shalt not fail silently
- though shalt not create empty files if you fail (including files with just column headins in)
- thou shalt not put weird characters in filenames or paths, including spaces
- Tho shalt use
--help
and not-help
- thou shalt have documentation, including a 'getting started' section
- thou shalt generate neatly organised output directory heirarchies
- thou shalt not invent new file formats
- thou shalt not frivolously implement a parser
- thou shalt work with gzipped files
- thou shall build checkpoints into long running software?
- tho shal not write 129869 temprary files (Trinity)
- 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 log everything, including paths to executables, versions, environmental variables, the lot.
- though shalt always resolve all input paths and filenames to absolute paths before doing anything else
- thou shalt not put weird characters in filenames or paths, including spaces
- thy plots shall be vector pdfs or svgs, never bitmaps
- Thou shalt verify input before submitting a bug report.