Skip to content

Instantly share code, notes, and snippets.

@ryan-williams
Last active November 3, 2025 20:54
Show Gist options
  • Save ryan-williams/b15a1bac450670551014392f2d943746 to your computer and use it in GitHub Desktop.
Save ryan-williams/b15a1bac450670551014392f2d943746 to your computer and use it in GitHub Desktop.
marin-community/marin#1690 - 2-way sync via github-pr.py (ryan-williams/git-helpers)

marin-community/marin#1690 "Workspace" step 1: experiments β†’ marin

First step in the "uv workspace migration plan" (#1773):

  • Initialize a uv workspace
  • Move the marin package into lib/marin/
  • experiments/ remain in "root" target, which depends on marin
  • Next step: #1723 (Levanter integration)
flowchart LR
    experiments[experiments]
    marin[lib/marin]
    data_browser

    experiments --> marin
Loading

(data_browser stays independent, not a workspace member)

Changes

  • Create workspace root pyproject.toml
  • Move src/ β†’ lib/marin/src/
  • Update path references in workflows, Makefile, mkdocs config
  • Update documentation GitHub URLs to use MARIN_DOC_BRANCH env var (defaults to main)

Structure After

marin/
  pyproject.toml        # Workspace root
  experiments/          # Stays at root, imports from lib/marin
  lib/
    marin/              # Workspace member
      pyproject.toml
      src/marin/

Migration Scripts

See workspace-migration scripts for:

marin/lib/marin/src/marin is a bit of a mouthful - I suppose there's not an easy way to avoid this? Does marin and data_browser have to be in lib or could they be at the top-level?

marin/lib/marin/src/marin is a bit of a mouthful

Agreed, though from the repo root it's "just" lib/marin/src/marin.

I suppose there's not an easy way to avoid this? Does marin and data_browser have to be in lib or could they be at the top-level?

  • marin/src/marin is possible (again, relative to repo root). We could have all member root dirs be top-level in repo (instead of under lib/)
  • Per latest on #1773, I'm thinking leaving data_browser out of "workspace" machinery (i.e. not a "member") is the better approach.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment