Contributing to Marin¶
Setup¶
- Clone the repository
- Create and activate a virtual environment
- Install dependencies
- Set up the Git hook that runs
infra/pre-commit.py
git clone https://github.com/marin-community/marin.git
cd marin
uv venv --python 3.11
source .venv/bin/activate
uv sync --package marin --group dev
make setup_pre_commit
Alternatively, you can install all the core dependencies and build marin as a Python
package with make init.
Linting¶
The Git hook configured above runs ./infra/pre-commit.py before each commit so that the repo-standard lint/format checks pass.
You can also run them manually with ./infra/pre-commit.py --all-files --fix or via make lint.
Testing¶
For most changes, start with targeted fast tests:
Use make test when you need the full default test suite.
Opening a pull request¶
Before opening a pull request:
- Run
./infra/pre-commit.py --all-files --fix. - Run
uv run pytest -m 'not slow'for the files or packages you changed. - If your change adds, removes, renames, or rewires docs pages or docs-owned links, run
uv run python infra/check_docs_source_links.py. - If your change is docs-heavy, run
uv run mkdocs build --strict. - If your change adds or rewrites substantial prose, do a final prose-only review using
./.agents/skills/writing-style/SKILL.md. Remove generic significance framing, stock AI-writing templates, and polished filler that does not add information. - Keep the PR description concise and plain text because it becomes the squash-merge commit message. The
.github/PULL_REQUEST_TEMPLATE.mdfile shows the expected style. - Make sure the PR body references an issue with
Fixes #NNNNorPart of #NNNN. - After pushing, verify the relevant GitHub CI checks pass before considering the PR ready for review.
Guidelines¶
Please see the guidelines for principles and practices for Marin.
Data browser¶
The data browser lives in its own repository: marin-community/data_browser. See its README for setup and development instructions.