Skip to content

Latest commit

 

History

History
168 lines (122 loc) · 4.29 KB

File metadata and controls

168 lines (122 loc) · 4.29 KB

Contributing to DevContainer Strategy Comparison

Thank you for your interest in contributing! This document provides guidelines for contributing to this project.

Types of Contributions

We welcome various types of contributions:

1. New Strategies

  • Propose and implement new devcontainer configuration strategies
  • Document trade-offs and use cases
  • Include benchmark scripts and results

2. Performance Improvements

  • Optimize existing configurations
  • Improve caching strategies
  • Reduce build times or image sizes

3. Documentation

  • Improve README and strategy documentation
  • Add examples and use cases
  • Fix typos and clarify instructions

4. Benchmark Enhancements

  • Improve benchmark scripts
  • Add new metrics
  • Enhance result visualization

5. Bug Fixes

  • Fix configuration issues
  • Correct benchmark script errors
  • Address documentation inaccuracies

Getting Started

Prerequisites

  • Windows with PowerShell
  • Podman installed and configured
  • VS Code with Dev Containers extension
  • Git for version control

Setup

  1. Fork the repository

  2. Clone your fork:

    git clone https://github.com/YOUR-USERNAME/devcontainer-strategy.git
    cd devcontainer-strategy
  3. Create a branch for your changes:

    git checkout -b feature/your-feature-name

Adding a New Strategy

  1. Create a new directory under strategies/:

    mkdir strategies/07-your-strategy-name
  2. Add the required files:

    • .devcontainer/devcontainer.json - DevContainer configuration
    • README.md - Strategy documentation
    • benchmark.ps1 - Benchmark script
  3. Follow the standard configuration:

    • Use base image: mcr.microsoft.com/devcontainers/rust@sha256:e418f5e96979c3674baf47115366d0e4f5569fefdab6b51bd2817256941ceeb0
    • Include all standard VS Code extensions
    • Document any deviations from the standard
  4. Document your strategy:

    • Explain the approach
    • List pros and cons (without performance claims)
    • Describe use cases
    • Note any special requirements

Running Benchmarks

Before submitting, run benchmarks for your strategy:

cd strategies/your-strategy-name
.\benchmark.ps1

Ensure the script:

  • Captures system information
  • Runs 5 iterations
  • Outputs results in JSON format
  • Includes all standard metrics

Submitting Changes

Pull Request Process

  1. Commit your changes with clear, descriptive messages:

    git add .
    git commit -m "Add strategy: Your Strategy Name"
  2. Push to your fork:

    git push origin feature/your-feature-name
  3. Open a Pull Request with:

    • Clear title describing the change
    • Detailed description of what was added/changed
    • Benchmark results (for new strategies)
    • Screenshots or examples (if applicable)
  4. Address review feedback promptly and professionally

Pull Request Guidelines

  • One feature per PR: Keep changes focused and atomic
  • Test thoroughly: Verify configurations work as expected
  • Update documentation: Include relevant README updates
  • Follow conventions: Match existing code style and structure
  • Include results: Provide benchmark data for performance claims

Benchmark Standards

All benchmark submissions must:

  1. Use the standard benchmark script template
  2. Run on a clean Podman environment
  3. Include 5 iterations minimum
  4. Report median values
  5. Capture full system specifications
  6. Output JSON format results

Code of Conduct

Our Standards

  • Be respectful and inclusive
  • Welcome diverse perspectives
  • Focus on constructive feedback
  • Assume good intentions
  • Respect differing viewpoints

Unacceptable Behavior

  • Harassment or discriminatory language
  • Trolling or insulting comments
  • Personal or political attacks
  • Publishing others' private information

Questions?

  • Issues: Open an issue for bugs or feature requests
  • Discussions: Use GitHub Discussions for questions
  • Pull Requests: For proposed changes with code

License

By contributing, you agree that your contributions will be licensed under the MIT License.

Recognition

Contributors will be acknowledged in the project. Significant contributions may be highlighted in release notes.

Thank you for helping improve DevContainer Strategy Comparison!