Welcome Contributors!
Mica is an open-source project that thrives on community contributions. Whether you're fixing typos,
implementing features, or improving documentation, your help is valued and appreciated.
This guide will help you get started contributing to Mica. We follow a friendly, inclusive approach
that welcomes developers of all experience levels.
Ways to Contribute
💻
Code Contributions
- Fix bugs and issues
- Implement new features
- Optimize performance
- Write tests
- Improve error messages
📚
Documentation
- Improve existing docs
- Write tutorials
- Create examples
- Fix typos
- Translate content
🐛
Testing & QA
- Report bugs
- Write test cases
- Test on different platforms
- Verify fixes
- Performance testing
💡
Design & Ideas
- Propose features
- Design discussions
- API feedback
- Usability improvements
- RFC authoring
🎨
Community
- Answer questions
- Help newcomers
- Write blog posts
- Create videos
- Share on social media
🔧
Tooling
- IDE plugins
- Build tools
- CI/CD improvements
- Editor integrations
- Development scripts
Getting Started
Fork and Clone
Fork the repository on GitHub, then clone your fork:
git clone https://github.com/YOUR_USERNAME/mica.git
cd mica
git remote add upstream https://github.com/Sir-Teo/mica.git
Build and Test
Ensure everything works on your system:
cargo build
cargo test
cargo run --bin mica -- --help
Create a Branch
Create a descriptive branch for your work:
git checkout -b feature/your-feature-name
# or
git checkout -b fix/issue-123
Make Changes
Write code, add tests, update documentation:
# Edit files...
cargo fmt # Format code
cargo clippy # Run linter
cargo test # Run tests
Commit and Push
Commit with a clear message:
git add .
git commit -m "feat: add capability X to module Y"
git push origin feature/your-feature-name
Open Pull Request
Go to GitHub and open a PR from your branch to main. Fill out the PR template with:
- What changes you made
- Why the changes are needed
- How to test the changes
- Related issues (if any)
Contribution Guidelines
✓ Best Practices
- Small, focused PRs: One feature or fix per PR
- Tests required: Add tests for new features and bug fixes
- Documentation: Update docs when changing public APIs
- Code style: Run
cargo fmt before committing
- Lint clean: Fix
cargo clippy warnings
- Clear commits: Write descriptive commit messages
- Respectful discussion: Be kind and constructive
⚠️ Before Starting Large Features: Open an issue first to discuss the design.
This prevents wasted effort if the feature isn't aligned with project goals.
Commit Message Format
We use conventional commits for clarity:
type(scope): description
[optional body]
[optional footer]
Types:
feat: New feature
fix: Bug fix
docs: Documentation changes
style: Code style changes (formatting, etc.)
refactor: Code refactoring
test: Adding or fixing tests
chore: Build process, dependencies, etc.
Examples:
feat(parser): add support for match guards
fix(resolver): handle circular imports correctly
docs(tour): add concurrency examples
test(ir): add SSA lowering test cases
Code Review Process
After submitting a PR:
- Automated checks run: CI verifies tests, formatting, and linting
- Maintainer review: A core team member reviews your code
- Discussion: Address feedback and make changes if needed
- Approval: Once approved, your PR is merged
- Recognition: You're added to contributors list!
Reviews typically happen within 2-3 days. If you haven't heard back in a week, feel free to ping the PR.
Areas Needing Help
Current priority areas (check issues for details):
Phase 3 Focus
- Runtime providers
- Telemetry exporters
- Parallel backend tuning
- Pipeline documentation
Examples
- More use cases
- Real-world patterns
- Best practices
- Benchmarks
Testing
- Edge cases
- Negative tests
- Integration tests
- Fuzzing
Documentation
- Tutorials
- Migration guides
- Video content
- Translations
Community Guidelines
We are committed to providing a welcoming and inclusive environment:
Code of Conduct
- Be respectful: Treat everyone with kindness and respect
- Be constructive: Focus on ideas, not people
- Be patient: Remember that everyone is learning
- Be inclusive: Welcome diverse perspectives
- Be professional: Keep discussions on-topic
Violations of these guidelines should be reported to the project maintainers.
We take reports seriously and will take appropriate action.
Getting Help
Need assistance with your contribution?
🎉 Thank You!
Every contribution, no matter how small, makes Mica better. Your time and effort are genuinely appreciated.
Welcome to the Mica community!