First, thank you for your interest in contributing to protox!
To ensure a smooth experience while contributing, here are a few handy guidelines.
- Erlang/OTP 26 or later
- Elixir 1.15 or later
- (optional) lefthook for git hooks
We use a few tools to keep the code clean and consistent:
mix deps.unlock --check-unused
to check for unused dependenciesmix format --check-formatted
to check for code formatting issuesmix credo
for code style and consistency checksmix dialyzer
for type checkingmix muzak
for mutation testingmix test --include conformance
for testing
Note
These tasks are always run in the CI pipeline.
Note
lefthook
can be used to run these tasks automatically on each commit or push (except for the muzak
task which takes a long time to run).
Note
mix test --include conformance
automatically downloads and compiles the conformance test suite and runs it against the current version of protox.
Correctness is the main goal of Protox, here's how you can contribute to it:
- add tests for any new features;
- when fixing a bug, add tests that reproduce the bug;
- ensure all tests pass with
mix test --include conformance
; - try to maintain or improve test coverage (check with
mix test --cover
).
Documentation is as important as correctness, here's a quick reminder of the things to keep in mind:
- document public functions;
- update module documentation if needed;
- if possible, include examples as doctests;
- update the main README.md if needed.
By contributing to Protox, you agree that your contributions will be licensed under MIT License.
If you have questions or need help, you can:
- Send me a direct message on Elixir Forum.
- Send me an email at alexandre.hamez at gmail.com.
- Open an issue.
- Start a discussion at https://github.com/ahamez/protox/discussions.