Can anyone speak to the Language Server Protocol or "LSP"? Every time I read "protocol" and "micro services" I hear hefty TCP stacks and latency that would never work for a per-token IDE colorizer :) But, I can also imagine an array of function pointers being the "protocol". And this LSP thing does sound like a good separation of concerns/ sane foundational design for end user programming language tools (Vim falls over here and there on certain more complex Bash-isms for example - reusing a standard back end does sound kinda right). Anyone know what LSP really is and why it is justified to call it a "micro service"? TIA Zenaan ----- Forwarded message from Eclipse Foundation <newsletter@eclipse.org> ----- From: Eclipse Foundation <newsletter@eclipse.org> To: eclipse.org@freedbms.net Reply-To: Eclipse Foundation <newsletter@eclipse.org> Date: Wed, 24 May 2017 09:18:51 +0000 Subject: Eclipse Newsletter - Language Server Protocol (LSP) 101 Eclipse Newsletter - 2017.05.24 ** Language Server Protocol ------------------------------------------------------------ ** Editor's Note ------------------------------------------------------------ In this month's newsletter we will re-thinking how advanced editor support for all kinds of languages is built. The current state of the art is implementing support for each language like Java, PHP or C++ independently for every IDE. This labor-intensive and error-prone approach is about to change with the introduction of the Language Server Protocol (LSP). The more advanced the tooling you are developing, the closer you are to writing a full-blown compiler/interpreter for the language. This is a huge waste of time, as the developers of the language have already written these tools, but often not with IDE requirements in mind. They are usually designed to only handle complete, valid source files, while an IDE usually has to handle source files that are currently being edited and thus by definition incomplete. Another caveat about the traditional approach is attracting contributors. Let's say your IDE is written in Java and provides PHP support and some PHP developers are pointing out bugs. Many of them would probably love to fix those bugs themselves, but the completely different language creates a high barrier for contribution. Last but not least, language tooling developers not only have to support a broad range of IDEs, but they also need to chase after new languages features/versions. What about Java 10 features? PHP 8? Swift 4?... The LSP developed by Microsoft for Visual Studio Code, aims at fixing these shortcomings. It is a language and IDE agnostic protocol which clearly separates language semantics from UI presentation. Language developers can implement the protocol and benefit from immediate support in all IDEs, while IDE developers who implement the protocol get automatic support for all these languages without having to write any language-specific code. This way both parties can focus on what they do best; language developers can ensure that auto completion proposals and error markers match the language specification perfectly, while IDE developers can focus on providing a great user experience. Even better, both parties can implement the protocol using the technology of their choice. The Eclipse IDE can consume the protocol with a Java API, while a PHP language server might be implemented in PHP. Did we just find the Holy Grail? Not quite yet. The Language Server Protocol is still limited. You do not yet get all the wonderful Java tooling that Eclipse JDT provides. But it's a paradigm shift. As I see it, IDEs will become a set of UI clients for several tooling services, all communicating via standard protocols. Microservices are everywhere, and they are coming to your IDE very soon. Read the 8 great articles below to learn more! Mikaël Barbero (@mikbarbero (http://eclipse.us6.list-manage2.com/track/click?u=eaf9e1f06f194eadc66788a85&id=37e730fb5b&e=ff636f45ea) ) http://eclipse.us6.list-manage1.com/track/click?u=eaf9e1f06f194eadc66788a85&id=d6a8a6dfa5&e=ff636f45ea Language Server Protocol (http://eclipse.us6.list-manage1.com/track/click?u=eaf9e1f06f194eadc66788a85&id=59e9aa47df&e=ff636f45ea) What is the Language Server Protocol? How was it created? All your questions are answered by the Microsoft team in this article. http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=cdfefc9fdc&e=ff636f45ea Implementing a JSON-RPC Protocol with Eclipse LSP4J (http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=84da074d6e&e=ff636f45ea) Get a introduction to the core concepts of Eclipse LSP4J and learn how to implement a JSON-RPC protocol. http://eclipse.us6.list-manage1.com/track/click?u=eaf9e1f06f194eadc66788a85&id=9e483f1aae&e=ff636f45ea Using Language Servers to Edit Code in the Eclipse IDE (http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=d9f000c6ce&e=ff636f45ea) Learn how the Eclipse IDE is able to consume language servers to provide rich editor features and interact with them without having to learn anything new. http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=2b80db7cca&e=ff636f45ea Eclipse JDT Language Server Project (http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=3f87e8fe09&e=ff636f45ea) What is Eclipse JDT Language Server (jdt.ls)? It's an open source Java language specific implementation of the Language Server Protocol. Find out more! http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=6226dbcac9&e=ff636f45ea Building & Running a Language Server with Eclipse Xtext & Theia (http://eclipse.us6.list-manage1.com/track/click?u=eaf9e1f06f194eadc66788a85&id=9545aed46a&e=ff636f45ea) Learn how to implement a Language Server for an arbitrary domain-specific language (DSL) using Eclipse Xtext and then run it in an IDE. http://eclipse.us6.list-manage2.com/track/click?u=eaf9e1f06f194eadc66788a85&id=d3d3719583&e=ff636f45ea LSP Support in Eclipse Che (http://eclipse.us6.list-manage2.com/track/click?u=eaf9e1f06f194eadc66788a85&id=31e9c27aa7&e=ff636f45ea) Eclipse Che, a developer workspace server and cloud IDE, now offers support for the Language Server Protocol. Read this article to find out more. http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=f32a2d7d94&e=ff636f45ea Getting Started with LSP in Eclipse Orion (http://eclipse.us6.list-manage1.com/track/click?u=eaf9e1f06f194eadc66788a85&id=bde6388b7e&e=ff636f45ea) Read this article to discover how to get started with the Language Server Protocol in Eclipse Orion. http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=2420628c13&e=ff636f45ea Sourcegraph, Code Intelligence, and the Language Server Protocol (http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=fefc054f5c&e=ff636f45ea) How is the Language Server Protocol being used by companies like Sourcegraph? ** Eclipse Announcements ------------------------------------------------------------ * It’s time to organise Eclipse Oxygen DemoCamps (http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=713a13f7d2&e=ff636f45ea) * Case Study: Deploying Eclipse IoT on Germany's DB Railway System (http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=d59873543f&e=ff636f45ea) * EclipseCon Europe 2017 | Call for Papers Open (http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=a6a5d996c9&e=ff636f45ea) * Program Ready for EclipseCon France 2017 (http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=1898701092&e=ff636f45ea) * New Eclipse IoT Open Testbeds (http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=308b7382dc&e=ff636f45ea) ** Eclipse Community News ------------------------------------------------------------ * Devoxx4Kids comes to Ottawa June 2017 (http://eclipse.us6.list-manage1.com/track/click?u=eaf9e1f06f194eadc66788a85&id=4ff882b411&e=ff636f45ea) * Eclipse IoT Group Unveils New Eclipse Kura and Eclipse Kapua and Open Testbeds (http://eclipse.us6.list-manage1.com/track/click?u=eaf9e1f06f194eadc66788a85&id=46b69820b9&e=ff636f45ea) * Recap on Eclipse ToolMakers’ Day (http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=51f14fae6a&e=ff636f45ea) * Mini-book about Reactive Microservices with Eclipse Vert.x (http://eclipse.us6.list-manage2.com/track/click?u=eaf9e1f06f194eadc66788a85&id=117818bfe0&e=ff636f45ea) http://eclipse.us6.list-manage.com/track/click?u=eaf9e1f06f194eadc66788a85&id=0d38c44562&e=ff636f45ea