Thank you for your interest in contributing to this Surface Pro development machine setup project!
- Use the GitHub issue tracker
- Include your Windows version and hardware details
- Provide clear reproduction steps
- Include error messages and logs
- Check existing issues first
- Describe the use case and expected behavior
- Consider if it fits the project scope (Surface Pro dev machines)
- Fork the repository
- Create a feature branch following naming convention:
feat/feature-name,fix/bug-name - Follow Conventional Commits for all commit messages
- Test your changes thoroughly
- Submit a pull request
- Windows 11 on ARM (or VM with nested virtualization)
- PowerShell 7+
- WSL 2 with Ubuntu
- Git
This project uses Conventional Commits for automated versioning and changelog generation.
Format: <type>[optional scope]: <description>
Common types:
feat: New feature (MINOR version bump)fix: Bug fix (PATCH version bump)docs: Documentation changes (PATCH version bump)perf: Performance improvement (PATCH version bump)refactor: Code refactoring (PATCH version bump)test: Adding tests (no version bump)ci: CI/CD changes (no version bump)
Examples:
git commit -m "feat(windows): add GlassWire installation"
git commit -m "fix(wsl): correct pyenv initialization"
git commit -m "docs: update README with license costs"
git commit -m "perf(windows): optimize Defender exclusions"See COMMIT_CONVENTION.md for complete details.
-
Syntax Validation
pwsh -File .\tests\syntax-validation.Tests.ps1
-
Windows Tests
pwsh -File .\tests\pester.Windows.Tests.ps1 -
Ubuntu Tests:
wsl -d Ubuntu -e bash ./tests/ubuntu-smoke-test.sh
-
Full Integration Test:
# In a VM (recommended) .\setup-machine.ps1 -SkipLicensedApps
- Follow PowerShell best practices
- Use approved verbs (
Get-Verb) - Include error handling (
try/catch,$ErrorActionPreference) - Add parameter validation
- Use consistent formatting
- Follow bash best practices
- Use
set -euo pipefailfor error handling - Quote variables properly
- Use shellcheck for linting
- Update README.md for new features
- Include inline comments for complex logic
- Update license cost information when adding paid tools
- Document any breaking changes
-
Fork and Branch
git checkout -b feature/your-feature-name
-
Make Changes
- Keep commits focused and atomic
- Write clear commit messages
- Test thoroughly
-
Run Tests
# Syntax validation pwsh -File .\tests\syntax-validation.Tests.ps1 # Windows tests (if applicable) pwsh -File .\tests\pester.Windows.Tests.ps1
-
Update Documentation
- Update README.md if needed
- Update license costs if adding paid software
- Add or update tests
-
Submit Pull Request
- Clear title and description
- Reference any related issues
- Include testing details
devMachine/
├── scripts/
│ ├── windows/ # Windows PowerShell scripts
│ └── wsl/ # WSL/Ubuntu bash scripts
├── tests/ # Test files
├── .github/ # GitHub configuration
├── README.md # Main documentation
├── setup-machine.ps1 # Main orchestrator
└── LICENSE # MIT License
- Justify the addition: Does it serve Surface Pro developers?
- Use official sources: Prefer winget/apt packages
- Consider licensing: Note if paid/licensed
- Add tests: Include in appropriate test files
- Update docs: Add to README.md tool lists
- All software should come from trusted sources
- Avoid modifying security settings without justification
- Test security changes thoroughly
- Document any security implications
- Consider 512GB storage constraints
- Prefer Dev Drive for caches when possible
- Avoid unnecessary background services
- Test on actual Surface Pro hardware when possible
- Passes all syntax validation tests
- Includes appropriate error handling
- Updates documentation
- Follows existing code patterns
- Includes tests for new functionality
- Considers storage/performance impact
- Hardcoded paths that won't work across systems
- Missing error handling
- Unicode characters in PowerShell strings
- Unescaped ampersands in PowerShell strings
- Adding software without justification
- Breaking changes without documentation
- Questions: Open a GitHub discussion
- Bugs: Use the issue tracker
- Security Issues: See SECURITY.md
- Feature Ideas: Open an issue first to discuss
Contributors will be recognized in the README.md file. Significant contributions may earn maintainer status.
Thank you for helping make Surface Pro development setup better for everyone! 🚀