---

** [tickets:#95] Remote server à la "mosh"**

**Status:** open
**Created:** Sat Jan 04, 2014 09:03 AM UTC by Florent Bruneau
**Last Updated:** Sat Jan 04, 2014 09:03 AM UTC
**Owner:** nobody

Hi,

I've recently been introduced to [`mosh`][1]. `mosh` is a replacement for `ssh` 
to connect on a remote host that deals with IP roaming and intempestive 
disconnections. For this, and in order to scale properly in case of 
disconnection (that is, in order to always store a limited amount of data), it 
emulates a terminal on the remote host and only sends the diff of the visible 
part of the terminal to the local host. In order to deal with roaming part, 
`mosh` protocol is over UDP (only the initial authentication is performed 
through TCP using a normal `ssh` session).

While I think `mosh` is full of genuinely great ideas, I have three main issues 
with it:
* first, its yet another terminal emulator, and it is not perfect. This cause 
various issues with special characters and adds another layer of escape-key 
control.
* secondly, it breaks `tmux -CC` protocol since only visible diffs are sent 
(moreover [it currently does not forward the escape sequence used by the 
protocol][2], but even if it did, this would not allow `tmux -CC` to work)
* thirdly, it uses too much resources for its purpose and in its current state 
is not a piece of code I will trust to scale properly under high loads (for 
example, it allocates a C++ class instance on the heap for each character it 
reads).

This is why I think this kind of feature should be directly part of `tmux`: 
`tmux` already have the terminal emulator, so the server side would "just" have 
to implement the new UDP-based remote protocol. The content of the messages 
would be the control messages that are already implemented through the `tmux 
-CC` protocol. Some heuristics could be found in order to replace all pending 
message with a full-redraw if the client got disconnected for a long time.

On the client side, `tmux` would implement the UDP-based protocol and then 
forwards and interprets the messages in order to redraw the local instance. If 
the local instance runs `tmux -CC`, the control sequence would just be 
passed-through.

I know this is a lot of "we just need to do this" and this may not be that 
simple in real life, however I think this would be a deal-maker feature for 
every-body who have not switch to `tmux` yet. This could also certainly be a 
good subject for a Google Summer of Code project.

   [1]: http://mosh.mit.edu
   [2]: https://www.mail-archive.com/mosh-devel@mit.edu/msg00306.html


---

Sent from sourceforge.net because tmux-users@lists.sourceforge.net is 
subscribed to https://sourceforge.net/p/tmux/tickets/

To unsubscribe from further messages, a project admin can change settings at 
https://sourceforge.net/p/tmux/admin/tickets/options.  Or, if this is a mailing 
list, you can unsubscribe from the mailing list.
------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
tmux-users mailing list
tmux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-users

Reply via email to