Cosmos-sdk: Establish clear SemVer guidelines

Created on 5 Apr 2018  路  4Comments  路  Source: cosmos/cosmos-sdk

We've been using SemVer but haven't well established what exactly is covered by it.

Up to now, everything has effectively been covered by it, including all examples, extensions, makefile, etc.

In an ideal world, I would think, only the core SDK components (ie. baseapp, types, store) and maybe the core extensions (auth, bank) would be covered by semver.

That said, since our main app/s are contained in here, they need to be covered by SemVer as well.

So I guess for now, everything should be covered, but I'm not sure about two things:

  • should the examples be covered? ie. if we break democoin, is that a breaking change to the SDK ?
  • should the makefile be covered ? ie. if we change what make install does, is that a breaking change ?
Legacy API UX

Most helpful comment

I think covering democoin is not that important since we expect to move it out of this repository eventually - when we move it out, maybe we can cover it in the other repository's versioning - but covering the Makefile would be prudent so we don't accidentally break any automatic downstream infrastructure depending on particular binaries (probably gaiad) being installed with make install.

All 4 comments

I think covering democoin is not that important since we expect to move it out of this repository eventually - when we move it out, maybe we can cover it in the other repository's versioning - but covering the Makefile would be prudent so we don't accidentally break any automatic downstream infrastructure depending on particular binaries (probably gaiad) being installed with make install.

For makefiles I think we need to be precise about what we mean. I think what would be ideal is we have a make install_<x> for each thing we have to install, and then a make install_all, so we could reasonably add a new thing to make install_all or even remove a dependency without breaking semver. If downstream things would be sensitive to such a change, they can use the individual make install_<x> commands, and we just deprecate but not remove install_<x> commands we don't use. I don't think we need similar granularity for make get_vendor_deps.

Per the versioning ADR, are we going with 2 versions here, "App Version" and "API Version", and an app version change would imply an API version change, but not vice-versa?

I'm going to close this issue as there are many discussions happening around versioning and none of them are happening on this issue.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

adrianbrink picture adrianbrink  路  3Comments

jackzampolin picture jackzampolin  路  3Comments

kevlubkcm picture kevlubkcm  路  3Comments

faboweb picture faboweb  路  3Comments

fedekunze picture fedekunze  路  3Comments