Thank you for your interest in contributing! We welcome all contributions, whether they are bug fixes, new features, or improvements to documentation.
# Fork on GitHub, then clone your fork
git clone https://github.com/YOUR_USERNAME/madengine.git
cd madengine# Create virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install in development mode with all dependencies
pip install -e ".[dev]"
# Setup pre-commit hooks (optional but recommended)
pre-commit installgit checkout -b feature/your-feature-name
# or
git checkout -b fix/your-bugfix-name- Implement your changes in the appropriate files
- Write tests for new functionality (place in
tests/directory) - Update documentation if needed
- Follow code standards (see below)
- Style: Black formatting (88 character line length)
- Imports: Organized with isort
- Type Hints: Add type hints for all public functions
- Docstrings: Use Google-style docstrings
- Testing: Maintain 95%+ test coverage for new code
# Run all tests
pytest
# Run with coverage report
pytest --cov=src/madengine --cov-report=html
# Run specific test file
pytest tests/test_cli.py
# Run tests matching pattern
pytest -k "test_build"# Format code
black src/ tests/
isort src/ tests/
# Lint code
flake8 src/ tests/
# Type checking
mypy src/madengine
# Run all quality checks (if pre-commit installed)
pre-commit run --all-filesUse conventional commit format:
# Good commit messages
git commit -m "feat(cli): add SLURM runner support"
git commit -m "fix(k8s): handle connection timeouts gracefully"
git commit -m "docs: update deployment examples"
git commit -m "test: add integration tests for build command"
# Commit types
# feat: New feature
# fix: Bug fix
# docs: Documentation changes
# test: Test additions/changes
# refactor: Code refactoring
# style: Code style changes (formatting, etc.)
# perf: Performance improvements
# chore: Build process or auxiliary tool changesgit push origin feature/your-feature-name- Go to the madengine repository
- Click "New Pull Request"
- Select your fork and branch
- Provide a clear description:
- What changes were made
- Why the changes were needed
- Any related issues (use
Fixes #123to auto-close issues)
- Tests pass locally (
pytest) - Code follows style guidelines (
black,isort,flake8) - New tests added for new functionality
- Documentation updated if needed
- Commit messages follow conventional format
- No merge conflicts with main branch
- Automated Checks: CI/CD runs tests and linting
- Code Review: Maintainers review your code
- Feedback: Address any requested changes
- Approval: Once approved, your PR will be merged
- Additional deployment backends
- Performance optimizations
- Enhanced error messages
- Test coverage improvements
- CLI enhancements
- Documentation improvements
- Monitoring and observability
- Configuration simplification
Look for issues labeled good-first-issue on GitHub.
madengine/
├── src/madengine/
│ ├── cli/ # CLI commands
│ ├── orchestration/ # Build and run orchestrators
│ ├── deployment/ # K8s and SLURM deployment
│ ├── execution/ # Container execution
│ ├── core/ # Core utilities
│ └── utils/ # Helper functions
├── tests/ # Test suite
├── docs/ # Documentation
└── examples/ # Example configurations
- Unit Tests: Fast, isolated tests for individual components
- Integration Tests: End-to-end workflow testing
- Fixtures: Use pytest fixtures for common test data
- Mocking: Mock external dependencies (Docker, K8s API, etc.)
# Run with verbose logging
madengine run --tags model --verbose
# Keep containers alive for debugging
madengine run --tags model --keep-alive
# Use Python debugger
python -m pdb -m madengine.cli.app run --tags model- GitHub Issues: https://github.com/ROCm/madengine/issues
- Discussions: https://github.com/ROCm/madengine/discussions
- Documentation: docs/
Be respectful and constructive in all interactions. We aim to foster an inclusive and welcoming community.
Contributors are recognized in:
- CHANGELOG.md: All contributions documented
- GitHub Contributors: Automatic recognition
- Release Notes: Major contributions highlighted
Thank you for contributing to madengine!