Skip to content

Contributing to DevOps Studio ​

Thank you for your interest in contributing to DevOps Studio! This document provides guidelines for contributing and outlines our roadmap for future enhancements.


What is CONTRIBUTING.md? ​

CONTRIBUTING.md is a standard file in open-source projects that:

  1. Guides Contributors - Explains how to contribute code, documentation, or improvements
  2. Sets Expectations - Defines coding standards, review process, and contribution workflow
  3. Documents Roadmap - Shows planned features and areas where contributions are welcome
  4. Establishes Community - Welcomes contributors and explains how to get help

This file helps maintain quality and consistency as the project grows.


Table of Contents ​


How to Contribute ​

Types of Contributions ​

We welcome various types of contributions:

  • 🐛 Bug Reports - Found an issue? Report it!
  • ✨ Feature Requests - Have an idea? Share it!
  • 📝 Documentation - Improve explanations or add missing docs
  • 🧪 New Labs - Contribute additional learning scenarios
  • 🔧 Bug Fixes - Submit pull requests for fixes
  • 📊 Testing - Help validate labs in different environments
  • 💡 Improvements - Enhance existing labs with better patterns

Contribution Process ​

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-lab)
  3. Make your changes
  4. Test thoroughly
  5. Document your additions
  6. Commit with clear messages
  7. Push to your fork
  8. Submit a pull request with a clear description

Contribution Guidelines ​

Code Standards ​

  • Follow existing patterns - Match the style and structure of existing labs
  • Write clear code - Code should be self-documenting with comments where needed
  • Test your changes - Ensure everything works before submitting
  • Update documentation - Keep READMEs and docs current

Documentation Standards ​

  • Comprehensive READMEs - Each lab needs a detailed README
  • Clear instructions - Step-by-step guides for first-time users
  • Troubleshooting sections - Document common issues and solutions
  • Cost information - Include cost estimates and optimization tips

Commit Messages ​

Use clear, descriptive commit messages:

bash
# Good
git commit -m "Add service mesh lab with Istio and Linkerd examples"

# Bad
git commit -m "updates"

Pull Request Guidelines ​

  • Clear title - Describe what the PR does
  • Detailed description - Explain the changes and why
  • Link issues - Reference related issues
  • Screenshots - Include screenshots for UI changes
  • Testing notes - Describe how you tested

Lab Contribution Standards ​

When contributing new labs, follow these standards:

Required Components ​

  1. README.md - Comprehensive documentation including:

    • Overview and objectives
    • Prerequisites
    • Step-by-step setup instructions
    • Usage examples
    • Troubleshooting
    • Cost considerations
    • Learning objectives
  2. Working Code - Not just documentation:

    • Terraform configurations (if applicable)
    • Scripts and automation
    • Example applications
    • Configuration files
  3. Makefile - Automation commands:

    • make init - Initialize environment
    • make apply / make deploy - Deploy resources
    • make destroy - Cleanup resources
    • make validate - Validate setup
    • make test - Run tests
  4. Validation Scripts - Ensure everything works:

    • scripts/validate.sh - Validate deployment
    • scripts/test.sh - Run tests
  5. Cost Information - Help users manage costs:

    • Monthly cost estimates
    • Cost to complete estimates
    • Optimization tips

Lab Structure ​

Follow the established directory structure:

labs/XX-lab-name/
├── README.md                    # Comprehensive documentation
├── Makefile                     # Automation commands
├── main.tf                      # Terraform (if applicable)
├── variables.tf                 # Variables
├── outputs.tf                   # Outputs
├── terraform.tfvars.example     # Example configuration
├── scripts/                     # Automation scripts
│   ├── validate.sh
│   └── test.sh
└── [lab-specific directories]   # Lab-specific components

Quality Checklist ​

Before submitting a lab, ensure:

  • ✅ All code is tested and working
  • ✅ Documentation is complete and clear
  • ✅ Cost estimates are included
  • ✅ Cleanup instructions are provided
  • ✅ Validation scripts work
  • ✅ Follows existing lab patterns
  • ✅ No hardcoded credentials or secrets
  • ✅ Error handling is included
  • ✅ Best practices are demonstrated

Roadmap ​

This section outlines planned additions and areas where contributions are especially welcome.

🎯 High Priority (Next Labs) ​

These are the next labs we plan to add:

Lab 09: Service Mesh ​

