Skip to content

Latest commit

 

History

History
95 lines (66 loc) · 2.91 KB

File metadata and controls

95 lines (66 loc) · 2.91 KB

Contributing to WireSend

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.

Code of Conduct

This project adheres to the Rust Code of Conduct. By participating, you are expected to uphold this code.

Development Setup

Prerequisites

  1. Rust toolchain — install via rustup

    rustup install stable
    rustup default stable
  2. Tauri system dependencies — follow the guide for your platform:

  3. Node.js (for the Tauri frontend) — install via nvm or your package manager.

Building

# 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

How to Contribute

Pick a Task

  • Check ROADMAP.md — especially the Community Roadmap section for contributor-friendly features.
  • Look for issues labeled good first issue or help wanted.
  • If you want to work on something not listed, open an issue first to discuss it.

Milestone Workflow

WireSend is organized around milestones. Each milestone ends with a working application. When contributing:

  1. Check which milestone is active.
  2. Pick an unassigned task from that milestone.
  3. If the task isn't broken down enough, open an issue to discuss.

Pull Request Process

  1. Fork the repo and create your branch from main.
  2. Run tests before committing:
    cargo test
    cargo clippy -- -D warnings
  3. Keep PRs focused — one feature or fix per PR. If your change touches multiple milestones, consider splitting it.
  4. Write tests for new functionality.
  5. Update documentation if you change public APIs.
  6. Open a PR with a clear title and description explaining what you changed and why.

Commit Style

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

Architecture Principles

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.

Questions?

Open a Discussion or ask in issues. No question is too small.