Welcome Contributors!
Thank you for your interest in contributing to FastSkill! We welcome contributions of all types, from bug reports and documentation improvements to new features and architectural changes.Ways to Contribute
🐛 Bug Reports
- Report bugs and unexpected behavior
- Suggest improvements to existing features
- Help reproduce and verify bug fixes
📚 Documentation
- Improve existing documentation
- Add missing examples or tutorials
- Translate documentation to other languages
- Create video tutorials or blog posts
💻 Code Contributions
- Implement new features
- Fix bugs and security issues
- Improve performance and reliability
- Add support for new languages or frameworks
🧪 Testing
- Write unit and integration tests
- Test edge cases and error conditions
- Improve test coverage
- Create testing utilities and frameworks
🎨 Design and UX
- Improve user interfaces and experiences
- Create icons, logos, and visual assets
- Enhance documentation design
- Suggest UX improvements
Development Setup
Prerequisites
Install Rust
Install Python
Install Node.js (optional)
Repository Setup
Clone the repository
Python development environment
Rust development environment
Install development tools
Development Workflow
1. Choose an Issue
Find an issue
- Issues labeled
good first issueorhelp wanted - Bugs you can reproduce
- Features you’d like to implement
- Documentation improvements
Create an issue if needed
- Search existing issues first
- Create a clear, descriptive issue
- Include context and expected behavior
- Tag appropriately (bug, enhancement, documentation)
Comment on the issue
2. Create a Feature Branch
Create branch from main
Branch naming conventions
feature/feature-namefor new featuresfix/bug-descriptionfor bug fixesdocs/section-updatesfor documentation changesrefactor/component-namefor code refactoringtest/test-descriptionfor test improvements
3. Make Your Changes
Follow coding standards
- Python: Follow PEP 8 and use type hints
- Rust: Follow standard Rust conventions and idioms
- Documentation: Use clear, concise language with examples
- Tests: Write comprehensive tests for new functionality
Add tests
Update documentation
- Add examples for new features
- Update API documentation
- Include usage instructions
- Update changelog if needed
4. Test Your Changes
Run tests
Test manually
Check code quality
5. Submit Your Contribution
Commit your changes
Commit message format
feat: New featurefix: Bug fixdocs: Documentation changestest: Test improvementsrefactor: Code refactoringchore: Maintenance tasks
Push your branch
Create pull request
- Go to the repository on GitHub
- Click “Compare & pull request”
- Fill out the pull request template
- Add appropriate labels
- Request review from maintainers
Code Standards
Python Standards
Rust Standards
Testing Guidelines
Test Structure
Unit tests
Integration tests
Performance tests
Test Coverage
Run coverage analysis
Check coverage requirements
- Minimum 90% code coverage for new code
- 100% coverage for critical paths
- Test edge cases and error conditions
- Test both success and failure scenarios
Documentation Standards
Writing Guidelines
Use clear language
- Write in second person (“you”) for instructions
- Use active voice
- Keep sentences concise but informative
- Avoid jargon or define it when used
Structure content well
- Use descriptive headings
- Include code examples for technical content
- Provide step-by-step instructions for procedures
- Include troubleshooting sections
API documentation
Pull Request Process
PR Requirements
Fill out the PR template
- Description: What the PR does and why
- Related Issues: Links to related issues
- Testing: How you tested the changes
- Breaking Changes: Any backward compatibility issues
- Documentation: Documentation updates included
Include tests
- Unit tests for new functionality
- Integration tests for component interactions
- Regression tests for bug fixes
- Performance tests for performance changes
Update documentation
- Add examples for new features
- Update API documentation
- Include usage instructions
- Update changelog if needed
Review Process
Automated checks
- Code formatting (black, rustfmt)
- Linting (ruff, clippy)
- Type checking (mypy)
- Security scanning (cargo audit)
- Test suite execution
Maintainer review
- Code quality and style
- Test coverage
- Documentation completeness
- Backward compatibility
- Security implications
Address feedback
- Respond to all review comments
- Make requested changes
- Ask for clarification if needed
- Update PR description if scope changes
Community Guidelines
Communication
Be respectful
- Treat all contributors with respect
- Use inclusive language
- Give constructive feedback
- Accept feedback gracefully
Be collaborative
- Help other contributors
- Share knowledge and resources
- Work together on solutions
- Acknowledge others’ contributions
Stay on topic
- Keep discussions focused on FastSkill
- Use appropriate channels for different topics
- Avoid off-topic conversations
Contribution Recognition
Contributors are recognized
- Contributors are listed in the README
- Major contributors may be invited to become maintainers
- Contributions are highlighted in release notes
- Community contributions are celebrated
Quality over quantity
- We value well-tested, well-documented contributions
- Small, focused changes are preferred over large, complex ones
- Clear, readable code is more important than clever code
Getting Help
As a Contributor
Ask questions
- Use GitHub Discussions for general questions
- Ask in PR comments for specific feedback
- Join community chat for real-time help
Request reviews
- Ask for early feedback on complex changes
- Request review from specific maintainers if needed
- Provide context for your changes
Learn from feedback
- Review comments are meant to help improve the codebase
- Ask for clarification if something is unclear
- Apply feedback consistently across your changes
License and Legal
Code License
All contributions to FastSkill are licensed under the project license (MIT OR Apache-2.0). By contributing, you agree that your contributions can be used under these license terms.Copyright
- Don’t include copyrighted code without permission
- Respect trademarks and branding
- Attribute third-party code appropriately
- Follow open source licensing requirements
Recognition and Rewards
Contribution Badges
Contributors earn recognition badges:- First Contribution: Welcome badge for first-time contributors
- Bug Hunter: For reporting and fixing bugs
- Documentation Hero: For improving documentation
- Feature Developer: For implementing new features
- Test Champion: For improving test coverage
- Community Helper: For helping other contributors
Hall of Fame
Major contributors are recognized in:- README contributors section
- Release notes
- Community highlights
- Project governance (for consistent contributors)