Note: Thanks to Marius Poke for initiating the development of this process.
Summary
This proposal seeks to ratify a framework for making technical changes to the Cosmos Hub. We hope that this will encourage more developers to contribute to the Hub, and ground all feature-oriented governance discussions in software development best practices.
Phases
- Discussion Phase: An idea is proposed and discussed on the Cosmos Hub forum. This proposal can be looser or higher level, but introduces and describes an idea, research direction, or feature. Depending on the outcome of this discussion, authors can evaluate if it is a good idea to put more time into the project.
- Specification Phase: A design document is created providing detailed information on the proposed feature. The outcome should be a Cosmos Hub Improvement Proposal (CHIP) following the document format defined in https://github.com/cosmos/cips. At this point, the specification is a first draft. It will likely be changed during the Spike, Signaling, and Implementation phases.
- Spike Phase: A prototype implementation of the feature is created that enables better estimation of the expected timeline. This implementation is not expected to be fully finished or hardened for production, but is intended to gain additional information about the feasibility and design of the feature.
- Signaling Phase: A signaling proposal is submitted to Cosmos Hub Forum and then Hub governance. This proposal is informed by the information gathered during the Spike phase and is intended to gauge the community’s willingness to deploy the feature on the Hub. If the community does not have enough information to decide based on information gained from the Spike phase, the project should either go back to the earlier phases, or be abandoned.
- Implementation Phase: The specified feature is being implemented and tested using CI practices.
- Integration Phase: The implemented feature is integrated into Gaia. Note that this phase may require additional testing.
- Testnet Phase: A release candidate is cut and used to upgrade the public testnet. This phase may require multiple release candidates and testnet upgrades.
- Voting Phase: A software upgrade proposal is submitted to and voted on by the Hub governance.
- Deployment Phase: The Cosmos Hub is upgraded through a coordinated upgrade.
- Maintenance Phase: The software for this feature is continuously maintained, patched, and upgraded for as long as it is on the Hub. It is critical that this phase be considered carefully and resources allocated to it during the earlier phases.
Notes:
- In phase 2, we reference the CIP format. This is mostly a document format for detailed specification of features. The CIP repo also contains a process for editing the document, which we expect will be followed in parallel with the process defined here, but will mostly take place in phases 2 and 3 of this process.
- Phases 7 to 9 take around 1 month. As a result, the plan is to have semi-quarterly upgrades of Gaia.
- To reduce the impact on the operators of mainnet validators, the mainnet upgrade is scheduled usually on a Wednesday at 15:00 UTC.
- The Voting Phase depends on the Cosmos Hub voting period (currently set to 14 days). To allow for inaccuracies in upgrade height estimations, the software upgrade proposals are usually submitted on a Thursday or Friday, two weeks and a half before the upgrade.
- To reduce the impact on the operators of testnet validators, the testnet upgrade is scheduled usually on a Wednesday. As a result, a release candidate is expected to be available on the previous Friday.