Files
vpc-shift-tool/CONTRIBUTING.md
raven 2bb5ce0327 Rename udev rules file and update documentation
- Renamed udev rules file from 99-vpc.rules to 70-vpc.rules for better priority
- Updated all references to the file in Makefile and documentation
- Added instructions for manually creating udev rules when using precompiled binaries
- Improved installation instructions for both Windows and Linux platforms
2025-04-10 13:44:52 -04:00

3.7 KiB

Contributing to OpenVPC Shift Tool

Thank you for your interest in contributing to the OpenVPC Shift Tool! This document provides guidelines and instructions for contributing to the project.

Code of Conduct

Please be respectful and considerate of others when contributing to this project. We aim to foster an inclusive and welcoming community.

Getting Started

  1. Fork the repository on GitHub
  2. Clone your fork locally:
    git clone https://github.com/YOUR-USERNAME/vpc-shift-tool.git
    cd vpc-shift-tool
    
  3. Add the original repository as an upstream remote:
    git remote add upstream https://github.com/RavenX8/vpc-shift-tool.git
    
  4. Create a new branch for your changes:
    git checkout -b feature/your-feature-name
    

Development Environment Setup

  1. Install the Rust toolchain from rustup.rs

  2. Install dependencies:

    • Windows: No additional dependencies required
    • Linux: sudo apt install libudev-dev pkg-config (Ubuntu/Debian)
  3. Build the project:

    cargo build
    
  4. Run the application:

    cargo run
    

Making Changes

  1. Make your changes to the codebase
  2. Write or update tests as necessary
  3. Ensure all tests pass:
    cargo test
    
  4. Format your code:
    cargo fmt
    
  5. Run the linter:
    cargo clippy
    

Commit Guidelines

  • Use clear and descriptive commit messages
  • Reference issue numbers in your commit messages when applicable
  • Keep commits focused on a single change
  • Use the present tense ("Add feature" not "Added feature")

Pull Request Process

  1. Update your fork with the latest changes from upstream:
    git fetch upstream
    git rebase upstream/main
    
  2. Push your changes to your fork:
    git push origin feature/your-feature-name
    
  3. Create a pull request through the GitHub interface
  4. Ensure your PR description clearly describes the changes and their purpose
  5. Link any related issues in the PR description

Code Style

  • Follow the Rust style guidelines
  • Use meaningful variable and function names
  • Add comments for complex logic
  • Document public functions and types

Project Structure

  • src/main.rs: Application entry point and main structure
  • src/about.rs: About screen information
  • src/config.rs: Configuration handling
  • src/device.rs: Device representation and management
  • src/hid_worker.rs: HID communication worker thread
  • src/state.rs: Application state management
  • src/ui.rs: User interface components
  • src/util.rs: Utility functions and constants

Adding Support for New Devices

If you're adding support for new device types:

  1. Update the device detection logic in device.rs
  2. Add any necessary report format definitions in util.rs
  3. Test with the actual hardware if possible
  4. Document the new device support in your PR

Testing

  • Write unit tests for new functionality
  • Test on both Windows and Linux if possible
  • Test with actual VirPil hardware if available

Documentation

  • Update the README.md with any new features or changes
  • Document new functions and types with rustdoc comments
  • Update TECHNICAL.md for significant architectural changes

Reporting Issues

If you find a bug or have a suggestion for improvement:

  1. Check if the issue already exists in the GitHub Issues
  2. If not, create a new issue with:
    • A clear title and description
    • Steps to reproduce the issue
    • Expected and actual behavior
    • System information (OS, Rust version, etc.)
    • Screenshots if applicable

License

By contributing to this project, you agree that your contributions will be licensed under the project's GNU General Public License v3.0.