I’ve always used wemux for this (it is a pretty thin wrapper around changing socket permissions and tmux new-session -t), it makes all terminal work multi-player.
tmux new-session -t
Changing editors seems like solving the problem at a more difficult layer. That said. if I can talk people into it, kakoune has a multi-session mode.
I read this expecting to say “use gnu screen” but a fair point is letting the different participants scroll the file independently, and a shared terminal wouldn’t make that work/
Tmux can have multiple independent sessions per window set (note I said new-session -t, not attach) so you can actually do this. I don’t think screen can.
That’s a great option to have available, totally.
Changing editors was for me lower friction than using any sort of tmux tooling because, though I use tmux and vim, none of my collaborators do, so it would be forcing them to switch editors. I think the switch from vim to VS Code is easier than the other way around, so this made for a smoother pairing experience (for me).
How do you handle NAT/firewall traversal? Or do you just have the repo live on a cloud VM and both ssh into it? I suppose VPN software like Tailscale also works actually.
Through a VPN with a guest account on my dev box (which is not my desktop). There needs to be some kind of connection.
I was trying to find a FOSS alternative to VS Code’s live share feature but couldn’t. Looking online it seems live share is very flaky with VSCodium, which is to be expected. Another company called CodeTogether has the interesting feature of supporting multiple types of IDEs in the same session but is proprietary and (reasonably) paid. Also possibly bundled with management-oriented snitchware?
It really seems like a very interesting & challenging FOSS project for someone to take on. You could define an open standard API for editors to interact with the local live share service similar to the LSP, and various editor communities (neovim, emacs, etc.) could implement that client if they wanted. Then the project could have a free lightweight coordination service similar to tailscale that hands off to P2P connections (it would probably even use tailscale code for NAT/firewall traversal). The option to self-host the coordination service would of course be available, probably using one-time codes shared OOB. Don’t have the bandwidth for this myself but would be incredibly fun to work on!
I would also love to have a FOSS project to use for this, especially if it could integrate with all sorts of editors. I’d happily help with some development but like you don’t have the bandwidth to start up that project and run it.
Actually seeing the sibling comment on this post the solution might already exist; I just wasn’t thinking in terms of the UNIX philosophy of doing one thing well! You could use Tailscale to have your coworker be able to connect directly to your computer, then use wemux and a terminal editor. The LSP-like API for a shared editing session would still be a fun project though.
Another example of (proprietary) prior art, Floobits launched a decade ago, but now seems to be defunct: https://floobits.com/
I’ve been Code exclusive for a long time now and on the command-line I’m ditching vim for Helix. It’s fine and progress is possible.
Can you please elaborate on how Helix is better/different from Vim/Neovim?
I’m still learning it but it feels fresh and fast and very functional out of the box without having to setup a ton of weird settings and plugins.
I have not used Neovim seriously (so maybe that’s also like that?) but I was never really committed to using vim as an IDE anyway.