Thank you for your interest in contributing to SceneSplit! This document provides guidelines and instructions for contributing.
Be respectful, inclusive, and constructive in all interactions.
- Rust (stable toolchain)
- OpenCV 4.x
- ONNX Runtime
- pkg-config
brew install opencv onnxruntime pkg-config llvm
export LIBCLANG_PATH=$(brew --prefix llvm)/libsudo apt-get install libopencv-dev clang libclang-dev pkg-config
# Install ONNX Runtime
ONNX_VERSION="1.16.3"
curl -L "https://github.com/microsoft/onnxruntime/releases/download/v${ONNX_VERSION}/onnxruntime-linux-x64-${ONNX_VERSION}.tgz" | tar xz
sudo mv onnxruntime-linux-x64-${ONNX_VERSION} /opt/onnxruntime
export ORT_LIB_LOCATION=/opt/onnxruntime/libgit clone https://github.com/wilmoore/scenesplit.git
cd scenesplit
cargo build --releasecargo test- Check existing issues to avoid duplicates
- Use the bug report template
- Include:
- SceneSplit version (
scenesplit --version) - Operating system and version
- Steps to reproduce
- Expected vs actual behavior
- Sample video file info (format, duration, resolution) if applicable
- SceneSplit version (
- Check existing issues and discussions
- Use the feature request template
- Describe the use case and proposed solution
- Fork the repository
- Create a feature branch from
main:git checkout -b feat/your-feature-name
- Make your changes following the code style guidelines
- Add tests for new functionality
- Ensure all checks pass:
cargo fmt --check cargo clippy -- -D warnings cargo test cargo build --release - Commit with conventional commit messages:
feat:new featuresfix:bug fixesdocs:documentation changesstyle:formatting, no code changerefactor:code restructuringtest:adding testschore:maintenance tasks
- Push and open a pull request
- Follow Rust idioms and best practices
- Run
cargo fmtbefore committing - Ensure
cargo clippypasses with no warnings - Write descriptive commit messages
- Add documentation for public APIs
- Keep functions focused and small
- Add unit tests for new functionality
- Integration tests for CLI behavior
- Use
tempfilefor tests that create output files - Ensure tests are deterministic
scenesplit/
├── src/
│ ├── main.rs # CLI entry point and argument parsing
│ ├── lib.rs # Library exports
│ ├── video.rs # Video decoding (OpenCV)
│ ├── embeddings.rs # Frame embedding (ONNX/MobileNetV3)
│ ├── segmentation.rs # Scene segmentation logic
│ ├── selection.rs # Frame selection
│ ├── output.rs # Image and metadata output
│ ├── model.rs # ONNX model management
│ └── error.rs # Error types
├── tests/ # Integration tests
├── doc/ # Documentation and ADRs
└── .github/workflows/ # CI/CD configuration
Open a discussion or issue on GitHub.