Thank you for your interest in contributing to Tooka! 🎉
We welcome contributions of all kinds: bug reports, feature requests, documentation improvements, and code contributions.
- Code of Conduct
- Getting Started
- How to Contribute
- Development Setup
- Coding Guidelines
- Submitting Changes
- Community
This project adheres to a Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to demetzbenjamin23@gmail.com.
- Rust 1.87 or later
- Cargo (comes with Rust)
- Git
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/tooka.git cd tooka - Add the upstream repository:
git remote add upstream https://github.com/benji377/tooka.git
Before creating a bug report, please check the existing issues to avoid duplicates.
When filing a bug report, use the bug report template and include:
- A clear description of the issue
- Steps to reproduce the behavior
- Expected vs. actual behavior
- Logs (see wiki for log location)
- Your environment (OS, terminal, version)
Feature requests are welcome! Please use the feature request template and:
- Explain the problem you're trying to solve
- Describe your proposed solution
- Consider alternative approaches
- Provide any additional context
For larger features, consider opening a discussion first to gather feedback.
Documentation improvements are always appreciated:
- Fix typos or unclear explanations
- Add examples or use cases
- Improve the wiki
- Write or improve code comments
-
Build the project:
cargo build
-
Run the application:
cargo run -- [arguments]
-
Run tests:
cargo test -
Run linter:
cargo clippy --all-features
-
Format code:
cargo fmt
-
Run performance benchmarks:
cargo run --release --bin performance_benchmarks
See benches/README.md for details on the benchmark suite.
- Write clear, readable code
- Follow the existing code style
- Add tests for new functionality
- Update documentation as needed
- Keep commits focused and atomic
- Follow the Rust API Guidelines
- Run
cargo fmtbefore committing - Ensure
cargo clippypasses without warnings - Write comprehensive tests for new features
- Document public APIs with doc comments
- All new features should include tests
- Ensure all tests pass:
cargo test - Add tests to the appropriate test module
- Test edge cases and error conditions
- Run benchmarks for performance-sensitive changes:
cargo run --release --bin performance_benchmarks - Add new benchmarks for critical code paths (see benches/README.md)
- Investigate performance regressions before merging
- Document expected performance characteristics
Write clear, descriptive commit messages:
- Use the present tense ("Add feature" not "Added feature")
- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
- Keep the first line under 50 characters
- Provide additional context in the body if needed
Example:
Add support for custom date formats
- Implement date format parsing in utils
- Update rule matching to support custom formats
- Add tests for various date format patterns
-
Create a branch:
git checkout -b feature/your-feature-name
-
Make your changes:
- Write your code
- Add or update tests
- Update documentation
-
Test your changes:
cargo test cargo clippy --all-features cargo fmt -
Commit your changes:
git add . git commit -m "Your descriptive commit message"
-
Push to your fork:
git push origin feature/your-feature-name
-
Open a Pull Request:
- Go to the Tooka repository
- Click "New Pull Request"
- Select your fork and branch
- Fill out the PR template
- Link any related issues
- Fill out the PR template completely
- Link to relevant issues
- Ensure all CI checks pass
- Respond to review feedback promptly
- Keep PRs focused on a single feature or fix
- Update your branch with main if needed
- Discussions: GitHub Discussions
- Issues: GitHub Issues
If you have questions about contributing, feel free to:
- Open a discussion
- Ask in an existing issue
Thank you for contributing to Tooka! Your efforts help make this project better for everyone. ❤️