JetBrains today pushed out Code With Me, formerly in preview, a plugin to support remote collaborative coding, as well as updates to its Java and Ruby IDEs.
Code With Me lets two or more developers work in the same IDE using a remote connection. JetBrains competes with Microsoft's free Visual Studio Code, as well as Visual Studio, and the new feature is somewhat similar to Microsoft's Live Share, which supports collaborative coding, debugging and audio calls, with a web client in preparation.
Asked how the IDEA feature is different from Microsoft’s Live Share, JetBrains told us that “the advantages of Code With Me are the built-in support for video calls, the availability of the on-premises solution for customers who need it and potentially the refactoring functionality.”
The JetBrains feature is a plugin for IDEA which has three editions. The free Community version allows 30-minute sessions with up to three guests, while subscribers to a JetBrains IDE can have unlimited sessions – though technical limitations mean a maximum of 20 participants with up to 5 actively editing code. The Enterprise version runs on-premises for security.
Currently the company says "the majority" of JetBrains IDEs are supported, but the feature for Android Studio and for the C# development tool Rider is still work in progress.
How it works
A Code With Me session is initiated by a developer with IDEA and the plugin installed. A dialog gives various options, including read-only, file editing for remote developers, full access, and custom permissions. The additional permissions cover terminal access and the ability to run applications. There are also options for joining an audio and video conference as part of the session.
The tool generates an invitation link, which a developer then sends to participants. Those receiving the link will be prompted to download the Code With Me Guest client; no previously installed JetBrains IDE is required.
The recipient of a Code With Me invitation is prompted to download and run a client, following which a code is generated as an optional safety check
Running the client generates a security code and the host developer is prompted for confirmation including this code, which makes it possible to confirm who is connecting. The guest does not have to sign in, unlike in Microsoft's Live Share.
The use cases for Code With Me include pair programming, "swarm" programming where the company said you can "fix code simultaneously with your whole team", guiding and mentoring, and technical interviews.
The features include simultaneous editing, tracking where another participant is editing code, synchronization so that the host's code navigation is replicated to guests, and video/audio calls.
In its FAQ the company answers the question "How and what data is going through JetBrains' servers?" The answer appears to be: all of the data that is shared. "Local IP addresses, project name, and username are shared without encryption as they are used for letting JetBrains establish a session between a host and a guest."
Once connected, a new "open source distributed protocol" is used to encrypt communications with TLS 1.3. "If you don't want your data to go via JetBrains servers, you can configure the on-premises servers," the FAQ says. That said, the company says it does not access data such as source code because it is "flowing through [our] servers end-to-end encrypted."
Log files include all activities created by both hosts and guest. In addition, the company says that "there are no restrictions in accessing different parts of the host’s project, executing code, or working in the terminal tool window during an active session."
Platforms supported are the same as for the IntelliJ IDEs: Windows, Mac, and Linux.
JetBrains has also released a 2021.1 update to IDEA, which now has better integration with Space, a team development platform including Git-based source code management, CI/CD automation and project management. There is also support for WSL 2 (Windows Subsystem for Linux) for Java projects. RubyMine, the Ruby IDE, has added support for RBS (Ruby Type Signature Language), which lets developers add static type definitions even though Ruby is a dynamically typed language. RBS came out with Ruby 3, but JetBrains said that the improved code completion it offers works even with older versions of Ruby. This is a big release for RubyMine, which also has test improvements and built-in HTML preview.
Pair programming, where two developers figure out the code together, is part of agile development methodology, but has only "patchy adoption," according to consultant Birgitta Böckeler from ThoughtWorks – because "its benefits are not immediately obvious." She nevertheless considers it "vital for collaborative teamwork."
Even those who disagree may find a feature like Code With Me or Live Share handy for getting a second opinion on tricky development problems. ®