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

Cleaner directory structure #697

Open
8 tasks
ebuchman opened this issue Nov 21, 2020 · 1 comment
Open
8 tasks

Cleaner directory structure #697

ebuchman opened this issue Nov 21, 2020 · 1 comment
Labels
structure High level repo-wide structural concerns

Comments

@ebuchman
Copy link
Member

This is a follow/update to #7. Splitting it into two sections: high level repo structure, and re-organization of tendermint crate

Repo structure:

The tendermint crate is still a jumble of top level modules with minimal organizational structure. Some tasks and questions we should figure out:

  • Should we put the integration tests in a separate crate? Then, we could get rid of the dev-dependency to rpc inside of tendermint-rs (Cleaner directory structure #7 (comment))
  • Should crypto and config be factored out of the tendermint crate into their own crates? config doesn't have any unique dependencies and crypto will always be needed by the tendermint crate. I guess the question is if there's a use case for importing crypto without importing the rest of the tendermint crate?
  • lite module should be removed now that light-client crate is in place. Is there anything left to take from it? Can it just be deleted outright? Alternatively, if the light-client is type generalized (per light-client: Type Generalization #416 ), then tendermint crate may still need a light module with its implementation of the light-client types?
  • should p2p specific types (channel, moniker, net, node) be moved to the new p2p crate? Or at least into their own high level p2p module in the tendermint crate?
  • What else might bring clarity to where/how certain types and functionality are used?
@tony-iqlusion
Copy link
Collaborator

Some quick notes:

  • crypto and config are definitely great candidates for a tendermint-crypto/tendermint-config crates. crypto would be useful independently anywhere you want support for key formats and cryptography ops. I'll note we're presently using the config crate with Sagan (to parse various validator settings from the config, as Sagan runs as a sidecar), but I imagine it'll eventually be useful for a Rust full node as well.
  • Moving the modules you suggested to the tendermint-p2p crate might make sense. Pretty much everything we've written so far (TMKMS, Sagan, Delphi) relies on the net types in some form, but TMKMS is the only thing using p2p at the moment.

@ebuchman ebuchman added the structure High level repo-wide structural concerns label Nov 21, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
structure High level repo-wide structural concerns
Projects
None yet
Development

No branches or pull requests

2 participants