Description
Summary
It has been proposed that we split the ibc-rs monorepo into two repos - one for the proto & module crates and the other for the relayer crate (and its associated crates).
Additionally, the relayer code must not depend on the ibc
crate to have clear boundaries/separation and allow the modules to evolve independently.
Problem Statement
The monorepo approach is restrictive and becoming difficult to maintain. (See #1437 (comment))
Moreover, having the relayer crate depend on the ibc crate makes it difficult to modify one without touching the other, and have resulted in code bloat and unclear boundaries - for e.g. the modules code contains relayer specific code.
Proposal
Using the ideas described in #2541 and #1437, the repo hosting the relayer crates (the relayer
repo) would look like so ->
<relayer>
├── CHANGELOG.md
├── CONTRIBUTING.md
├── Cargo.lock
├── Cargo.toml
│
├── crates
│ ├── ibc-relayer
│ ├── ibc-relayer-cli
│ ├── ibc-relayer-rest
│ ├── ibc-telemetry
│ └── ibc-chain-registry
│
├── etc...
And the modules
repo would look like so ->
<modules>
├── CHANGELOG.md
├── CONTRIBUTING.md
├── Cargo.toml
│
├── crates
│ ├── ibc
│ └── proto
│ ├── ibc-proto
│ └── ibc-proto-compiler
│
├── etc...
Acceptance Criteria
The ibc-rs repo is split into two repos as proposed above, ideally preserving history.
TODOs
- Rename the default branches of both repos from
master
tomain
- Split
gm
out of the repository
For Admin Use
- Not duplicate issue
- Appropriate labels applied
- Appropriate milestone (priority) applied
- Appropriate contributors tagged
- Contributor assigned/self-assigned