Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consider splitting modules and other libraries into a pure library workspace repository #1579

Closed
5 tasks
mzabaluev opened this issue Nov 18, 2021 · 1 comment · Fixed by #2667
Closed
5 tasks
Labels
A: low-priority Admin: low priority / non urgent issue, expect longer wait time for PR reviews
Milestone

Comments

@mzabaluev
Copy link
Contributor

mzabaluev commented Nov 18, 2021

Crate

ibc
ibc-proto
ibc-relayer

Depending on whether it is meant to be customer-facing:

ibc-telemetry

Summary

It's considered harmful to have dependencies of a customer-facing library locked by Cargo.lock in version control.

Problem Definition

The workspace of the ibc-rs repository has both library crates that, in principle, can have external consumers, as well as the hermes end executable.

it may be a maintenance hazard to have the libraries' dependencies locked by the workspace Cargo.lock in the working trees of the developers working on the libraries themselves. This is the reason why it's not recommended to check in Cargo.lock for pure library crate projects.

Proposal

Consider splitting out the library crates into their own workspace repository.

The dependencies in hermes and other crates can be converted to git dependencies, or (more problematically in the long run) the workspace path dependencies can be rewired via a git submodule.

This does not have to include all library crates in the workspace. As long as there are no outside users of the ibc-relayer library or the telemetry add-on crate, these could stay in the workspace with Hermes.

Acceptance Criteria

A developer of ibc modules, ibc-proto, or other libraries in the project does not have to grapple with modifications to a version-controlled Cargo.lock in order to reach a particular dependency configuration (e.g. the result of cargo update) for the library build, tests, etc.


For Admin Use

  • Not duplicate issue
  • Appropriate labels applied
  • Appropriate milestone (priority) applied
  • Appropriate contributors tagged
  • Contributor assigned/self-assigned
@mzabaluev mzabaluev added modules A: low-priority Admin: low priority / non urgent issue, expect longer wait time for PR reviews labels Nov 18, 2021
@adizere adizere added this to the v2 milestone May 11, 2022
@mzabaluev
Copy link
Contributor Author

Updated the description to differentiate between ibc modules and Hermes' internal libraries.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A: low-priority Admin: low priority / non urgent issue, expect longer wait time for PR reviews
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants