Thank you for your interest in contributing to this project!
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Commit your changes using conventional commits
- Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
dstack/contains the core Rust workspace and component-owned assets. Keep a component's build, deployment, test, and API documentation next to that component when it is not useful outside the component.sdk/contains the public language SDKs and simulator.os/contains the backend-neutral guest-OS contract, image assembly, common guest payload, and backend implementations. A file underos/<backend>/must be specific to that backend.docs/contains repository-wide developer, operator, architecture, and security documentation. Do not put a product guide at the repository root.examples/contains supported end-user examples.tools/contains cross-component developer/operator utilities. Put a script here instead of under an OS backend when it also builds or configures the host, deploys services, or operates on multiple components..github/contains GitHub Actions workflows and workflow-only helpers.
Use the narrowest owning directory. Fixture explanations and component
READMEs should stay with their fixtures/components; general guides should be
linked from the root README and live under docs/.
This project uses Conventional Commits. Please format your commit messages as:
<type>: <description>
[optional body]
Examples:
feat: add user authenticationfix: resolve memory leak in worker processdocs: update API documentation
The changelog is automatically generated using git-cliff. To update the changelog:
git-cliff --output CHANGELOG.mdThe changelog follows the Keep a Changelog format and includes GitHub integration for PR links and contributor recognition.
This project uses SPDX headers for license compliance. You should add appropriate SPDX headers to all your source files.
We have a script to automatically add SPDX headers based on git blame data:
python3 tools/add-spdx-attribution.py --file path/to/file.rsBefore submitting your changes, verify SPDX compliance using the REUSE tool:
reuse lint