Introduction

We describe a set of standards for code. We also explain our reasoning for these choices. We want this to act as a living document of our practices for current, and future, contributors to the project. We also intend this document to evolve as our needs change, as well as act as a single point of truth for standards.

Changelog

Motivation

Conventions

The words MUST, SHOULD, MUST NOT, SHOULD NOT and MAY are defined as per RFC 2119. Specifically:

Tools

Compiler warning settings

The following warnings MUST be enabled for all builds of any project, in the ghc-options of the Cabal file: