Skip to content

Latest commit

 

History

History
90 lines (58 loc) · 3.08 KB

File metadata and controls

90 lines (58 loc) · 3.08 KB

Contributing to PyWebTransport

Thank you for your interest in contributing to PyWebTransport. This document defines the technical standards for contributors.

Code of Conduct

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

Security Vulnerabilities

Please do not report security vulnerabilities via public GitHub issues. For reporting instructions and disclosure policies, consult the Security Policy.

Developer Certificate of Origin (DCO)

To ensure legal compliance, we enforce the Developer Certificate of Origin (DCO) 1.1. By contributing, you certify that you have the right to submit the patch. You must sign off every commit by adding a Signed-off-by line.

Implementation Philosophy

Before contributing, review our Implementation Philosophy. All contributions must align with the architectural principles defined therein.

Development Environment

Prerequisites

  • Clang: Required for C-bindings generation.
  • Git: Version control.
  • pyenv: Python version management.
  • rustup: Rust toolchain management.
  • tox: Automated testing suite.

Setup

  1. Fork and Clone:

    git clone https://github.com/<your-username>/pywebtransport.git
    cd pywebtransport
    git remote add upstream https://github.com/wtransport/pywebtransport.git
  2. Environment:

    pyenv install
    python -m venv .venv
    source .venv/bin/activate
  3. Dependencies:

    pip install -r dev-requirements.txt
    pip install -e .

Coding Standards

All contributions must adhere to the following style requirements:

  • formatting: black, cargo fmt
  • imports: isort
  • linting: flake8, clippy
  • typing: mypy
  • documentation: Concise single-line docstrings and mandatory type hints for public APIs.

Testing

Execute pytest to validate full-stack behavior including the underlying Rust engine, and cargo test for internal state machine correctness. Full matrix validation via tox is mandatory before submission.

Requirement: New features must include positive, negative, and edge-case tests.

Commit & PR Process

  1. Commit: Sign-off is mandatory (git commit -s). Follow Conventional Commits.
  2. Changelog: Add a user-facing entry to CHANGELOG.md under Unreleased.
  3. Submission: Open a PR against main with technical rationale.

Release Process

(Maintainers Only)

Releases follow Semantic Versioning. Update the version source of truth and finalize CHANGELOG.md before merging to main.

Protocol Compliance

Contributions must adhere to the IETF WebTransport specifications: