Language Server Protocols

Apr 11, 2022

New technical wedges are difficult to spot. But one is quietly taking hold for developers. Language servers and their protocols.

Most language services (autocompletion, linting, renaming, formatting) are handled by the IDE. These services require a deep understanding of language semantics, but aren't usually satisfied by a compiler or other tooling.

Language Server Protocol (LSP) has quietly become a standard integration point, and thus a technical wedge. LSP was designed by Microsoft and Red Hat in 2016 for Visual Studio Code. It is a client-server model that decouples language services from the editor. This allows for more and higher quality language servers to be developed and maintained, along with more portability.

The exciting integration point of language servers is the unbundling of the IDE into APIs. While language servers might seem mundane, they might form the basis for more exciting business models – AI code completion (GitHub Copilot), static analysis tools, collaborative features, or even build and CI tooling. The API is general enough to cover any text-based language – such as configuration or DSL. This generality may be a weakness (large enough APIs do little) or a strength.