Status: Planned
Focus: Service-to-service communication, traffic management, security

Technologies:

  • Istio
  • Linkerd
  • Service mesh patterns
  • mTLS
  • Traffic splitting and canary deployments

What it will cover:

  • Service mesh architecture
  • Istio installation and configuration
  • Linkerd setup
  • Traffic management policies
  • Security policies (mTLS)
  • Observability in service mesh

Estimated Time: 2-3 hours
Difficulty: Advanced


Lab 10: FinOps & Cost Optimization ​

Status: Planned
Focus: Cloud cost management, optimization, and governance

Technologies:

  • AWS Cost Explorer
  • AWS Budgets
  • Cost allocation tags
  • Reserved Instances
  • Spot Instances
  • Right-sizing tools

What it will cover:

  • Cost visibility and reporting
  • Budget alerts and governance
  • Resource tagging strategies
  • Cost optimization techniques
  • Reserved Instance planning
  • Spot instance usage
  • Cost anomaly detection

Estimated Time: 2-3 hours
Difficulty: Intermediate


🔮 Future Labs (Ideas) ​

These are potential future additions:

Lab 11: Multi-Cloud Operations ​

  • Multi-cloud strategies
  • Terraform multi-cloud patterns
  • Cloud-agnostic architectures
  • Disaster recovery across clouds

Lab 12: Edge Computing ​

  • AWS Outposts
  • Edge locations
  • CDN optimization
  • Edge-native applications

Lab 13: Data Engineering Platform ​

  • Data lakes (S3, Lake Formation)
  • ETL pipelines (Glue, Airflow)
  • Data warehouses (Redshift, Snowflake)
  • Data streaming (Kinesis)

Lab 14: AI/ML Operations (MLOps) ​

  • SageMaker pipelines
  • Model deployment
  • Model monitoring
  • Feature stores

Lab 15: Chaos Engineering ​

  • Chaos Monkey
  • Fault injection
  • Resilience testing
  • Failure scenarios

🛠️ Platform Improvements ​

Areas where contributions are welcome:

Documentation ​

  • Additional tutorials
  • Video walkthroughs
  • Architecture diagrams
  • Best practices guides

Tooling ​

  • Additional automation scripts
  • Validation improvements
  • Cost estimation tools
  • Testing frameworks

Labs Enhancement ​

  • Additional service catalog templates
  • More CI/CD examples
  • Additional monitoring dashboards
  • Security policy examples

How to Contribute to Roadmap Items ​

Proposing a New Lab ​

  1. Open an Issue - Create a GitHub issue describing the proposed lab
  2. Get Feedback - Discuss the idea with maintainers
  3. Create Proposal - Document the lab structure and learning objectives
  4. Get Approval - Wait for maintainer approval
  5. Start Building - Create the lab following contribution standards

Working on Roadmap Items ​

  1. Check Issues - Look for existing issues for roadmap items
  2. Comment - Express interest in working on an item
  3. Get Assigned - Wait for maintainer assignment
  4. Follow Standards - Build according to lab contribution standards
  5. Submit PR - Create pull request when complete

Getting Help ​

Questions? ​

  • 💬 GitHub Discussions - Ask questions and share ideas
  • 🐛 GitHub Issues - Report bugs or request features
  • 📧 Email - Contact maintainers for complex questions

Code Review Process ​

  1. Submit PR - Create pull request with clear description
  2. Automated Checks - CI/CD will run validation
  3. Review - Maintainers will review code and documentation
  4. Feedback - Address any feedback or requested changes
  5. Merge - Once approved, your contribution will be merged!

Recognition ​

Contributors will be:

  • Listed in the project (if desired)
  • Credited in lab documentation
  • Acknowledged in release notes

Code of Conduct ​

Our Standards ​

  • Be respectful - Treat everyone with respect
  • Be inclusive - Welcome diverse perspectives
  • Be constructive - Provide helpful feedback
  • Be patient - Everyone is learning

Unacceptable Behavior ​

  • Harassment or discrimination
  • Trolling or inflammatory comments
  • Personal attacks
  • Any other unprofessional conduct

License ​

By contributing, you agree that your contributions will be licensed under the same license as the project (MIT License).


Thank you for contributing to DevOps Studio! 🎉

Your contributions help make DevOps education more accessible and practical for everyone.

Released under the MIT License.