Thank you for your interest in contributing to hackney!
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/hackney.git - Create a branch:
git checkout -b my-feature - Make your changes
- Run tests:
rebar3 eunit - Push and open a pull request
We use Conventional Commits for PR titles:
<type>: <description>
Types:
| Type | Description |
|---|---|
feat |
New feature |
fix |
Bug fix |
docs |
Documentation only |
refactor |
Code change that neither fixes a bug nor adds a feature |
perf |
Performance improvement |
test |
Adding or updating tests |
chore |
Maintenance tasks, dependencies |
security |
Security fix |
Examples:
feat: add HTTP/3 connection poolingfix: handle timeout in async responsesdocs: update WebSocket guiderefactor: simplify connection state machineperf: reduce memory allocation in header parsingsecurity: update SSL certificate bundle
Include in your PR description:
- What the change does
- Why the change is needed
- How to test it (if applicable)
- Erlang/OTP 27+
- rebar3
rebar3 compileQUIC/HTTP3 support is included automatically via the pure Erlang quic dependency - no additional build steps required.
# All tests
rebar3 eunit
# Specific test module
rebar3 eunit --module=hackney_conn_tests
# With verbose output
rebar3 eunit --verboserebar3 dialyzer- Follow existing code conventions
- Keep functions short and focused
- Add specs for exported functions
- Update documentation for API changes
When reporting bugs, include:
- Erlang/OTP version (
erl -version) - hackney version
- Minimal reproduction case
- Expected vs actual behavior
Open an issue or reach out to the maintainers.