This article is about:
- Quick start guide for new developers joining the Hatch project
- Essential knowledge and resources for getting productive quickly
- Step-by-step onboarding process from setup to first contribution
This guide will help you get up to speed quickly as a new developer on the Hatch package manager project. Follow this step-by-step process to understand the system and make your first contribution.
Hatch is a package management system designed for MCP server packages, environments, and registry interactions.
- Environments - Isolated spaces for package installations
- Installers - Modular components that handle different dependency types
- Registry - Remote package discovery and retrieval system
- Orchestrator - Coordinates multi-type dependency installation
- Python 3.12+ installed
- Conda or Mamba for Python environment management
- Git for version control
- Code editor
- Terminal/command line access
# Clone the repository
git clone https://github.com/CrackingShells/Hatch.git
cd Hatch
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -e .# Run basic tests to verify setup
python run_tests.py --integration
# Test CLI functionality
hatch --help- Read System Overview - Understand the big picture
- Examine Component Architecture - Detailed component breakdown
hatch/
├── cli/ # Modular CLI package
│ ├── __main__.py # Entry point and routing
│ ├── cli_utils.py # Shared utilities
│ ├── cli_env.py # Environment handlers
│ ├── cli_package.py # Package handlers
│ ├── cli_mcp.py # MCP handlers
│ └── cli_system.py # System handlers
├── environment_manager.py # Environment lifecycle management
├── package_loader.py # Package loading and validation
├── registry_retriever.py # Package downloads and caching
└── installers/ # Installation system
├── dependency_installation_orchestrator.py
├── installer_base.py
└── [specific installers]# Create a test environment
python -m hatch env create test-env
# List environments
python -m hatch env list
# Install a package (if available)
python -m hatch install example-package
# Clean up
python -m hatch env remove test-envHatch uses a three-tier testing approach:
- Development tests (
dev_test_*.py) - Temporary validation during development - Regression tests (
regression_test_*.py) - Permanent tests preventing regressions - Feature tests (
feature_test_*.py) - Permanent tests for new features
# Run all tests
python run_tests.py
# Run specific test types
python run_tests.py --regression
python run_tests.py --feature
# Run tests for specific component
python run_tests.py --pattern "*environment*"- Follow organization-wide Python coding standards
- Write comprehensive docstrings
- Implement proper error handling and logging
- Include progress reporting for long-running operations
Look for issues labeled:
good first issue- Beginner-friendly tasksdocumentation- Documentation improvementstesting- Test additions or improvements
- Add a test case - Find a component with incomplete test coverage
- Improve documentation - Add examples or clarify existing docs
- Fix a small bug - Look for simple bug reports
- Add error handling - Improve error messages or edge case handling
- Create a branch - Use descriptive naming compatible with automated versioning (
feat/,fix/,docs/) - Make your changes - Follow coding standards and include tests
- Test thoroughly - Ensure all tests pass
- Submit a pull request - Follow the contribution guidelines
- Installer Framework - Learn how to add new installers
- Orchestration System - Understand installation orchestration
- Registry Integration - Work with registry systems
- GitHub Issues - Bug reports and feature requests
- GitHub Discussions - Questions and general discussion
- Pull Request Reviews - Learn from code review feedback
- Reflect on the process - What was easy? What was challenging?
- Identify areas of interest - Which parts of the system interest you most?
- Take on larger tasks - Gradually work on more complex features
- Help other new contributors - Share your onboarding experience
- Specialize in an area - Become an expert in specific components
- Review others' contributions - Help with code reviews and testing
- Improve documentation - Keep documentation current and helpful
- Mentor new developers - Help onboard future contributors
Welcome to the Hatch development community! We're excited to have you contribute to making package management better for the CrackingShells ecosystem.