Tendermint’s Proposal for a New Versioning of Cosmos SDK

Tendermint
Tendermint Blog
Published in
4 min readSep 16, 2021

This article is intended to provide a very high-level overview of Tendermint’s proposal for the new versioning of Cosmos SDK. If you would like further information, please follow the extensive developer documentation on Github.

The Cosmos SDK

As the world’s most popular blockchain framework, more than $100 billion in digital assets are managed by public blockchains built with the Cosmos SDK. These include some of the largest names in the blockchain ecosystem from Binance Chain and Crypto.org chain to THORChain and Terra.

As a highly robust, respectable, and customizable protocol, Cosmos SDK has grown in popularity allowing developers to fast-track their projects, skip past weeks of writing additional code, and customize their blockchains for specific user requirements — among many other advantages.

However, as Tendermint continues to iterate and improve on our latest cutting-edge offering Emeris, a cross-chain portal for all crypto apps currently in Beta, the team has identified the need for a new way forward when it comes to Cosmos SDK versioning.

The Problem

Despite years of being battle-hardened, tested, and adopted by multiple major blockchain entities, Cosmos SDK versioning still reflects that of a product in beta, where each version begins with “0.” It’s high time this versioning strategy is upgraded to reflect the true value and status that Cosmos SDK has achieved over the years. In addition, the current system is actually hampering progress for some developers.

For example, during the development iteration of a vital component for Emeris, the team found a stumbling block due to the way the Cosmos SDK codebase is written. In order to meet the dynamic functionalities of a cross-chain portal, the component being iterated must be able to depend on multiple Cosmos SDK versions.

However, the current structure of the Cosmos SDK prevents development that depends on more than one version due to the interactions between Go mod and the Cosmos SDK versioning scheme.

Cosmos SDK’s custom versioning scheme has worked well so far and made perfect sense to the many development teams working on Cosmos SDK. However, now that the Cosmos SDK is being integrated with different apps and protocols, its versioning is a problem.

Developers who want to write software that works with multiple versions of the SDK, for example, will find themselves blocked because of its custom versioning scheme. Since Go mod also enforces strict requirements on each package, different Cosmos SDK versions cannot be imported at the same time by the same package.

This restriction hampers rapid development and causes increased code maintenance to upgrade to each new Cosmos SDK version which, needless to say, leads to frustration, delays, and ultimately, a poor user experience.

New Versioning Proposal

Tendermint, therefore, proposes to move Cosmos SDK versioning to a semver-compliant (Semantic Versioning compliant) scheme in order to enable the rapid iteration of Emeris and other such applications and protocols. Rather than start the version numbering from 1.0, the proposed versioning scheme can start from the latest minor release in the current versioning scheme. This means that ‘v0.43.0’ becomes ‘v43.0.0’, and ‘v0.42.8’ becomes ‘v42.8.0’.

This proposed versioning scheme is in complete agreement with Go module versioning and will guarantee compatibility with the Go ecosystem and developers.

Being semver-compliant nowadays means being a good open-source community citizen, and since the growth of the Cosmos SDK is directly tied to how much the community around it is engaged with the development process, moving to a versioning scheme accepted industry-wide will communicate clearly that the Cosmos SDK is ready for prime-time, just like the Hub and IBC are.

Clear software release strategies have been key for the success and stability of the Cosmos SDK over the years. We believe it’s time to stabilize the Cosmos SDK interface on the versioning side of things, too. For more information and details on this proposal please visit:
https://github.com/cosmos/cosmos-sdk/discussions/10162

Stay in touch

For press inquiries, contact press@tendermint.com

--

--

Tendermint
Tendermint Blog

Tendermint Inc focuses on shipping software to build the Interchain. Here’s where we publish news about our partners and initiatives.