Skip to content

Commit fa87101

Browse files
committed
Added migration plan
1 parent 0a1007f commit fa87101

1 file changed

Lines changed: 88 additions & 0 deletions

File tree

MIGRATION_PLAN.md

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
# 🔄 Migration Notice: Repository Restructuring for `rompy`
2+
3+
The `rompy` project is being restructured to improve clarity, modularity, and long-term maintainability.
4+
5+
We are splitting the monolithic repository into four smaller, purpose-driven repositories:
6+
7+
---
8+
9+
## 📦 New Repository Layout
10+
11+
| Repository | Purpose |
12+
|-----------|---------|
13+
| [`rompy`](https://github.com/rom-py/rompy) | 🧠 Core framework (remains at original location) |
14+
| [`rompy-swan`](https://github.com/rom-py/rompy-swan) | 🌊 SWAN model components |
15+
| [`rompy-schism`](https://github.com/rom-py/rompy-schism) | 🌊 SCHISM model components |
16+
| [`rompy-notebooks`](https://github.com/rom-py/rompy-notebooks) | 📓 Examples, tutorials, workflows |
17+
18+
---
19+
20+
## 🗂️ Migration Plan
21+
22+
1. **Rename the current `rompy` repository**
23+
- The existing monolithic repo will be renamed to `rompy-legacy`.
24+
- All code, history, issues, and PRs will remain in `rompy-legacy`.
25+
26+
2. **Create a new, slimmed-down `rompy` repo**
27+
- A new repository named `rompy` will be created at the original URL.
28+
- It will contain only the clean, minimal core library.
29+
30+
3. **Spin out model integrations and notebooks**
31+
- SWAN-related code → `rompy-swan`
32+
- SCHISM-related code → `rompy-schism`
33+
- Tutorials/examples → `rompy-notebooks`
34+
35+
4. **Cross-link all repos**
36+
- Each repo will contain a README banner pointing to the others.
37+
38+
---
39+
40+
## 🔁 GitHub Redirect Behavior
41+
42+
GitHub automatically sets up redirects when a repository is renamed:
43+
44+
- **Existing clones of `rompy` will transparently point to `rompy-legacy`.**
45+
- **Pulls and pushes will be redirected to `rompy-legacy` — safely.**
46+
- **No one will accidentally overwrite the new `rompy` repo.**
47+
- Issues, PRs, commit hashes, and tags remain valid under the new name.
48+
49+
> **You do *not* need to change your local git remotes.**
50+
> Your clone of `rompy` will now be pointing to `rompy-legacy` automatically.
51+
52+
> ⚠️ **Do not update your `origin` to the new `rompy` repo unless you explicitly want to work on the new core.**
53+
> Otherwise, you may push unrelated history to the new slimmed-down repo.
54+
55+
---
56+
57+
## 🧠 Why This Approach?
58+
59+
### ✅ Safe for existing users
60+
- Users with existing checkouts keep working on the full-featured legacy repo.
61+
- They don’t need to change anything.
62+
- Pushes/pulls still work — but go to `rompy-legacy`.
63+
64+
### 🧭 Clear separation of concerns
65+
- `rompy` → clean, minimal, core logic
66+
- `rompy-swan` → SWAN model components
67+
- `rompy-schism` → SCHISM model components
68+
- `rompy-notebooks` → examples and workflows
69+
70+
### 🧬 Preserves history
71+
- Full development history is retained in `rompy-legacy`.
72+
- New repos retain relevant history using `git filter-repo`.
73+
74+
### 🛠 Easier maintenance
75+
- Each repository can evolve independently.
76+
- CI, releases, and issues are more focused.
77+
- Contributors can work on what matters to them without navigating an oversized codebase.
78+
79+
---
80+
81+
## 🧑‍💻 For Contributors
82+
83+
If you want to:
84+
- 🧾 **Continue working with the full legacy code** → keep using your current clone. It now points to `rompy-legacy`.
85+
- 🧠 **Start working on the new slimmed-down core** → clone the new `rompy`:
86+
```bash
87+
git clone https://github.com/rom-py/rompy.git
88+

0 commit comments

Comments
 (0)