General: * docs/* exists for a reason, especially docs/CHANGELOG * Changes should match commit messages, barring mistakes * "Bug fix:" should be used to identify minor changes due to coding errors * docs/CHANGELOG should reference filename of changed files * Quote correctly * Use double-quotes, not single-quotes * Variable names should be descriptive * Reference variables as ${variablename} * "printf --" unless you have reason not to * Avoid unnecessary cats, never use two commands if one will do * No unnecessary new lines, the only blocks should be those introduced by code: if/then/else/fi etc * Redirects take the form >/path/to/redirect/to (i.e. no space) lib/misc/*: * Changes to existing APIs used by lib/checks/* must be discussed prior to implementation * Such changes to the APIs used by lib/checks/* must be minimised * New APIs can be freely added * Code in here is meant to be ported to new platforms * OS specific code should be minimised * Don't read _ if there's a chance the data may be useful later * Validate your input using lib/misc/validate lib/checks/*: * Code in here is meant to be portable, it should inherit new capabilities by way of changes to lib/misc/* * Avoid OS specific code, the APIs should fail sane