Thank you for your interest in contributing to the Simulation Engine! We welcome contributions from the community.
- Rust 1.90.0+ (Install Rust)
- Git
# Clone the repository
git clone https://github.com/bniladridas/simulation-engine.git
cd simulation-engine
# Run tests and checks
./scripts/ci.sh
# Build the project
cargo build
# Run examples
cargo run --example basic_simulation- Check GitHub Issues for open tasks
- Comment on the issue to indicate you're working on it
git checkout -b feature/your-feature-name
# or
git checkout -b fix/issue-number-description- Follow the existing code style
- Add tests for new functionality
- Update documentation as needed
- Run
./scripts/ci.shto ensure quality
- Use conventional commit format:
feat: add new physics simulation feature fix: resolve collision detection bug docs: update API documentation refactor: improve code organization test: add unit tests for physics engine - Keep commits focused and atomic
- Push your branch to GitHub
- Create a pull request with a clear description
- Reference any related issues
- Ensure CI checks pass
- Follow standard Rust formatting (
cargo fmt) - Use
cargo clippyfor linting - Write comprehensive documentation comments
- Use meaningful variable and function names
- Add unit tests for new functions
- Include integration tests for complex features
- Ensure all tests pass before submitting
- Update README.md for significant changes
- Add examples for new features
- Keep API documentation current
Use the following format for pull request titles:
<type>[<scope>] :: <short, imperative description>
-
<type>— what kind of change this is Common values:feat– new functionalityfix– bug or build fixrefactor– internal restructuring, no behavior changeperf– performance improvementdocs– documentation onlychore– tooling, CI, depstest– tests only
-
<scope>— affected area (keep it short, lowercase) Examples:physics,engine,ci,ui -
::— visual separator -
<short description>- Imperative mood ("add", "fix", "improve", "refactor")
- ≤ 60–70 characters if possible
- No period at the end
feat[physics] :: improve numerical stabilityfix[engine] :: resolve collision detection bugrefactor[ci] :: update pre-commit hookschore[deps] :: upgrade rust dependencies
We use Conventional Commits:
<type>[optional scope]: <description>
[optional body]
[optional footer]
Types:
feat: New featuresfix: Bug fixesdocs: Documentation changesstyle: Code style changesrefactor: Code refactoringtest: Testing changeschore: Maintenance tasks
- Use GitHub Issues for bugs and feature requests
- Provide clear reproduction steps
- Include relevant code samples and error messages
- Specify your environment (OS, Rust version, etc.)
By contributing to this project, you agree that your contributions will be licensed under the same MIT License that covers the project.