First off, thank you for considering contributing to WireSend. Every contribution helps, whether it's a bug fix, a new feature, documentation, or even just a typo fix.
This project adheres to the Rust Code of Conduct. By participating, you are expected to uphold this code.
-
Rust toolchain — install via rustup
rustup install stable rustup default stable
-
Tauri system dependencies — follow the guide for your platform:
-
Node.js (for the Tauri frontend) — install via nvm or your package manager.
# Clone the repository
git clone https://github.com/mycloudpoint/WireSend.git
cd wiresend
# Build the workspace
cargo build --workspace
# Run tests
cargo test
# Lint
cargo clippy -- -D warnings- Check ROADMAP.md — especially the Community Roadmap section for contributor-friendly features.
- Look for issues labeled
good first issueorhelp wanted. - If you want to work on something not listed, open an issue first to discuss it.
WireSend is organized around milestones. Each milestone ends with a working application. When contributing:
- Check which milestone is active.
- Pick an unassigned task from that milestone.
- If the task isn't broken down enough, open an issue to discuss.
- Fork the repo and create your branch from
main. - Run tests before committing:
cargo test cargo clippy -- -D warnings - Keep PRs focused — one feature or fix per PR. If your change touches multiple milestones, consider splitting it.
- Write tests for new functionality.
- Update documentation if you change public APIs.
- Open a PR with a clear title and description explaining what you changed and why.
We use Conventional Commits:
feat: add mDNS device discovery
fix: handle connection timeout on Linux
docs: update architecture diagram in README
refactor: extract transport trait from TCP module
Before contributing, familiarize yourself with the Architecture Principles:
- Discovery is separate from transport.
- Protocol is transport-agnostic.
- Feature modules are independent.
- Everything communicates through events.
- Every milestone ends in a working application.
Open a Discussion or ask in issues. No question is too small.