Skip to content

Split parts of the system out as independent Go modules #394

@thanethomson

Description

@thanethomson

At present, the CometBFT repo is quite monolithic and the Go API surface area is pretty massive. If anyone wants to, for example, import our ABCI types, or crypto or logging interfaces, they need to add an import for our entire codebase. The larger this surface area, the more restricted we are in terms of being able to roll out changes to various parts of the system for fear of breaking others' code.

We also have test code that forms part of our core codebase, whose dependencies end up being tracked in the core go.mod, which seems unnecessary.

Note that this doesn't necessarily mean creating different repositories for each of the modules. One could simply just set these dependencies up to have their own Go modules within our current repository, possibly leveraging Go workspaces.

We can, of course, only do this for modules where we won't be creating circular dependencies, or where we can safely break those cycles. This list will be updated over time through consultation with users.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P:consensus-engine-devsPriority: Better support consensus engine developersP:tech-debtPriority: Technical debt that needs to be paid off to enable us to move faster, reliablyappxApplication developer experience-related

    Type

    No type

    Projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions