v0.1.0
Contributing to Mistcraft

Welcome Contributors!

Mistcraft is an open-source project and we love contributions from our community! Whether you're fixing bugs, adding features, improving documentation, or helping others, every contribution is valuable.

Ways to Contribute

Code Contributions
  • Fix bugs and issues
  • Add new features
  • Improve performance
  • Write tests
Documentation
  • Improve existing docs
  • Write tutorials
  • Add examples
  • Fix typos
Community
  • Answer questions
  • Review PRs
  • Report bugs
  • Share feedback
Providers
  • Add cloud providers
  • Implement resources
  • Test integrations
  • Update APIs
Getting Started

Development Setup

# 1. Fork and clone the repository git clone https://github.com/YOUR_USERNAME/mistcraft.git cd mistcraft # 2. Install Rust nightly rustup install nightly rustup override set nightly # 3. Build the project cargo build # 4. Run tests cargo test # 5. Run a specific crate cargo run -p mistup -- --help

Project Structure

misting/ Core resource management library
mistwrite/ DSL parser and evaluator
mistup/ CLI interface
mistforge/ Provider code generator
providers/ Cloud provider implementations
Contribution Process

Step-by-Step Guide

  1. Find an Issue

    Look for issues labeled "good first issue" or "help wanted"

  2. Create a Branch

    Use descriptive names like fix/memory-leak or feat/aws-provider

  3. Make Changes

    Follow the coding style and add tests for new features

  4. Run Tests

    Ensure cargo test and cargo clippy pass

  5. Submit PR

    Include a clear description of your changes

Pull Request Guidelines

  • Keep PRs focused on a single issue
  • Update documentation if needed
  • Add tests for new functionality
  • Follow the existing code style
  • Update CHANGELOG.md if applicable
Code Style

Rust Guidelines

// Use descriptive names let resource_manager = ResourceManager::new(); // Document public APIs /// Creates a new deployment with the specified resources /// /// # Arguments /// * `resources` - List of resources to deploy /// /// # Returns /// Deployment result with status pub fn deploy(resources: Vec<Resource>) -> Result<Deployment> { // Implementation } // Handle errors properly match operation() { Ok(result) => process(result), Err(e) => log::error!("Operation failed: {}", e), } // Use idiomatic Rust resources .iter() .filter(|r| r.is_valid()) .map(|r| r.deploy()) .collect::<Result<Vec<_>>>()?;

Commit Messages

Follow conventional commits format:

feat: Add AWS S3 provider support fix: Resolve memory leak in state manager docs: Update quickstart guide test: Add integration tests for Azure provider refactor: Simplify deployment logic
Community

Get Help

Need help with your contribution? We're here to help!

Code of Conduct

Please be respectful and inclusive. We're committed to providing a welcoming environment for all contributors.