Thank you for your interest in contributing to ArcDeploy! This document provides guidelines for contributing to the production ArcDeploy repository.
Note: If you're interested in contributing to development tools, testing frameworks, or advanced features, please see the ArcDeploy-Dev repository instead.
This repository contains the production-ready ArcDeploy deployment system optimized for:
- Simple 10-minute cloud deployments
- End-user accessibility
- Minimal file size and complexity
- Universal cloud provider compatibility
- Enterprise-grade security
- Bug fixes for deployment issues
- Security improvements and patches
- Documentation improvements and clarifications
- Cloud provider compatibility enhancements
- Performance optimizations for deployment speed
- User experience improvements for ease of use
- Development tools and testing frameworks β Use ArcDeploy-Dev
- Experimental features β Use ArcDeploy-Dev
- Debug tools and diagnostic scripts β Use ArcDeploy-Dev
- GitHub account
- Basic understanding of cloud-init and YAML
- Experience with at least one major cloud provider
- Understanding of Linux system administration
-
Fork the repository
# Fork via GitHub UI, then clone your fork git clone https://github.com/your-username/ArcDeploy.git cd ArcDeploy
-
Set up upstream remote
git remote add upstream https://github.com/Pocklabs/ArcDeploy.git
-
Create a feature branch
git checkout -b feature/your-feature-name
# Validate YAML syntax
python3 -c "import yaml; yaml.safe_load(open('cloud-init.yaml'))"
# Check file structure
ls -la
# Validate documentation
markdown-link-check README.mdBefore submitting a PR, test your changes on at least one cloud provider:
- Choose a test cloud provider (AWS, GCP, Azure, DigitalOcean, etc.)
- Deploy with your changes using a small instance
- Verify the deployment works as expected
- Document test results in your PR
- Check existing issues before creating new ones
- Create an issue describing the problem or enhancement
- Wait for feedback from maintainers
- Get approval before starting work on large changes
- YAML formatting: Use 2-space indentation
- Comments: Add clear comments for complex configurations
- Security: Never include real credentials or sensitive data
- Backwards compatibility: Maintain compatibility with existing deployments
- Clear language: Write for users of all skill levels
- Examples: Include practical examples
- Updated: Keep all documentation current
- Tested: Verify all instructions work
- Issue reference: Link to related issue
- Clear description: Explain what and why
- Testing evidence: Show successful deployment
- Documentation: Update relevant docs
- No secrets: Verify no credentials included
- Backwards compatible: Confirm existing deployments work
[TYPE] Brief description
Examples:
[FIX] Resolve nginx configuration issue on Ubuntu 24.04
[FEAT] Add support for Hetzner Cloud deployment
[DOCS] Improve troubleshooting guide for firewall issues
[SEC] Update SSH configuration for enhanced security
Use the provided PR template and fill out all relevant sections.
- No real credentials: Use placeholders only
- Secure defaults: Follow security best practices
- Input validation: Validate all user inputs
- Minimal exposure: Limit open ports and services
- Private reporting: Use GitHub Security Advisories
- No public disclosure: Don't create public issues for security bugs
- Responsible disclosure: Allow time for fixes before disclosure
# Good: Clear, commented, consistent indentation
users:
- name: arc
sudo: ['ALL=(ALL) NOPASSWD:ALL']
shell: /bin/bash
# SSH key will be added during deployment
ssh_authorized_keys:
- "SSH_PUBLIC_KEY_PLACEHOLDER"
# Bad: No comments, inconsistent formatting
users:
- name: arc
sudo: ['ALL=(ALL) NOPASSWD:ALL']
shell: /bin/bash
ssh_authorized_keys: ["SSH_PUBLIC_KEY_PLACEHOLDER"]# Good: Clear headings, practical examples
## Installing on AWS
1. **Launch EC2 instance** with Ubuntu 22.04 LTS
2. **Configure security group** to allow ports 22, 80, 443
3. **Add cloud-init configuration** in user data
# Bad: Vague, no examples
## AWS
Configure AWS and deploy.- Syntax validation: YAML parses correctly
- Cloud deployment: Works on at least one cloud provider
- Service functionality: All services start and work
- Security verification: No security regressions
- Documentation accuracy: All docs are current
# Pre-submission testing checklist
β‘ YAML syntax validated
β‘ Deployed successfully on cloud provider: ___________
β‘ All services running (nginx, blocklet-server, ssh)
β‘ Firewall configured correctly
β‘ SSL/TLS working if applicable
β‘ No sensitive data in commits
β‘ Documentation updated and tested
β‘ Backwards compatibility verifiedbug- Something isn't workingenhancement- New feature or improvementdocumentation- Documentation improvementssecurity- Security-related issuescloud-provider- Cloud provider specific issuesperformance- Performance improvementsuser-experience- UX improvements
priority-critical- System breaking, needs immediate attentionpriority-high- Important, should be addressed soonpriority-medium- Normal prioritypriority-low- Nice to have
- Automated checks: CI/CD validation runs automatically
- Maintainer review: Code and approach review
- Community feedback: Optional community input
- Testing verification: Deployment testing confirmation
- Approval and merge: Final approval and integration
- Functionality: Does it work as intended?
- Security: No security vulnerabilities introduced?
- Performance: No significant performance impact?
- Compatibility: Works across cloud providers and OS versions?
- Documentation: Properly documented and explained?
- General questions: GitHub Discussions
- Development help: ArcDeploy-Dev repository
- Bug reports: GitHub Issues
- Security issues: Security Advisories
- Critical issues: 24-48 hours
- Bug reports: 3-5 business days
- Feature requests: 1-2 weeks
- Pull requests: 3-7 business days
- Contributors file: All contributors listed in CONTRIBUTORS.md
- Release notes: Significant contributions mentioned
- Community recognition: Featured in project updates
Regular contributors who demonstrate:
- Consistent quality contributions
- Understanding of project goals
- Good community interaction
- Technical expertise
May be invited to become maintainers.
- Respectful: Treat all community members with respect
- Inclusive: Welcome people of all backgrounds and experience levels
- Collaborative: Work together constructively
- Professional: Maintain professional communication
- Warning: First violation gets a warning
- Temporary ban: Repeated violations result in temporary ban
- Permanent ban: Severe or continued violations result in permanent ban
By contributing to ArcDeploy, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to ArcDeploy! Your contributions help make infrastructure deployment simpler and more reliable for everyone.
1. Fork repository
2. Create feature branch
3. Make changes
4. Test thoroughly
5. Submit pull request
6. Address review feedback
7. Get merged! π
ArcDeploy/
βββ README.md # Main documentation
βββ cloud-init.yaml # Deployment configuration
βββ LICENSE # MIT license
βββ .gitignore # Git ignore rules
βββ CONTRIBUTING.md # This file
βββ docs/ # Additional documentation
βββ .github/ # GitHub templates and workflows
- Project Lead: Maintainer Name
- Security Contact: security@example.com
- Community: GitHub Discussions
Happy Contributing! π