16

How to Find the Right Collaborative Coding Tool for Remote Pair Programming

 2 years ago
source link: https://dzone.com/articles/the-right-collaborative-coding-tool-for-remote-pair-programming
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

How to Find the Right Collaborative Coding Tool for Remote Pair Programming

This guide walks you through different aspects and capabilities of collaborative coding tools to help you decide which one will be a perfect fit for your team.

Join the DZone community and get the full member experience.

Join For Free

Remote development is clearly here to stay, and when you need to collaborate with your team, starting a Zoom meeting or Hangout (er … Google meeting) is probably something you think of doing first. However, several developer-focused solutions that are much better suited for remote development are available today — but how do you know which one to pick? This guide will help you make that decision.

As you read this guide, you might wonder how I know an awful lot about these solutions. The fact is, I work for Genuitec, which makes CodeTogether. What you see below is the result of our continuing study of this landscape to see how we stack up against our competitors and to decide what we need to focus on next. This guide aims to be factual, and in an effort to remain unbiased, I do not delve too deeply into the quality or capabilities of each feature.

Screen Sharing Software vs IDE Plugin

While the vast majority of remote pair programming tools are IDE-based, there are a few that are based around screen sharing. While Webex and GoToMeeting are known for being CPU intensive, these new screen-sharing solutions are more performant and flexible. For instance, they support higher quality video and multiple cursors, making them more suitable for use when sharing an IDE. 

Examples of screen sharing solutions include Drovio (formerly UseTogether), Tuple, and CoScreen.

However, nothing changes the fact that everyone in the session can only focus on one piece of code at a time — they can’t explore other areas of the code-base, run independent analysis, or make changes elsewhere.  They have to be familiar with the IDE the host is using, and if the host jumps to another application, everyone loses access to the code. These fundamental screen-sharing constraints make true collaboration with such solutions impractical. This guide will therefore focus only on IDE-based solutions.

In this guide, we’ll look at what IDEs they’re compatible with, how secure they are, how capable the guests' development experience is, additional features like audio/video calling, and finish up with a pricing comparison.

Compatibility

Perhaps the easiest way to narrow down your choices is to check to see if the IDEs are supported by the tool. Every developer wants to use their preferred IDE because they're familiar with the layouts, themes, UI, and most importantly, key bindings. Does your entire team use just one IDE? Or are there more IDEs in the mix? Even when joining sessions, being able to use their favorite IDE would make a significant difference to a developer’s productivity.

Being able to join sessions from a browser is also a benefit when a developer doesn’t have access to their work machine. Maybe they’re on vacation, sunbathing on a beach, but you don’t like their choice of words on the home page; got to get that fixed ASAP, right?

Tool / IDE

IntelliJ15234397-intellij-32.png

Eclipse15234399-eclipse-32.png

VS Code15234404-vscode-32.png

Browser15278806-browser-32.png

Code With Me

CodeTogether

Duckly

Floobits

➖1

GitLive

Live Share

Saros

➖2

➖3

1Most recent release in October 2020, does not appear to be in active development.
2Alpha release from May 2020, does not appear to be in active development.
3Most recent update was in January 2021.

With Code With Me, participants join using a special client that is downloaded the first time they join a session. The client is very similar to an IntelliJ IDE, but you cannot participate in the session using your regular IntelliJ IDE that you use for local development.

Other IDEs and Editors

Live Share is the only solution in this space for Visual Studio, and for XCode, you may be forced to use a screen sharing solution instead.

The solutions that work for VS Code typically work for derivatives of VS Code as well. These include VSCodium, Code Server, Coder, GitPod, OpenVSCode Server, Eclipse Theia, and others.

If you’re looking for editor support, Floobits supports Sublime Text, Atom and Neovim, and Emacs in addition to IntelliJ. Teletype for Atom is an Atom-specific tool, too.

A multi-IDE CodeTogether session

A multi-IDE CodeTogether session

Security

There are several security considerations that make it easy to disqualify tools that don’t meet your organization’s security standards.

Is the code that is shared end-to-end encrypted? If it is, nobody can see your code, not the solution provider nor any attackers in the case of a MITM attack.

Does the source code stay on the host machine, or is it transferred to the guests, who may then have access to it even after the session ends?

On-Premises

No matter how secure the solution claims to be, some organizations will not allow code to leave their intranets. If this is the case, you need a solution that provides an on-premises distribution. For additional security, your organization might also require single sign-on support, allowing only authenticated users convenient and secure access to the solution.

Tool / Feature

End-to-end encryption

On-premises distribution

Source stays on host

Single sign-on

Code With Me
15234397-intellij-32.png

CodeTogether
15234397-intellij-32.png15234404-vscode-32.png15234399-eclipse-32.png15278806-browser-32.png

Duckly
15234397-intellij-32.png15234404-vscode-32.png

➖1

Floobits
15234397-intellij-32.png15278806-browser-32.png

➖2

GitLive
15234397-intellij-32.png15234404-vscode-32.png

Live Share
15234404-vscode-32.png15278806-browser-32.png

Saros
15234397-intellij-32.png15234399-eclipse-32.png

1End-to-end encrypted up to 4 participants only.
2If you use the free plan, your source will be hosted in a publicly accessible repository.

