Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: ADR - Move Rosetta to standalone repository #16394

Closed
wants to merge 2 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions docs/architecture/adr-066-rosetta-standalone.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# ADR 606: Rosetta standalone
Copy link
Contributor

@alexanderbez alexanderbez Jun 1, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# ADR 606: Rosetta standalone
# ADR 066: Rosetta Standalone

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks mate!


## Changelog

* May 31, 2023: Initial draft (@Bizk)

## Status

DRAFT

## Abstract

Rosetta implementation runs on top of Cosmos SDK. The tool should rely on stable cosmos-sdk.
releases and not experimental features in order to ensure usability and stability.
Having the tool inside the main cosmos-sdk repo may cause unrequired updates, and make the
tool maintenance more complicated.

## Context

In the current context; Rosetta is inside cosmos-sdk project due to easier maintainability.
This is a problem because as seen in some previous commits, it has suffered unrequired changes
like updates due to a refactor or a new experimental feature. Such changes can cause mismatches
in dependencies, or unexpected behaviour that needs to be addressed down the line.

Since Rosetta is a standalone tool that has been implemented using Cosmos-sdk, it should
rely only on each release, instead of being affected by experimental features or
interfeering over the cosmos-sdk development.

Decoupling Rosetta from the cosmos-sdk project is not only a good practice since it keeps the
scope well defined, but also it ensures better maintainability over time.

## Alternatives

The 2 altnernatives are:
- **Keep Project inside Cosmos-sdk**: This might be easier to handle from a fully immersed position.
maintainer's point of view, who works on different aspects of cosmos-sdk and might want to try
features into Rosetta.
- **Move the project into another repo**: This approach intends to keep the scope well defined,
and to ensure maintainability and stability over time.

## Decision

We will move Rosetta into a standalone repo in order to keep the Scope well defined, a stable
versioning, and to ensure an easier and cleaner maintainability.

We will also add and keep track of quality standards as tests and follow cosmos-sdk releases.

## Consequences

The consequence will be a new repo that contains the rosetta tool implemented by cosmos.

### Positive

- Better scope.
- Easier miantainability and testing.
- Avoids unrequired changes.
- Easier to fork / contribute.

### Negative

- Adds one more repo to keep track of.
- More dificult to test experimental features from cosmos-sdk

## Further Discussions

- [Discussion on migrating Rosetta into a standalone repo](https://github.com/cosmos/cosmos-sdk/issues/16276)
- [Zondax plugin implementation Test](https://github.com/Zondax/cosmos-sdk/pull/653)