In the past when members of the Phusion dev team have needed to do pair programming (or debugging) remotely, we would use the screensharing functionality of (and Skype before that). However the CPU usage of both of these applications when sharing your screen (as well as the bandwidth requirements) were excessive and slowed down the actual work being done.

Recently when debugging an issue with Passenger that I wasn’t able to reproduce in my testing environment, we used Visual Studio Code's Live Share Extension for the first time. At the behest of Hongli, I installed VSC (which being an Electron app, and inherently slow, was previously deliberately absent from my system), and the Live Share extension. An initial hurdle - a login loop in the oauth implementation - was sidestepped by using a Microsoft account rather than a GitHub account to login to the extension. (side note: doesn't Microsoft own GitHub now? Why doesn't this work?)

Of course a better solution would be to remove the login requirement altogether, especially for the receiving side of the invitation. Requiring a Microsoft account from both sides makes no sense. Furthermore VCS shows a pattern of ignoring the user's insistance that they not be spied on and not interfere with the system. They deliberately roll back do-not-track settings and set themselves as the default application for 129 different file types without asking, overriding xcode and other better applications, and then lie about having no choice in the matter.

Of course all opinions are my own and not my employers.

Comparison to Screen Sharing

Once VSC Live Share was setup it did allow Hongli and myself to edit code files in parallel and share a terminal, with much reduced CPU and bandwidth use, but a significant RAM use increase. Some drawbacks are that VSC is designed to look "nice" with big margins and padding everywhere, wasting screen space and room to work. Unsynced window and tab sizes also resulted in team members not being able to see what another was talking about without manually resizing panes to match eachother.

Alternatives to VSC Live Share

We haven't done much research into alternatives, and which of those we’d be interested in trying out. Atom for instance has live coding, but does it allow team members to work in parallel? It being an Electron app, the RAM problem won't go away. We also don't know if it lets you share a terminal. Sublime text also has collaborative plugins, which might help with the RAM issue if they cover the bases of a shared terminal and parallel editing. Voice, as an add-on to a shared workspace, would be a nice-to-have (but not a dealbreaker).

While Visual Studio Code Live Share feature is a step up from screen sharing, we can't help but hope for a better solution to our problem. I'd love to hear what setup you use for pair programming. Let me know on Twitter!