Thanks for your interest in contributing! mako is intentionally
small — a thin CLI wrapper around the sort engine from
fgumi. Most
correctness and performance work happens upstream in fgumi.
- Sort engine bugs (records out of order, sort crashes, performance regressions, header tag handling): file against fulcrumgenomics/fgumi.
- mako-specific issues (CLI flags, help text, packaging, install instructions, release tarballs, version banner): file here.
If you're not sure, file it here and we'll route it.
- Rust toolchain (pinned via
rust-toolchain.toml)
We use a pre-commit hook to enforce formatting and lint cleanliness:
./scripts/install-hooks.shThe hook runs cargo ci-fmt and cargo ci-lint before each commit.
# Format check (fails if formatting differs)
cargo ci-fmt
# Lint check (fails on any warnings)
cargo ci-lint
# Run all tests
cargo ci-testgit commit --no-verify -m "message"- Run
cargo fmtbefore committing. - Fix all clippy warnings.
- Follow Conventional Commits for commit messages — the changelog is generated from them.
- Ensure all CI checks pass (
cargo ci-fmt,cargo ci-lint,cargo ci-test). - Keep PRs focused.
- Include tests for new behavior.
- Update
CHANGELOG.md(or rely onrelease-plzto generate it from conventional commits).