How to contribute
June 15, 2026 · View on GitHub
You can:
- Add or improve the support of an application (Check the TODO and TOFIX tasks and pick one)
- Improve the Mackup codebase
- You can triage issues which may include reproducing bug reports or asking for
vital information, such as version numbers or reproduction instructions. If
you would like to start triaging issues, one easy way to get started is to
subscribe to mackup on CodeTriage.
Development Setup
Mackup uses uv for fast, reliable Python package management. Here's how to get started:
Prerequisites
- Python 3.10 or higher
- uv installed
Install uv if you haven't already:
# On macOS
brew install uv
# On Linux
# Via pipx (recommended)
pipx install uv
# Or via Homebrew on Linux
brew install uv
# On Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
Alternatively, see the official uv installation guide for more options.
Setting Up Your Development Environment
- Clone the repository:
git clone https://github.com/lra/mackup.git
cd mackup
- Sync dependencies (creates a virtual environment automatically):
uv sync --dev
This will:
- Create a
.venvdirectory with a virtual environment - Install all project dependencies
- Install development dependencies (pytest, mypy, etc.)
Running Tests and Checks
Use the provided Make targets for quick development workflow:
# Run all checks (recommended before committing)
make check
# Run tests only
make test
# Run type checking
make mypy
# Run code linting
make ruff
Or use uv run directly:
# Run tests
uv run pytest
# Run tests with verbose output
uv run pytest -v
# Run type checking
uv run mypy mackup/
# Run linting
uv run ruff check .
Code Quality Standards
All pull requests must pass:
- ✅ Tests: All pytest tests must pass
- ✅ Type checking: No mypy errors
- ✅ Linting: Code must pass ruff checks
- ✅ Formatting: Follow existing code style
Run make check before submitting your PR to ensure everything passes.
Contributing Guidelines
To speed up Pull Request (PR) approval and merger into Mackup, please follow these guidelines:
- Keep one application supported per PR
- Add the application to the list of supported applications in README.md
- Sync configurations should follow the following principles:
- Syncing should not break the application, and PRs should be tested
- Syncing should not break any syncing functionality internal to the application
- The configuration should sync the minimal set of data, so that syncing happens quickly. Leave large app data out of the sync configuration.
- Do not sync any file or folder that represents some state, like session data, cache, any file specific to the local workstation.
- Do not sync sensitive information, like clear passwords or private keys
Thank you for your contribution!