CodeTogether's SSO Integration

CodeTogether's SSO Integration

Programming Capabilities

When connected to a session as a guest, what are the language capabilities and other IDE features that you have access to? Do you get content assistance and validation, can you refactor code, do you have access to terminals and consoles, can you run tests on the host, etc.? Often, you might find a few language features available, but only in the context of the current file and incomplete, as they are being provided by your local IDE, which may not have the entire project context or the language and framework support that the host has. These features are as good as useless and will be marked absent in the table below.

All the tools mentioned below share features like providing access to the entire project tree or workspace, not just the file the host has open. They also allow concurrent editing of files, even multiple developers editing in a single file simultaneously.

Tool / Feature

Content Assist

Validation

Quick fixes

Navigation

Refactoring

Shared Debugger

Shared Terminal

Shared Servers

Run Tests

Code With Me
15234397-intellij-32.png

CodeTogether
15234397-intellij-32.png15234404-vscode-32.png15234399-eclipse-32.png15278806-browser-32.png

➖1

Duckly
15234397-intellij-32.png15234404-vscode-32.png

Floobits
15234397-intellij-32.png15278806-browser-32.png

GitLive
15234397-intellij-32.png15234404-vscode-32.png

Live Share
15234404-vscode-32.png15278806-browser-32.png

➖2

Saros
15234397-intellij-32.png15234399-eclipse-32.png

1Limited refactorings available
2Via 3rd party extension

Shared debugging with Live Share in VS Code

Shared debugging with Live Share in VS Code

Session Capabilities

Can the capabilities be used anonymously? This might be especially useful when you want to get a quick session going with someone you don’t normally collaborate with, or who just doesn’t have an account yet. How soon after you start the session is it actually usable? How many participants can you have in the session?

Tool / Feature

Number of Participants

Anonymous Use

Immediately Available

Code With Me
15234397-intellij-32.png

CodeTogether
15234397-intellij-32.png15234404-vscode-32.png15234399-eclipse-32.png15278806-browser-32.png

Duckly
15234397-intellij-32.png15234404-vscode-32.png

Floobits
15234397-intellij-32.png15278806-browser-32.png

GitLive
15234397-intellij-32.png15234404-vscode-32.png

Live Share
15234404-vscode-32.png15278806-browser-32.png

Saros
15234397-intellij-32.png15234399-eclipse-32.png

1A client download may be required before the session starts if you don’t have it installed, or if it is out of date

Communication

When in the session, does the solution provide its own text chat or audio/video calling capabilities? At Genuitec, we believed developers would prefer using their regular communication platforms like Slack or Teams, but every now and then, we get a request for integrated communication. This is why we are adding these capabilities in CodeTogether 4.3, along with the additional ability to screen share, which we admit can be useful in some circumstances. 

Tool / Feature

Text Chat

Audio

Video

Screen sharing

Code With Me
15234397-intellij-32.png

CodeTogether
15234397-intellij-32.png15234404-vscode-32.png15234399-eclipse-32.png15278806-browser-32.png

➖1 ➖1 ➖1 ➖1

Duckly
15234397-intellij-32.png15234404-vscode-32.png

Floobits
15234397-intellij-32.png15278806-browser-32.png

GitLive
15234397-intellij-32.png15234404-vscode-32.png

Live Share
15234404-vscode-32.png15278806-browser-32.png

Saros
15234397-intellij-32.png15234399-eclipse-32.png

1Coming in CodeTogether 4.3 in October 2021

Screen sharing with Duckly

Screen sharing with Duckly

Pricing

As you can see below, all tools offer a free usage tier. I’ve listed the obvious restrictions of this tier, but there are possibly additional limitations as well. I don’t delve into trial period use, where all features are likely to be available for a limited period. 

There are also several pricing models, and I’ve taken the cheapest possible per-user price for the table below.

Tool / Feature

Free Tier

Personal Use

Organizational Use

On-Premises

Code With Me
15234397-intellij-32.png

30 minute sessions

3 guests

$50 / year

$100 / year

$400 / year

CodeTogether
15234397-intellij-32.png15234404-vscode-32.png15234399-eclipse-32.png15278806-browser-32.png

60 minute sessions

3 guests

$96 / year

Same as personal

$30-$70 / year
(discounts based on team size)

Duckly
15234397-intellij-32.png15234404-vscode-32.png

60 minute sessions

6 participants

$120 / year

Same as personal

Floobits
15234397-intellij-32.png15278806-browser-32.png

5 public workspaces

$180 / year

$120 / year
(sold in multiples of 5 users)

$100 / year

GitLive
15234397-intellij-32.png15234404-vscode-32.png

40 minute sessions

$60 / year

Same as personal

Live Share
15234404-vscode-32.png15278806-browser-32.png

All features accessible

Saros
15234397-intellij-32.png15234399-eclipse-32.png

All features accessible

Closing Thoughts

Do you already use one of these solutions? If so, how would you rate it, what features do you find invaluable, and what features do you miss? I’d love to hear what you think, especially if you have suggestions for improving the article, so do leave a comment. I hope you’ve found this guide to be both fair and helpful in picking a solution that would meet your needs. Happy coding!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK