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
