How to contribute to protox
View SourceFirst, thank you for your interest in contributing to protox!
To ensure a smooth experience while contributing, here are a few handy guidelines.
Development Prerequisites
- Erlang/OTP 26 or later
- Elixir 1.15 or later
- (optional) lefthook for git hooks
Development Guidelines
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 themuzak
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.
Testing
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
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.
License
By contributing to Protox, you agree that your contributions will be licensed under MIT License.
Getting Help
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.