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

Single or multiple binaries #379

Closed
faboweb opened this issue Jan 24, 2018 · 7 comments
Closed

Single or multiple binaries #379

faboweb opened this issue Jan 24, 2018 · 7 comments
Assignees

Comments

@faboweb
Copy link
Contributor

faboweb commented Jan 24, 2018

The question is, should we ship one binary (gaia) as we currently do or multiple binaries? It would be nice if this issue could serve as a final decision and documentation on that matter.

Quotes:
Jae:

These should be separate programs:
gaiad The Gaia full node daemon, not discussed here. Mirrors Tendermint subcommands.
gaiap The Gaia proxy daemon, (formerly known as a light client daemon). Mirrors Tendermint subcommands. It's more of a "daemon" than a "client", so lets just call it something else. Proxy.
gaiacli A cli to connect to a gaiad or gaialcd. A "client".
ckeystore The Cosmos key store, another cli. Not specific to Gaia.

Frey:

One binary or three?
I actually slightly preferred separate binaries, and that is what I did in May with Bucky's approval. After months of usage, everyone (UI, greg, rige, bucky) was annoyed by this and gaia now uses one binary since a few months. I am quite neutral in this question, but as there was general consensus by everyone using the tool, I would go with that.

Separate keystore app?
I agree here. Even if we make one binary with a chub keys ... subcommand, we should also provide a ckeystore app separately for those who just want to use it for signing, which would duplicate the functionality.

This was referenced Jan 24, 2018
@zramsay
Copy link
Contributor

zramsay commented Jan 24, 2018

i'm in favour of the least amount of binaries; this makes documentation much easier to write/update; the code easier to dive into, and the release process smoother

@adrianbrink
Copy link
Contributor

I absolutely agree with Jae on logically splitting those three binaries into:

  • Gaia Full Node Daemon
  • Gaia Light Node Daemon
  • Gaia CLI (it's essentially the same as the UI, just through a terminal)

However I don't think that we should split the Gaia from the Tendermint binary. The Gaia Full Node Daemon should just run Tendermint in-process.

Reasons
The full- and light-node daemon expose the exact same external interface. The Gaia CLI/UI just sits in front of the external interface of the daemon.

This way the cli/ui doesn't have to care what the user is running underneath. The cli/ui talks to an HSM through a socket that it connects too. This way the daemon's don't have to deal with user key management (one of the biggest annoyances for Parity/Geth in my opinion).

Usability
A user has to make two choices:

  • want to run a full- or light node
  • want to run a UI or CLI

After that the installation is brew cask install gaiafn gaiacli or brew cask install gaialn gaiaui.

@jaekwon
Copy link
Contributor

jaekwon commented Jan 30, 2018

However I don't think that we should split the Gaia from the Tendermint binary. The Gaia Full Node Daemon should just run Tendermint in-process.

Yeah, should be in-process.

@jaekwon
Copy link
Contributor

jaekwon commented Jan 30, 2018

@zramsay i'm in favour of the least amount of binaries; this makes documentation much easier to write/update; the code easier to dive into, and the release process smoother

How does it making documentation easier to write or update? It's just replacing command subcommand with command... and most of the work of documenting should be done for each subcommand.

It makes code harder to dive into because you need to first dive into a mega-binary. It would be easier if there were less irrelevant subcommands in the binary implementation you're looking for.

The release process, ok. We could release a zip and a signed txt file holding all the shasums of each item in the zip. It's not that much more complicated. Am I missing something?

@jaekwon
Copy link
Contributor

jaekwon commented Jan 30, 2018

More reasons:

In general, in the case of the cli, we want to make it as small a binary as possible since we're talking about potentially very resource constrained devices. The tendermint binary itself is clocking in at 2.4MB, but I don't think the cli needs to be that large.

In general, we don't know what dependencies we'll require for the full node vs the light node proxy. It'll be nice to maintain that separation such that we can introduce dependencies that aren't needed in a light node proxy. We might make the Tendermint binary fairly large, say 20MB or more. The light client could still stay tiny.

@zramsay
Copy link
Contributor

zramsay commented Jan 31, 2018

alright i'm convinced. multiple binaries makes sense

@ebuchman
Copy link
Member

ebuchman commented Feb 3, 2018

Let's go with gaiad and gaiacli. The former is just the full node. The latter contains the LCD and the CLI and the keys.

Currently the gaiacli will be quite big because of large dependencies. But we can work on that later: tendermint/tendermint#1182

patiee pushed a commit to patiee/cosmos-sdk that referenced this issue Mar 23, 2023
)

* Revert "feat: remove bank multisend msg (cosmos#274)"

This reverts commit 9165099.

* updates

* updates

* updates

* updates

* updates

* updates

* updates

* updates

* updates

* updates

* updates

* updates
gibson042 pushed a commit to gibson042/cosmos-sdk that referenced this issue Apr 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants