Thank you for your interest in contributing to PKBoost! This document provides guidelines and instructions for contributing.
- Code of Conduct
- Getting Started
- How to Contribute
- Development Setup
- Coding Standards
- Pull Request Process
- Reporting Issues
By participating in this project, you agree to maintain a respectful and inclusive environment. Be kind, constructive, and professional in all interactions.
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/pkboost.git cd pkboost - Add the upstream remote:
git remote add upstream https://github.com/PKBoost-AI-Labs/pkboost.git
- Bug fixes - Found a bug? We'd love a fix!
- Performance improvements - Make PKBoost faster
- New features - Extend functionality (discuss first in an issue)
- Documentation - Improve docs, examples, or tutorials
- Tests - Increase test coverage
- Benchmarks - Add new benchmark datasets or scenarios
For significant changes, please open an issue first to discuss:
- What problem you're solving
- Your proposed approach
- Any breaking changes
This helps avoid duplicate work and ensures alignment with project goals.
- Rust 1.70+ (install via rustup)
- Python 3.8+ (for Python bindings testing)
- 8GB+ RAM recommended for large dataset benchmarks
# Debug build
cargo build
# Release build (for benchmarks)
cargo build --release
# Run tests
cargo test
# Build documentation
cargo doc --no-deps --open# Main benchmark
cargo run --release --bin benchmark
# Drift tests
cargo run --release --bin test_drift
# Multi-class benchmark
cargo run --release --bin multiclass_benchmark# Install maturin
pip install maturin
# Build and install locally
maturin develop --release
# Run Python tests
python -m pytest tests/- Follow the Rust API Guidelines
- Use
cargo fmtbefore committing - Run
cargo clippyand address warnings - Write descriptive commit messages
# Format code
cargo fmt
# Check for common mistakes
cargo clippy
# Run all checks before PR
cargo fmt && cargo clippy && cargo test- Add doc comments (
///) to all public items - Include examples in doc comments where helpful
- Update README.md if adding major features
- Add tests for new functionality
- Ensure existing tests pass
- Include both unit tests and integration tests where appropriate
git checkout -b feature/your-feature-name- Write clean, documented code
- Add tests for new functionality
- Update documentation as needed
git add .
git commit -m "feat: add new feature description"Use conventional commit messages:
feat:- New featurefix:- Bug fixdocs:- Documentation onlyperf:- Performance improvementrefactor:- Code refactoringtest:- Adding testschore:- Maintenance tasks
git push origin feature/your-feature-nameThen open a Pull Request on GitHub with:
- Clear title describing the change
- Description of what and why
- Reference to related issues (if any)
- Screenshots/benchmarks for performance changes
- Maintainers will review your PR
- Address any requested changes
- Once approved, your PR will be merged
Include:
- PKBoost version (
cargo pkgid pkboost) - Rust version (
rustc --version) - Operating system
- Minimal reproduction code
- Expected vs actual behavior
- Error messages/stack traces
Include:
- Problem you're trying to solve
- Proposed solution
- Use cases
- Alternatives considered
- Open an issue for questions
- Email: kharatpushp16@outlook.com
By contributing to PKBoost, you agree that your contributions may be licensed under the terms of:
- GNU General Public License v3.0 or later (GPL-3.0-or-later), OR
- Apache License, Version 2.0
This allows PKBoost to remain dual-licensed.
Thank you for contributing to PKBoost! 🚀