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.
Codenvy’s New Language Server Protocol Reduces Programmer Envy
“In the case of all three of our organizations—Red Hat, Codenvy and Microsoft—we’ve been contributing to a number of programming languages and recruiting a number of programming languages to participate,” he said. “We’ve got nine committed at this point. Red Hat is doing Java, Microsoft is doing TypeScript, C and C++, Codenvy is working with others on xText, XML, JSON and others. We’ve got most of the major languages, and it won’t take us long to get the rest.”
Indeed, the programming language servers available today include JSON, C++ and Powershell, which are available in VS Code or VS Code extensions. And more language servers are planned to support the protocol later this year, including C# by the OmniSharp project, xText and R by Typefox, JavaFX by Ensime and CSS by Microsoft. Red Hat has open-sourced a project working to provide the first stand-alone Java language server, which it proposes to donate to the Eclipse Foundation, Jewell explained.
Jewell noted that some have questioned why a project like this didn’t happen a long time ago and he cited two reasons. One is the need for true community support. Major groups of tools and language providers need to commit to the effort, and that was difficult in the past because battles were drawn along proprietary lines with languages and language extensions used as weapons or defenses.
So community is one thing, and another is that the political/competitive climate has changed such that competition is no longer at the language level, Jewell said.
“The political environment now encourages this,” he said. “A decade ago, Microsoft and Red Hat and IBM and whatnot made their platform bets on a particular programming language. But that’s all changed. Now everything is API-driven with microservices, which give developers choice of languages.”
Any more, a developer’s commitment to a vendor’s platform does not mean they’re committed to that vendor’s language. So all these vendors have changed their minds and are saying we need to make it possible for these languages to work with us.
“There’s a spirit of contribution and commitment that’s never existed before,” Jewell said.
“We see a tremendous opportunity to improve the way software is created, especially in the cloud, and we are focused on bringing that innovation to our customers in a way they can more easily adopt,” Harry Mower, senior director of developer programs at Red Hat, said in a statement. “Developer choice is a key area for us and interoperability of programming languages and tools is an important part of Red Hat’s developer strategy.”
Developer choice indeed. Microsoft in 2014 launched its effort to enable developers using any language and platform to use its .NET Framework and tooling to build applications. The software giant then signaled its intention to further empower developers to have even more choice when it joined the Eclipse Foundation in March and announced its efforts regarding Eclipse Che. The Eclipse Che ecosystem is a community-driven open-source cloud IDE, workspace server and plug-in platform supported by Codenvy, Microsoft, Red Hat and SAP.
The new language server protocol planned by Microsoft, Red Hat and Codenvy aims to make life considerably easier for a wide variety of developers and software projects,” said Charles King, principal analyst at Pund-IT.
“In essence, rather than being forced to use editing tools required by specific programming languages, the new language server protocol will eventually allow developers to utilize the editing tools they prefer and are most familiar with for virtually any project,” King said. “That should reduce training requirements, speed the time to complete projects and enhance developer experience, all good things by any measure.”
The new language server protocol also opens the door for more developers to become polyglot developers—that is, they routinely use more than one programming language to get their jobs done.
“What we’re starting to do is extracting away the complexity of programming with different languages so that developers can focus more on writing code with whatever language they want,” Jewell said.