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:
- Guides Contributors - Explains how to contribute code, documentation, or improvements
- Sets Expectations - Defines coding standards, review process, and contribution workflow
- Documents Roadmap - Shows planned features and areas where contributions are welcome
- 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
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-lab) - Make your changes
- Test thoroughly
- Document your additions
- Commit with clear messages
- Push to your fork
- 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:
# 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
README.md - Comprehensive documentation including:
- Overview and objectives
- Prerequisites
- Step-by-step setup instructions
- Usage examples
- Troubleshooting
- Cost considerations
- Learning objectives
Working Code - Not just documentation:
- Terraform configurations (if applicable)
- Scripts and automation
- Example applications
- Configuration files
Makefile - Automation commands:
make init- Initialize environmentmake apply/make deploy- Deploy resourcesmake destroy- Cleanup resourcesmake validate- Validate setupmake test- Run tests
Validation Scripts - Ensure everything works:
scripts/validate.sh- Validate deploymentscripts/test.sh- Run tests
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 componentsQuality 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
- Open an Issue - Create a GitHub issue describing the proposed lab
- Get Feedback - Discuss the idea with maintainers
- Create Proposal - Document the lab structure and learning objectives
- Get Approval - Wait for maintainer approval
- Start Building - Create the lab following contribution standards
Working on Roadmap Items
- Check Issues - Look for existing issues for roadmap items
- Comment - Express interest in working on an item
- Get Assigned - Wait for maintainer assignment
- Follow Standards - Build according to lab contribution standards
- 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
- Submit PR - Create pull request with clear description
- Automated Checks - CI/CD will run validation
- Review - Maintainers will review code and documentation
- Feedback - Address any feedback or requested changes
- 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.