Consolidate repository: remove submodules and make lamassu-next standalone #7

Open
opened 2026-06-13 21:58:17 +00:00 by padreug · 0 comments
Owner

Migrated from aiolabs/lamassu-next#7 — opened by @padreug on 2026-01-25.\n\n## Overview

Currently lamassu-next uses git submodules for external dependencies (Lightning.Pub, wallet2/shock-wallet, etc.). This creates friction for development and deployment. We should consolidate everything into a single repository.

Current Structure

lamassu-next/
├── Lightning.Pub/          # submodule → shocknet/Lightning.Pub
├── wallet2/                # submodule → shocknet/wallet2
├── clink/                  # submodule or local
├── lamassu-server/         # submodule → lamassu/lamassu-server
├── lamassu-machine/        # submodule → lamassu/lamassu-machine
└── packages/
    └── nostr-client/       # our integration code

Problems with Submodules

  1. Complex workflow: Must remember to git submodule update --init --recursive
  2. Version drift: Submodule pins can get out of sync with actual development
  3. PR friction: Changes spanning multiple repos require coordinated PRs
  4. CI complexity: Need to handle submodule checkout in pipelines
  5. Contributor confusion: New contributors often miss submodule init step

Proposed Structure

lamassu-next/
├── packages/
│   ├── nostr-client/       # ATM ↔ Lightning.Pub integration
│   ├── lightning-pub/      # Our fork (imported, not submodule)
│   ├── shock-wallet/       # Our fork (imported, not submodule)
│   ├── clink-sdk/          # CLINK protocol library
│   ├── lamassu-server/     # Our fork
│   └── lamassu-machine/    # Our fork
├── apps/
│   └── clink-demo/         # Demo/testing app
└── docs/

Migration Steps

  1. Audit current submodules - List all submodules and their current commit pins
  2. Import with history - Use git subtree or similar to preserve commit history
  3. Update imports/paths - Fix any cross-package references
  4. Set up monorepo tooling - Ensure pnpm workspaces / turborepo work across all packages
  5. Update CI/CD - Simplify pipelines (no more submodule checkout)
  6. Document upstream sync process - How to pull updates from upstream forks

Upstream Relationship

After consolidation, we maintain upstream tracking via:

  • Forgejo forks (shock-wallet, lightning-pub) with upstream remote pointing to shocknet GitHub
  • Periodic sync: git fetch upstream && git merge upstream/main in the fork repos
  • Cherry-pick or merge relevant upstream changes into lamassu-next

Benefits

  • Single clone: git clone just works
  • Atomic commits: Changes across packages in one commit
  • Simpler CI: No submodule dance
  • Better DX: IDE navigation works across all code
  • Cleaner PRs: All related changes in one PR

Priority

P3 - Quality of life improvement, not blocking current development

> _Migrated from [aiolabs/lamassu-next#7](https://git.atitlan.io/aiolabs/lamassu-next/issues/7) — opened by @padreug on 2026-01-25._\n\n## Overview Currently lamassu-next uses git submodules for external dependencies (Lightning.Pub, wallet2/shock-wallet, etc.). This creates friction for development and deployment. We should consolidate everything into a single repository. ## Current Structure ``` lamassu-next/ ├── Lightning.Pub/ # submodule → shocknet/Lightning.Pub ├── wallet2/ # submodule → shocknet/wallet2 ├── clink/ # submodule or local ├── lamassu-server/ # submodule → lamassu/lamassu-server ├── lamassu-machine/ # submodule → lamassu/lamassu-machine └── packages/ └── nostr-client/ # our integration code ``` ## Problems with Submodules 1. **Complex workflow**: Must remember to `git submodule update --init --recursive` 2. **Version drift**: Submodule pins can get out of sync with actual development 3. **PR friction**: Changes spanning multiple repos require coordinated PRs 4. **CI complexity**: Need to handle submodule checkout in pipelines 5. **Contributor confusion**: New contributors often miss submodule init step ## Proposed Structure ``` lamassu-next/ ├── packages/ │ ├── nostr-client/ # ATM ↔ Lightning.Pub integration │ ├── lightning-pub/ # Our fork (imported, not submodule) │ ├── shock-wallet/ # Our fork (imported, not submodule) │ ├── clink-sdk/ # CLINK protocol library │ ├── lamassu-server/ # Our fork │ └── lamassu-machine/ # Our fork ├── apps/ │ └── clink-demo/ # Demo/testing app └── docs/ ``` ## Migration Steps 1. **Audit current submodules** - List all submodules and their current commit pins 2. **Import with history** - Use `git subtree` or similar to preserve commit history 3. **Update imports/paths** - Fix any cross-package references 4. **Set up monorepo tooling** - Ensure pnpm workspaces / turborepo work across all packages 5. **Update CI/CD** - Simplify pipelines (no more submodule checkout) 6. **Document upstream sync process** - How to pull updates from upstream forks ## Upstream Relationship After consolidation, we maintain upstream tracking via: - Forgejo forks (shock-wallet, lightning-pub) with `upstream` remote pointing to shocknet GitHub - Periodic sync: `git fetch upstream && git merge upstream/main` in the fork repos - Cherry-pick or merge relevant upstream changes into lamassu-next ## Benefits - **Single clone**: `git clone` just works - **Atomic commits**: Changes across packages in one commit - **Simpler CI**: No submodule dance - **Better DX**: IDE navigation works across all code - **Cleaner PRs**: All related changes in one PR ## Priority P3 - Quality of life improvement, not blocking current development
padreug changed title from [reserved] migration number alignment to Consolidate repository: remove submodules and make lamassu-next standalone 2026-06-14 06:54:40 +00:00
padreug reopened this issue 2026-06-14 06:54:40 +00:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
aiolabs/bitspire#7
No description provided.