Closed
Description
opened on Sep 17, 2019
We've been having a number of discussions over the past couple of months as to what the best solution for where new cosmos-sdk modules should live which may or may not be used specifically within the hub blockchain.
There are several lines of thinking each with different benefits which should be considered.
First off here are a couple of givens:
- There are going to be a number of modules which are primarily maintained by other projects which desire full autonomy over their modules and will, therefore, live in separate repos. As such no matter where this conversation goes we ought to maintain an
awsome-sdk-repo
list which could live in a separate repo OR maybe just as a root-level file within the cosmos sdk (awesome-modules.md
) - There are going to be modules which the sdk team wishes to explicitly maintain mostly core modules required by the cosmos-hub and needed for most projects, it is logical for these to live in their existing location within the sdk-repo to ease the maintenance process as core design of the sdk changes.
Beyond this, there is a possibility to either bring in or not bring in further modules into the cosmos-sdk repo which the core team does not necessarily plan on maintaining in a very active way.
- Modules which are to be brought in should from day 0 have an explicit maintainer(s) while they are in the sdk-repo -> this can be distinguished through adding that maintainer to the github
CODE_OWNERS
file with permissions to modify that specific module (and nothing more necessarily) - In addition, we should probably set up some sort of "soft-contract" which lives as a
.md
file in the module root (x/<modulename>/CONTRACT.md
) which outlines what the expectations are of the maintainer of that module. If the maintainer becomes dormant which presumably breaks this soft contract, than the sdk-team may choose to remove that module from thecosmos-sdk
repository (probably to a different "dead" modules repo just to not lose the code) - An advantage to allowing for "sub-core" modules to live in the sdk is that when large sweeping changes are made to the sdk, it is possible for the core-sdk team to quickly upgrade all the modules even if they are not part of the core-maintenance modules, this should ultimately save energy as compared to having to have many PRs to different repos with "sub-core" modules when sweeping changes are made to the sdk.
- A disadvantage to including new non-core modules into the sdk is it increases the complexity of the code-owners file and potentially reduces some autonomy of the separate teams maintaining those non-core modules. Also there is the potential to drag down the workflow of the core-sdk team, because presumably PRs for non-core modules are now showing up in the sdk and core sdk team members may be inclined to review them on merit that they are in the sdk <- this last point may be seen as an advantage or a disadvantage, maybe we want this greater depth of engagement actually?
Anyways just wanted to summarize some of the thinking around this issue!
CC: @jackzampolin @alexanderbez @fedekunze @ValarDragon @cwgoes @AdityaSripal
Related #4559
Activity