change: Rearrange crates by feature #571
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This is a starting point for a discussion on how to better structure our code, keeping in mind that:
This PR groups the crates mostly by-feature (where "feature" in some cases means whatever grouping I came up with really), with some supporting crates and executables living in separate folders. The idea is that we want to better control cross-feature dependencies.
The grouping is as follows:
utils
- self-explanatorysubstrate-extensions
- all the crates that we copied and modified from Susbtratesidechain
- a "core" sidechain "feature": the domain crate, sidechain-pallet and the mc-hash functionality. I imagine this being the base feature that makes a Substrate chain a Cardano "sidechain", by referencing a genesis UTXO, dividing up slots into sidechain epochs and referencing MC blocks in headercommittee-selection
- selection, authority-selection-inherents and session-validator-management crates. This is the feature that builds on the "sidechain" feature by tying committee selection to data observable on Cardanoblock-production-log
andblock-participation
- I'm tempted to group those into one "feature" that builds on committee-selection by tracking the block productionaddress-associations
- this builds on "sidechain" feature, by introducing an ability to tie your identity on Cardano to that on a Partner Chainnative-token-management
- self-explanatorysmart-contracts
- plutus-data, offchain and commandsmainchain-follower
- no changes here, it uses types from smart-contracts to provide data to all the features above that use observabilitycli
- all CLIs that go directly into the node, including the wizardThis is following this attempted division of our system into modular "features":
Checklist
changelog.md
for affected crate