Welcome contributors
Contributions tocontainer are welcomed and encouraged. Whether you’re fixing bugs, adding features, improving documentation, or helping with testing, your contributions help make container better for everyone.
Main contributing guide
For comprehensive contribution guidelines, please see the main contributing guide in the Containerization project. This guide covers:- Code of conduct
- How to submit issues
- Pull request process
- Coding standards
- License information
- Community guidelines
The
container project shares contribution guidelines with the Containerization project to maintain consistency across the ecosystem.Getting started
Before contributing, make sure you:Set up your development environment
Follow the building from source guide to set up your development environment with all required dependencies.
Understand the architecture
Read the architecture documentation to understand how
container works and how components interact.Run tests
Verify your environment by running the test suite to ensure everything is working correctly.
Areas for contribution
With the initial release ofcontainer, many common containerization features remain to be implemented. Consider contributing in these areas:
Feature development
- New container runtime features
- Enhanced networking capabilities
- Additional image management features
- Performance optimizations
- macOS integration improvements
Bug fixes
- Security vulnerabilities
- Stability issues
- Performance problems
- Edge case handling
Documentation
- Improving existing documentation
- Adding examples and tutorials
- Clarifying technical explanations
- Documenting undocumented features
Testing
- Writing new tests
- Improving test coverage
- Adding integration tests
- Performance benchmarking
Consider contributing new features and bug fixes to both
container and the Containerization projects.Development workflow
A typical contribution workflow:Commit with proper formatting
The pre-commit hook will ensure proper formatting and license headers:
Code quality standards
Formatting
The pre-commit hook automatically checks:- Code formatting
- License headers
- Basic style issues
Testing requirements
All contributions should:- Include appropriate tests
- Pass existing tests
- Maintain or improve code coverage
- Pass integration tests
Documentation requirements
Code changes should include:- Updated API documentation
- Comments for complex logic
- Updates to relevant documentation pages
- Examples where appropriate
Building with local dependencies
If your contribution requires changes to related projects:Containerization changes
See the building guide for instructions on linking to a local Containerization repository.Builder changes
See the building guide for instructions on testing builder changes.Debugging your changes
Use the debugging guide to:- Attach debuggers to XPC helpers
- Debug service initialization
- Troubleshoot integration issues
- Analyze runtime behavior
The
CONTAINER_DEBUG_LAUNCHD_LABEL environment variable is invaluable for debugging service-level changes.Project status
The container project is currently under active development:- Stability is only guaranteed within patch versions (e.g., between 0.1.1 and 0.1.2)
- Minor version releases may include breaking changes until 1.0.0
- The API and architecture may evolve significantly
Keep this in mind when planning contributions, especially those that involve API changes or architectural modifications.
Getting help
If you need help with your contribution:- Review the architecture documentation
- Check existing issues and pull requests
- Refer to the main contributing guide
- Ask questions in your pull request
Related projects
Contributions may involve these related projects:- Containerization - Core container runtime package
- container-builder-shim - Image building support