Significance
"Individuals and interactions over processes and tools", right? Exactly right. When you're not next to each other, it's impossible to have interactions without tools. Tools have affordances. Affordances influence behavior - you will do more of what is easy in your tool. Whatever your preferred style of work is, if you're remote, you need the best possible tools to support it.
"That which does for you, also does to you."
--Gene Hughson, The Iron Law of Tools
Best-case outcome? You pair smoothly, effectively, and joyfully.
Worst-case outcome? You need a new job. --schmonz
Tool smells
- if hard to drive, and you want to...
Selection Criteria
- Self-hosted or internet service?
- Data lives on own machine or has to be uploaded/synced?
- Allows everyone to drive, or only the host?
- Only two people or a mob?
- Full-screen or terminal-only (or something in between)?
- Includes audio?
- Includes text chat?
- Does your company already have this? Do they mandate this?
- Same platform or mixed OSes?
Tools
Tool | Hosting | Data | Driver | Participants | Screen | Face | Voice | Text | Platforms | Cost |
---|---|---|---|---|---|---|---|---|---|---|
AnyDesk | hosted | local | all | mob | full | Mac,Windows,Linux,iOS,Android | free,paid | |||
appear.in | ||||||||||
Chrome Remote Desktop | hosted | local | both | 2 | full | Google Chrome | free | |||
Floobits | hosted | hosted | both | 2 | editor | Hangouts | Hangouts | Emacs,Neovim,IntelliJ | free,paid | |
Jitsi Meet | hosted | local | host only | mob | full | Any browser with WebRTC | free | |||
jitsi | ||||||||||
join.me | ||||||||||
Koding | ||||||||||
screen | ||||||||||
hosted | local | both | 2 | full | Mac,Windows | Slack killed this product in 2019 | ||||
Scrimba | hosted | ? | both | ? | web IDE | ? | web | ? | ||
TeamViewer | ||||||||||
Teletype for Atom | ||||||||||
tmux | local | local | all | mob | terminal | Anything with SSH | free | |||
tuple | ||||||||||
USE Together | hosted,on-premise | local | ||||||||
Visual Studio Live Share | ||||||||||
VNC | ||||||||||
VSee | ||||||||||
zoom.us |
Additional notes:
Screenhero: Two mouse cursors! Requires high bandwidth, low latency. Trivial setup. Traverses firewalls pretty well. Recovers well from VPN and proxy changes. Maybe a bit smoother if the primary driver for the session initiates the call. Definitely smoother experience with similar screen resolutions and OS platforms (think Windows/Command keys).
LiveShare: VS Code and Visual Studio only, low bandwidth needs (not screen-sharing). Very limited guest coder experience. Up to 30 people.
Floobits: Requires code to be synced to a Floobits server. Shares just the editor window, so it might be very efficient with bandwidth. Since both parties have the same code, each can run tests locally.
Scrimba: currently client-side web stuff only.
SIP/SRTP/ZRTP
- for voice
OS X Messages
- schmonz refuses to do family tech support any other way. Don't bother describing it to me, show me
- Then I can drive
When trying this with a coworker over Jabber (Google's), accepting a share-screen request never got back to the inviter
voice, video, screen-sharing (maybe not guest-driving though?)
tmate.io
- Terminal-only
- can host your own server
Synergy ?
Slack
- text chat
- audio
Mumble
- text chat
- audio
Skype
- text chat
- audio
- host-only screen sharing (no guest driving)
WebEx
- text chat
- audio
- screen share (request control to interact with host's computer?)
GoToMeeting
LinPhone
- for audio
Jitsi
- audio
- screensharing?
Editors Only (not screen share)
Wemux (group tmux / mobbing)
MotePair (Atom)
Online IDEs and editors
Other Tools
- Collaboration Superpowers list
- Miro (formerly RealtimeBoard)
Experience Reports
Code Craftsman Saturdays - October 2013
We did a full day workshop where we experimented with different remote pairing tools and techniques. The single most valuable takeaway was to experiment with the tools you think you want to use locally before trying doing it remotely. This shortens the try-fail loop and frustration associated with a low bandwidth experiment.
Also, always have a fall-back communication channel pre-agreed to; e.g. exchange cell phone numbers. Few things are more frustrating and wasteful than trying various communications channels not knowing the extent of a problem when someone drops off suddenly.