Contributing to Decant

Copy Markdown View Source

Thanks for taking the time to contribute. Decant is a young library — PRs, bug reports, and design feedback all welcome.

Development setup

Prerequisites: Elixir ~> 1.19 and Erlang/OTP ~> 28. Postgres required for the test suite.

git clone https://github.com/Arsenalist/decant.git
cd decant
mix deps.get
createdb decant_test
mix test

Format before pushing:

mix format

Branching & PRs

  • main is the release branch.
  • Branch from main for features and fixes; submit a PR.
  • Keep PRs scoped — one logical change per PR.
  • Update CHANGELOG.md under [Unreleased] for every user-visible change.
  • The architecture test (test/decant/architecture_test.exs) enforces the boundary: no host-app references in lib/, runtime deps locked to [:ecto]. Fix the offending file rather than weakening the test.

TDD discipline

This codebase was built test-first. Every implementation has a paired test. When adding behaviour, write the failing test first, watch it go red, then make it pass. Pull requests adding code without test coverage will be sent back.

Versioning

While in 0.x, the minor version bumps for every breaking change. The patch version bumps for non-breaking additions and fixes.