1. 18

  2. 1

    I read all the markdown documentation I could find and the website, and I cannot figure out why I would use this over mosh (which includes latency masking strategies)?

    It really needs a line somewhere in the docs simply stating why it exists (why existing tools fail the author’s use case) and explicitly the problem it solves.

    The tool is inspired by mosh but I cannot see what more this gives me from the description than a slightly more transparent version of:

    while sleep 1; do ssh ...; done

    Though with the while loop, and unlike with ET, agent/port forwarding works.

    1. 2

      ET, like mosh, is not ssh - it just relies on using ssh for authentication. Unlike your while loop, and like mosh, this tool handles roaming and reconnecting transparently without any interruption of the link.

      Unlike mosh, it is essentially a generic implementation of resume-able TCP, and not a specific UDP algorithm only designed for terminal synchronizations. The only real “advantage” of the Eternal Terminal over mosh is that is operates as a TCP stream, so it is possible, for example to run Kermit or ZMODEM or UUCP or even PPP connections over an ET connection, which is not be possible with mosh. Every byte gets transferred, so you have local scrollback and all that jazz.

      The more interesting thing about Eternal Terminal is really just a demonstration implementation of EternalTCP. You could modify any existing TCP application to use EternalTCP and gain resume-ability.

      For example, it is possible to add ET to SSH itself and then you would have all the advantages of SSH like port and agent forwarding with mosh-like resumption and roaming. This would be a welcome addition to IRC for example - on the server-to-server connections it would eliminate netsplits, and for user-to-server connections it would eliminate disconnections without the need to run a dedicated bouncer.

      I did a quick port to OpenBSD (not many changes needed, thankfully) and I have been experimenting with creating a generic proxy that can be used to add EternalTCP to existing services and playing with it more.