Visual Studio Live Share (7 Part Series)
In a previous post, I discussed how Visual Studio Live Share enables a flexible form of collaboration, that can accommodate a diverse set of developer preferences and use cases (e.g. pair programming, on-boarding, education). However, no amount of flexibility can make up for the fact that effective collaboration requires something even more fundamental: communication.
When we built Live Share, we expected it to be used alongside a communication service such a Teams, Slack or Discord. That way, Live Share could provide a collaborative development experience (e.g. co-editing, debugging, terminals), while complimenting whichever communication solution teams were already using. However, over time, we began to hear a significant amount of interest in a lightweight/companion chat experience, that would allow developers to communicate directly as part of a Live Share session (without needing to use code comments!), and provide three potential benefits:
Having a single rendezvous point (the Live Share session URL) for joining a developer collaboration session, as well as establishing a line of communication. For certain use cases (e.g. technical interviews, hack-a-thons, product support), this could provide a simplified experience.
Reducing context switches, by being able to chat with other developers in the Live Share session, directly within your IDE.
Enabling communication about code more easily, since chat messages could be naturally associated with specific lines of code, as opposed to
having to copy-paste snippets around.
Following the Unix philosophy, Live Share itself remains focused on solving only developer collaboration, and leaving the choice about communication up to each team. However, to address the aforementioned benefits, and enable developers to opt-into a more opinionated stack, we decided to create the Live Share Extension Pack, which represents a one-stop-shop for collaboration and communication. Let me illustrate how this looks!
After installing the Live Share Extension Pack, the Live Share "Session Details" view will have a shiny new option:
Start Audio Call... If you click that, it will start up a voice call, without requiring you to sign-in to or use a separate service 🚀. Even cooler, it will automatically notify guests about the call, and give them the option to join.
A Live Share host (right) starting an audio call, directly within VS Code
By default, you have to explicitly start and join a call. However, if you'd like to automatically start a call when you share a Live Share session, or always accept a call when you join a Live Share session, there are settings to change this behavior (see below). Once enabled, the Live Share session URL becomes a single rendezvous point to begin coding and talking with other developers. We’ve found this to be pretty powerful.
In many cases, having a voice call alongside Live Share provides the best (and most commonly used) collaboration experience. However, there are circumstances where voice communication might not be preferred (e.g. you're in a team room), and use cases where it could be a distraction for guests to always communicate with the host via audio (e.g. live streaming, classrooms, team brown bags). To accomodate these scenarios, the Live Share Extension Pack also provides an integrated text chat experience, that fully eliminates context-switching between apps.
A Live Share host (right) chatting with a guest (left), directly within VS Code
Once installed, the Live Share chat window will automatically open when you share or join a session. Since the chat thread is a regular Visual Studio Code document window, you can arrange it however you'd like, which allows everyone to easily code and chat at the same time. In addition to having a group chat amongst everyone in a Live Share session, you can also send direct messages to individual devs, by clicking the chat icon next to their name in the “Contact” panel.
This allows you to quickly ask someone a question, or see if they have a moment to Live Share, without needing to switch context in order to do it.
Audio and text chat typically form the basis of communication when collaborating. However, there are situations where the thing you want to talk about is a specific line/block of code, and therefore, it would be much simpler if you could just annotate that code directly, and not have to wade through chat history in order to discuss it. When in a Live Share session, you'll notice that a new "comment bar" will appear, between the editor’s
line numbers and the code itself. Using that, you can click any line of code, and start a new comment thread. These comments will be immediately synchronized with all guests, and are visible within the file, as well as the
Comments pane within Visual Studio Code.
A Live Share host (right) leaving real-time code comments, directly within VS Code
This kind of experience can enable some interesting scenarios, such as leaving todos/reminders for yourself during long-running Live Share sessions, using Live Share to perform ad-hoc/informal code reviews, or simply leaving comments for your pair while they're away or working in another file. The comment UI is the exact same that's used for viewing PR comments via the GitHub Pull Requests extension, which provides a nice continuity between collaboration in Visual Studio Code, regardless if it's real-time or asynchronous.
Since the code commenting capability is broadly applicable, it is included directly in Live Share "core", as opposed to the Live Share Extension Pack (like audio and text chat).
By enabling developers to communicate using audio calls, text chat and code comments, we believe that Live Share can better accomodate the breadth of use cases that it's already being used for. However, in order to support developer choice, the audio and text chat experiences are fully optional, and only included in the Live Share Extension Pack. This way, regardless what kind of collaboration you're doing, and what kind of communication tools your team is using, Live Share can compliment it, and hopefully, make it more enjoyable 👍