|
| 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