Codenvy's New Language Server Protocol Reduces Programmer Envy

Codenvy, Red Hat and Microsoft collaborate on new language protocol for developers to integrate programming languages across code editors and IDEs.


Codenvy, Microsoft and Red Hat announced on June 27 the adoption of a language server protocol project to provide a common way to integrate programming languages across code editors and integrated development environments (IDEs).

The companies announced the new protocol during the opening general session of the DevNation 2016 conference in San Francisco. The project originated at Microsoft, who introduced it to the Eclipse Che IDE platform project, announced earlier this year at the EclipseCon conference in Reston, Va. The new protocol extends developer flexibility and productivity by enabling a rich editing experience within a variety of tools for different programming languages.

"Historically, most programming languages have only been optimized for a single tool," Tyler Jewell, Codenvy CEO and Eclipse Che project lead, said in a statement. "This has prevented developers from using the editors they know and love, and has limited opportunities for language providers to reach a wide audience. With a common protocol supported by Microsoft, Red Hat and Codenvy, developers can gain access to intelligence for any language within their favorite tools."

Jewell told eWEEK the "dirty problem" with development tools for the past decade has been that developers had to choose a programming language and then be stuck with the tooling available for that language—because the tooling capabilities are always bound to proprietary APIs and componentry that changes for each programming language.

"So if you wanted to change programming languages, you generally had to change your IDE," he said. "And if you have an IDE that you like, there's generally not an easy way to get multiple programming languages supported on it."

However, the new Language Server Protocol makes it possible for any IDE to work with any programming language. So with that, developers can choose their tools and work with any programming language, and programming language authors can write their language as they see fit.

Jewell said the Language Server Protocol is an open-source project that defines a JSON-based data exchange protocol for language servers, hosted on GitHub and licensed under the creative commons and MIT licenses. By promoting interoperability between editors and language servers, the protocol enables developers to access intelligent programming language assistants—such as find by symbol, syntax analysis, code completion, go to definition, outlining and refactoring—within their editor or IDE of choice, he said.

The first two tools that are supporting this capability are Eclipse Che—the next-generation Eclipse IDE—and Microsoft's Visual Studio Code, Jewell said. Codenvy helped to achieve Eclipse Che support, and Microsoft, as originator of the protocol, put its engineers to work to get VS Code to support it.

"The Eclipse Che team and Red Hat have also announced they're adopting Visual Studio Code's Language Server Protocol—an open protocol that enables some of the rich editing features in VS Code," Joseph Sirosh, corporate vice president of the Data Group at Microsoft, said in a blog post. "This shows that the open-source contributions from VS Code are being adopted by tool and language providers, giving developers the flexibility to pair their favorite language with their favorite tools."

"We have defined the common language server protocol after integrating the OmniSharp for C# and TypeScript servers into VS Code," Erich Gamma, a Microsoft Distinguished Engineer and leader of the Visual Studio Code project, said in a statement. "Having done a language server integration twice, it became obvious that a common protocol is a win-win for both tool and language providers: in this way, any language provider can make their language support available so that it is easily consumable by any tool provider."

Before joining Microsoft in 2011, Gamma was a distinguished engineer at IBM where he was a key leader and contributor to the Eclipse platform and a leader of the Eclipse Java Development Tools project.

With the Language Server Protocol, programming language providers can support multiple tools across a variety of operating systems. And the project has created a language server registry, where language servers are published as part of a global registry, built by Codenvy as an Eclipse project and hosted by the Eclipse Foundation, to make language servers discoverable for any tool to consume, Jewell said.