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

feedback needed: how are you using gnoland genesis ...? #2824

Closed
moul opened this issue Sep 21, 2024 · 10 comments · Fixed by #3041
Closed

feedback needed: how are you using gnoland genesis ...? #2824

moul opened this issue Sep 21, 2024 · 10 comments · Fixed by #3041
Assignees
Labels
❓ question Questions about Gno

Comments

@moul
Copy link
Member

moul commented Sep 21, 2024

I'm considering whether these commands should be included in the gnoland binary, placed elsewhere, or if they are necessary at all.

I would appreciate feedback on how people are currently using these commands. If no one is using them yet, please explain how you envision using them in the future.

Additionally, if you're already using them and have suggestions for improvement, please share your thoughts.

@moul moul added the ❓ question Questions about Gno label Sep 21, 2024
@thehowl
Copy link
Member

thehowl commented Oct 3, 2024

Not much; but I personally haven't operated a node. I did find the secrets and config commands useful in my debugging and suage though.

I see a point in having commands to manipulate genesis files as compared to using genesis_txs and genesis_balances, which then get combined into a genesis file. These are not removed yet, but they should be. I wonder whether there should be some shared functionality, like the one that gnoland start --lazy uses, that can be shared; while keeping most of the genesis command in a contribs/ binary, like gnogenesis.

I doubt many, even among node operators, will need to use the genesis commands. Even #2841 is a glorified wget + sha256sum.

@zivkovicmilos wdyt?

@zivkovicmilos
Copy link
Member

@moul

I'll give my feedback here since I mostly designed the current genesis command suite

I'm starting from the premise that a node operator does not need to be aware of different tools (binaries) in order to boostrap their blockchain deployment. It's pretty standard across the ecosystem to bundle chain building tools into the blockchain client binary, and release them with the binary (there are no 2 release streams for the client and helpers like these, but a single one, that always works).

The historical reason why it's bundled is because it makes the lives of our DevOps friends x10 easier, when they need to fetch a single binary and orchestrate everything from it -- this binary is not used for a single step, but across workflows that can be as complex or as easy as you like.

I do agree @moul that the CLI suite we have is a bit bloated, even though it's extremely useful (if we're looking for a CLI suite to tackle with the most impact on sanity, please see gnokey). I personally am very happy with the chain orchestration flow we have now in comparison with the past, and in comparison to what's standard in Cosmos today. There are a few legacy patches here and there that I'd love to remove (the files Morgan is mentioning are prime examples), we have some issues already opened.

If the idea is to make the gnoland binary slim, I think there are better ways to tackle it than leaving a single start command (the insane parts of the codebase that gets compiled, but never used).

Removing genesis, will trigger a question if secrets and config also require their own binaries (so we'd need to install 4! tools to orchestrate and manage a chain. That would be a fun tutorial to read and follow 😃)

@thehowl

I doubt many, even among node operators, will need to use the genesis commands

This is not really true, I invite the ops family (@sw360cab, @albttx, @mazzy89, @r3v4s, @D4ryl00 and others) to give their opinion on this discussion as well :)

@sw360cab
Copy link
Contributor

IMO it is useful to keep genesis subcommand, it provides a set of functionality that can be really handy from a devops POV. It allowed me to perform multiple actions related to genesis file without the need of any extra command or tool. This means I could use gnoland as base image that in turn is not requiring any extra tool in already installed in it.

Probably in a testnet or mainnet scenario this is not the case. But when dealing with dev or staged environments that can be bootstrap from scratch, I found the command handy and useful.

@r3v4s
Copy link
Contributor

r3v4s commented Oct 10, 2024

@sw360cab That makes two of us.

Once we launch mainnet and after it gets stabilized, no need to do something with genesis. But for staging, it is very handy to keep it.

@moul
Copy link
Member Author

moul commented Oct 20, 2024

Does anyone have a good reason not to move it to contribs/gnogenesis?

Else, we should do it asap, please.

@thehowl
Copy link
Member

thehowl commented Oct 23, 2024

Does anyone have a good reason not to move it to contribs/gnogenesis?

After discussing with Sergio, I'm a bit more convinced that they make sense to be kept in the gnoland command. It means that the gnoland command can manage the entirety of its related files without any additional tooling. It is useful to work in staging environments; so I no longer see particular harm in keeping it.

That said, we could take 5 minutes at the retreat to come to a conclusion :)

@sw360cab
Copy link
Contributor

@thehowl I am available fro the 5 min "come to a conclusion" thing

@moul
Copy link
Member Author

moul commented Oct 25, 2024

Does anyone have a good reason not to move it to contribs/gnogenesis?

this, please.

@thehowl
Copy link
Member

thehowl commented Oct 25, 2024

@moul can you state your case for moving them instead?

especially since we have secrets and config already in gnoland. why do you need to install 2 different binaries for managing a node and its genesis, especially as we are establishing that gnoland is primarily for node operators (and gnodev for individual users)? why do you need it to split it out from secrets and config?

okay, node operators on mainnet won't need it, but there'll still be testnets managed by us and partners, even after mainnet.

@moul
Copy link
Member Author

moul commented Oct 26, 2024

gnoland is used to manage a node.

gnogenesis is for managing a genesis, which is a different process. A node operator should only manage a node, not a genesis.

For testnets, the situation is similar; someone will create a genesis so that node operators can simply use gnoland.

@zivkovicmilos zivkovicmilos self-assigned this Oct 28, 2024
zivkovicmilos added a commit that referenced this issue Oct 29, 2024
## Description

This PR migrates the `gnoland genesis` command suite under
`contribs/gnogenesis`, after following discussions from #2824, and
internal discussions.

**BREAKING CHANGE**
`gnoland genesis` will cease to exist after this PR, instead, you will
need to use the binary in `contribs/gnogenesis`.
It's installed by default after running `make install` from the repo
root.

Closes #2824 

<details><summary>Contributors' checklist...</summary>

- [x] Added new tests, or not needed, or not feasible
- [x] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [x] Updated the official documentation or not needed
- [ ] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [x] Added references to related issues and PRs
- [ ] Provided any useful hints for running manual tests
</details>
@Kouteki Kouteki added in focus Core team is prioritizing this work and removed in focus Core team is prioritizing this work labels Nov 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
❓ question Questions about Gno
Projects
Development

Successfully merging a pull request may close this issue.

6 participants