Thank you for your interest in contributing to ML Tool Solutions. This document describes the recommended development workflow, coding standards, and how to use the repository's automated tooling, particularly the pre-commit hooks that enforce SPDX/REUSE compliance, formatting checks, and other quality gates.
We welcome contributions through GitHub Pull Requests. Please read this guide before submitting changes.
-
Fork the repository.
-
Create a feature branch:
git checkout -b my-feature -
Make changes.
-
Ensure all automated checks (pre-commit hooks) pass locally.
-
Submit a pull request on GitHub.
All PRs must have:
- A clear description of the change.
- Passing CI checks.
- SPDX/REUSE-compliant licensing metadata (handled automatically by the hooks).
- Clean commits or a tidy commit history.
This repository uses pre-commit to automatically enforce:
- SPDX/REUSE-compliant license and copyright notices
- Correct SPDX headers and/or sidecar
.licensefiles reuse-lintchecks on modified files- Trailing whitespace cleanup
These hooks ensure all contributions meet licensing and formatting requirements before changes are committed.
You only need to do this once per machine:
pip install pre-commit
pre-commit install
This installs the git hooks so they run automatically before each commit.
Verify installation:
pre-commit --version
-
Modify files.
-
Stage your changes:
git add . -
Commit:
git commit -m "..." -
The hooks run automatically. If they fail:
-
Inspect the changed files (
git diff) -
Apply fixes
-
Stage again
-
Re-run:
pre-commit run --all-files
-
-
Push once everything passes:
git push
This project follows the REUSE specification.
Every file must contain:
- An SPDX license identifier
SPDX-FileCopyrightTextstatements
For formats where inline headers are not appropriate (e.g., binaries, JSON), use sidecar .license files. The pre-commit hooks manage most of this automatically.
- Keep scripts POSIX-compatible unless necessary.
- Use SPDX headers based on examples already in the repository.
If you have questions, comments, and/or suggestions? Please raise an issue.