Что это такое?
Это репозиторий Language Server Protocol (LSP) — спецификации Microsoft, которая определяет единый протокол для language-серверов: компонентов, с которыми редакторы и IDE общаются, чтобы получить языковые возможности вроде автодополнения.
Это программа или библиотека, которую я устанавливаю, или что-то другое?
Ни то, ни другое — это репозиторий со спецификацией. Здесь лежат документы протокола, а не рабочий код: устанавливать нечего, в репозитории нет ни скриптов сборки, ни зависимостей.
Как начать использовать это в своём инструменте?
Прочитайте спецификацию на https://microsoft.github.io/language-server-protocol/ и реализуйте описанные в ней сообщения в своём language-сервере или в клиенте редактора. Чтобы работать с самой спецификацией, ничего устанавливать не нужно.
Если я следую спецификации, мой редактор сразу заработает — в чём подвох?
Спецификация описывает только протокол, готового кода в ней нет. Обе стороны — и language-сервер, и клиент редактора — придётся реализовать самому, либо взять готовую библиотеку с реализацией.
Это для обычных пользователей или для тех, кто делает редакторы?
В первую очередь для разработчиков инструментов: авторов редакторов, IDE и language-серверов, которым нужно, чтобы их продукты умели работать друг с другом. Обычные пользователи выигрывают косвенно — когда их редактор понимает этот протокол.
Насколько LSP прижился в редакторах и инструментах?
Очень: репозиторий публичный с сентября 2015 года, поддерживается в организации Microsoft и собрал около 13 000 звёзд. Его повсеместно считают стандартным способом общения редакторов с language-серверами.
Зачем вообще нужен общий протокол?
Потому что language-сервер можно написать один раз и использовать в любом редакторе, который понимает протокол, — вместо того чтобы каждый инструмент отдельно встраивал поддержку каждого языка. В этом и есть весь смысл общего протокола из описания.
Мне нужно быть TypeScript-разработчиком, чтобы этим пользоваться?
Нет. В репозитории указан язык TypeScript, но по сути это документы со спецификацией. Реализацию LSP можно написать на любом языке — продукт здесь протокол, а не код.
What are similar projects?
rust-analyzer, monaco-editor, ale, rfcs, toast, htn_planner, dsh-std, spec
Which topics is it in?
language-server-protocol, standards, autocomplete, lsp, specification, protocol, ide, microsoft, editor, json, documentation, api