Skip to content

Consolidate 5 tendermint repos into 1 #1309

@ebuchman

Description

@ebuchman

Heres a list of Pros and Cons of having Tendermint split into 5 repos (tendermint, abci, go-wire, go-crypto, tmlibs):

PROS

  1. shorter import paths
  2. gives the sense that these are all standalone independent projects that evolve independently (this is important for go-amino and abci, but not really for go-crypto or tmlibs)
  3. develop branches can accumulate breaking changes without needing to update all dependents for them immediately

CONS

  1. Extra overhead of updating dependency manager or copying files into vendor when developing locally
  2. Extra overhead of updating dependency manager across repos in sequence when merging code to develop
  3. Issues/PRs in dependency repos are often forgotten about or poorly tracked
  4. Changes in dependencies can have effects that are not well tested by the local unit tests and are only discovered to be broken once they're used in Tendermint itself
  5. Extra overhead of release management on each repo (changelog, versions, release tags)
  6. Development in an independent repo is less likely to consider how changes effect dependents leading to weaker backward compatibility

Seems to me a no brainer to merge them all into one. The only serious argument is "accumulating breaking changes on develop". But really, we should:

  1. make fewer breaking changes, and pay more attention to backwards compatibility to ease upgrades or at least allow them to be done iteratively
  2. If large breaking changes are needed, we can always just duplicate a package within the monorepo, make the changes there, and port things over as we see fit.

If anyone thinks I'm missing anything, please add!

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions