Skip to content

Latest commit

 

History

History
52 lines (37 loc) · 3.03 KB

CONTRIBUTING.md

File metadata and controls

52 lines (37 loc) · 3.03 KB

Contribution Guidelines

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.

Development Tooling

  • 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 from package.yaml. Make sure all the .cabal files are up-to-date with package.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.

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 *.cabals to be up-to-date with package.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.

Pull Request Requirements

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 formatting
    • Build and Test for macOS and Linux - make sure we always have working binaries
  • It is strongly recommended to write commit messages obeying Conventional Commit guidline.