Thanks for your interest in contributing to JTP (Jason Transfer Protocol).
src/protocol.rs- Core protocol implementationsrc/bin/server.rs- TLS server binarysrc/bin/client.rs- TLS client binary
- Rust toolchain (stable, 1.72+)
cargo build
cargo test# Terminal 1: Start server
cargo run --bin server
# Terminal 2: Run client
cargo run --bin client- Fix bugs in the client/server/protocol
- Improve performance and error handling
- Add tests or fuzzing
- Improve documentation
Changes to the binary protocol must be handled carefully:
- Update documentation: Modify
README.mdandRFC.md - Keep implementations consistent: Server and client must match
- Prefer additions over breaking changes: Add new request types rather than modifying existing ones
ImageIDs are defined as:
ImageID = xxHash64(file_bytes, seed=0)
Encoded on the wire as u64 big-endian.
If you change this, update:
src/protocol.rssrc/bin/server.rssrc/bin/client.rs- Documentation
- Run
cargo fmtbefore committing - Run
cargo clippyto catch common issues - Keep changes focused and minimal
- Avoid adding dependencies unless necessary
- Fork the repository
- Create a feature branch
- Make your changes
- Ensure
cargo buildandcargo testpass - Open a pull request with:
- What changed
- Why it changed
- Protocol compatibility notes (if applicable)
- How to test
When filing an issue, please include:
- OS and Rust version
- Steps to reproduce
- Expected vs actual behavior
- Logs with
--verboseif relevant - If protocol-related: hexdump of the bytes exchanged