If you have any issue, please report it to the GitHub issue tracker for this project. When you open an issue, please check whether there is alredy similar one(s).
We are also accepting Pull Requests - you can feel free to open pull requests for small changes, e.g. typo correction. If you are planning a considerably big change, however, please first discuss the change you want to make via an issue.
-
For simplicity, we use
cabal-install >= 3.8
for build tool. -
For technical reason, we are bound to GHC 9.0.2 for the time being - this restriction will be lifted once GHC can handle I/O in Template Haskell splice without segfaulting on alpine static build; see ghc#20266 for more details.
-
We are using
hpack
to generate*.cabal
frompackage.yaml
. Make sure all the.cabal
files are up-to-date withpackage.yaml
. -
We strongly recommend to use the pre-commit tool. It runs hooks shared across the repository in Git's pre-commit hook. Currently, the following hooks are enabled:
- A protection rule for
main
branch preventing making commit to protected branch - Runs hpack if it's in
$PATH
.
- A protection rule for
There is no obligation about editors - you can use any editor of your choice. We recommend to use HLS as a Language Server when available.
If you use VSCode, it is recommended to install the following extensions (as included in .vscode/extensions.json
):
- Haskell extension boosts productivity in writing Haskell.
- Workspace Config+ lets you coexist shared settings and local configs.
- Run On Save ensures
*.cabal
s to be up-to-date withpackage.yaml
.
All the source code (except Setup.hs
) MUST be formatted with Fourmolu.
HLS supports fourmolu as a formatter, so we strongly recommend to use HLS and enable Format on Save
in your editor.
To get PRs merged, following criteria must be met:
- We require commits to be signed in order to be merged into main branch.
- The following tests must be all green:
Fourmolu
- to enforce consistent formattingBuild
andTest
for macOS and Linux - make sure we always have working binaries
- It is strongly recommended to write commit messages obeying Conventional Commit guidline.