In 2019 VirtusLab joined Scala Center as the first contributor member, which means one of the company’s developers would dedicate their time to working on Scala open source. It was the obvious next step as we love and support the Scala programming language and already have a very proficient tooling division. #VLteam does its best to contribute to open source projects and enhance software that is used by developers around the world.
We were asked to help out with one of the newer developer solutions worked on in the Scala Center – the Metals language server. It was obvious that an LSP server was needed for the language to stay relevant and reach more users, who might either not know Intellij or not like to use it. Such technology also paves the way for easier online workspaces or using alternatives editors such as Vim or Emacs.
Metals is a language server for Scala that works with VS Code, Vim, Emacs, Sublime Text, Atom, Eclipse, as well as any other Language Server Protocol compatible text editor. It turns them into powerful but still fast and lightweight IDEs. Metals also works out of the box with such build tools as Sbt, Gradle, Maven and Mill. It’s also possible to use any build tool with support for Bloop like Fury or Seed. The LSP protocol itself works by decoupling the graphical client, which knows how to present information to the user, from a specific language knowledge, which is provided by a separate LSP server, by communicating via a strictly specified protocol. This greatly simplifies the development of any particular language compared to all previous solutions, which highly coupled the language semantics with its presentation.
There is a number of interesting technologies used in Metals, some of which are:
We worked on many features and bug fixes since we joined the project. VirtusLab (thanks to the work of Tomek Godzik, Marek Żarnowski and Krzysiek Bochenek) quickly became the most active maintainer of the project.
Here are some features we delivered:
The team working on Metals is one of the VL’s tooling teams delivering solutions for boosting devs’ efficiency. The project is still ongoing. Metals has a constantly growing base of satisfied users and gets more and more features. Now it’s the 2nd most widely used IDE for Scala.
Since 2010 VirtusLab’s teams have been working with many clients from various industries. We optimize the software development process and apply innovative dev tooling solutions to help companies’ developers focus on their business domain and save time. Our work resulted also in many, other than Metals, open-source contributions, including Scala compiler itself, IntelliJ or Scala IDE. For sure, VL teams like challenges. If you want to collaborate with us, do not hesitate – we’ll definitely handle your project too!