🤝 Contributing to Mica

Help build the future of systems programming

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:

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:

  1. Automated checks run: CI verifies tests, formatting, and linting
  2. Maintainer review: A core team member reviews your code
  3. Discussion: Address feedback and make changes if needed
  4. Approval: Once approved, your PR is merged
  5. 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!