We've only gone and got our hands on an early preview of Fleet, the forthcoming JetBrains IDE

Rough edges, but ground-up design makes sense


First look Our first look at Fleet, the new JetBrains core editor and IDE, shows the promise of a minimalist design and an architecture that has collaboration and remote development in mind – but there are plenty of rough edges in the preview.

Debugging a Java application in Fleet

Debugging a Java application in Fleet

Fleet is significant because it is a new base IDE from JetBrains that may eventually replace IntelliJ, used as the core of numerous IDEs including Google's Android Studio, though there are no plans yet to discontinue IntelliJ and Fleet is in early preview.

The best single word to describe Fleet is "minimalist". On first start-up it is little more than a white empty window with some controls embedded in the title bar. Nothing much is possible until a workspace is opened, in effect a project folder. Once done, it is possible to create and edit files but little else. Functionality like refactoring and code parsing is disabled.

Clicking a Smart Mode button at top right of the title bar then gives the developer the option to enable "completion, error detection, fixes and refactorings."

The documentation warns that "After you click the Enable button you may have to wait some time, while the backend is prepared". This is true and Fleet does no end of downloading dependencies and indexing the first time the button is clicked, presuming there is some code to analyse. Once done, Fleet becomes a full IDE though retaining its minimalist design.

Fleet feels more like a smart code editor than an IDE and has a minimalist design

Fleet feels more like a smart code editor than an IDE and has a minimalist design

The function of the Smart Mode button is similar in concept to the Visual Studio Code Workspace Trust feature. The issue is that intelligent editors parse and execute source code in the background, which is a security risk if a developer happened to open a project containing malicious code.

Knowing whether any of thousands of files downloaded automatically by a package manager might be malicious is non-trivial; but these features do at least give a developer the opportunity to browse code safely before enabling smart features.

The Smart Mode in Fleet is similar to Workspace Trust in VS Code

The Smart Mode in Fleet is similar to Workspace Trust in VS Code

What is the "backend"? This is the key reason JetBrains designed Fleet as an alternative to IntelliJ. The backend is a service that does indexing, static analysis, search and so on.

The frontend is the UI which does basic file parsing. The workspace server sits in the middle, maintaining state in the frontend and calling backend services as needed. Multiple frontends can be connected to one workspace.

A Fleet component called FSDaemon (Fleet Service Daemon) is part of the workspace, runs where the source code is, and executes commands for building a project, running code, or running terminal commands.

Fleet architecture, showing the workspace at the centre, with support for mulitple frontends

Fleet architecture, showing the workspace at the centre, with support for multiple frontends

If Fleet is running locally then all these components run on the same system. This architecture comes into its own though when the workspace is remote.

In this preview, JetBrains also provides a standalone Fleet workspace server which runs on Linux. We tried it on WSL (Windows Subsystem for Linux) 2.0, using Ubuntu. The workspace server is an executable that accepts the path to a project as an argument, and outputs a URL that points to a relay service on jetbrains.com, along with an unique identifier.

Any system with Fleet installed can then open that URL, which prompts to open Fleet, and start working on that project. We tried opening our WSL project on a Mac, using the magic URL. Clicking the URL brought up a dialog: do you want to allow this page to open JetBrains Toolbox?" Accepting the prompt opened Fleet on the Mac with full access to the WSL instance, including a terminal within Fleet.

The project is remote, so building the code takes place on the remote system. Port forwarding enables a web application running remotely to be tested on the local machine.

Clicking a magic URL gives access to a remote development environment

Clicking a magic URL gives access to a remote development environment

Once again, there are similarities with VS Code, which has a remote server which does most of the work when using VS Code in this mode. With Fleet though, if more than one developer opens the workspace, it is an instant collaboration environment. All developers are in effect sharing the same IDE.

The result is similar to the VS Code Live Share feature where multiple developers can co-edit code, or JetBrains Code with Me. The system is flexible and JetBrains says developers will be able to share their local session with others, or connect to Fleet running in a Docker container, or use cloud-hosted Fleet in future, though the current preview is early and limited, for example lacking authentication to remote sessions.

Note that while coding collaboratively is a useful feature for pair programming (two developers working together) or help with problems, the main collaborative technique remains the Git (or alternative version control system) model where each developer works independently on their own copy of the code. With Fleet, this code can be on a remote server, but each developer still needs their own environment.

An important command in the Fleet user interface is Cmd-K which opens a tabbed panel with Goto (search the code), Actions (a list of possible actions), Tools (such as Files Tree, Git and Terminal) and Text search. The Actions tab is reminiscent of the Command Palette in VS Code, the model being to search for a menu item by typing rather than by navigating hierarchical menus in the user interface.

This Fleet Actions panel feels similar to the command palette in VS Code

This Fleet Actions panel feels similar to the command palette in VS Code

Based on our experience with the preview, Fleet is still somewhat rough to work with, particularly on Windows. We suffered long pauses, such as delays opening Fleet, FSDaemon getting carried away and consuming 100 per cent CPU, and difficulty opening new workspaces; it was better behaved on macOS.

Fleet does seem to spend a lot of time updating indexes. We also got errors with common tasks like initializing a Git repository, or recognizing a Git repository that had already been initialized. Some important features are missing, not least the ability to extend Fleet with plugins. Language support is currently Java, Kotlin, Python, Go, JavaScript, Rust and JSON, with PHP, C++, C# and HTML billed as "coming soon."

Rough edges are expected with an early preview, and on the plus side the minimalist design is ideal for developers who want to focus on their code. Designing an IDE from the ground up for remote development makes sense given the interest in this way of working; JetBrains said it has advantages for security as well as simplifying the setup of developer PCs.

The company will be able to reuse much of the work that has been done for IntelliJ, such as the language servers (which support code completion, error detection and more) and refactorings.

There do seem to be many parallels with VS Code, though also important differences. VS Code can be browser-based, for example, whereas Fleet always depends on a local installation of the application, and is written in Kotlin rather than JavaScript.

In some ways though, Fleet shows the impact of VS Code. It feels like a smart code editor, even though it has the power of a full IDE, and that is a good thing. ®

Broader topics

Narrower topics


Other stories you might like

Biting the hand that feeds IT © 1998–2022