microsoft / language-server-protocol

Defines a common protocol for language servers.
https://microsoft.github.io/language-server-protocol/
Creative Commons Attribution 4.0 International
11.12k stars 782 forks source link

Review/give feedback on the build server protocol (BSP) #512

Open jvican opened 6 years ago

jvican commented 6 years ago

Announcement of the Build Server Protocol (BSP) is here.

As explained in https://github.com/Microsoft/vscode/issues/52462, the BSP team at the Scala Center and JetBrains is interested in listening to feedback on the protocol. The protocol closely follows LSP's design. I think we could gain a lot of interesting insights from the maintainers of this repository.

(The major difference is the way we handle file watching endpoints; we use static capabilities + specific file watching endpoints instead of dynamic capabilities -- we think this design is simpler and easier to implement in both clients and servers, but it's less relevant in the grand scheme of things.)

I'm currently working on an official website built on Docusaurus to aggregate all relevant information relevant to the specification and the motivation. In the meanwhile, I encourage you to read the following links to grasp which problem we're solving and how we're solving it:

  1. The specification of BSP
  2. Which MxN problem is solved
  3. What role IDEs and non-IDEs (editors) play
PavelSosin commented 5 years ago

Having some experience in LSP development/integration I'm wondering why the BSP topic is narrowed to scala. There are so many builders, most of them run or can be run as servers as a part of CI, some of them are dockerized. Could you propose some Typescript library? Java official library is not enough because Typescript is used intensively on both sides. In the scope of eclipse/che 7 architecture BSP should serve all kinds of builders and EDIs uniformly.

jastice commented 5 years ago

BSP is currently focused on Scala because it happens to be designed by Scala developers to solve problems in the Scala ecosystem ;)

BSP is absolutely designed with supporting more tools and languages outside of Scala in mind, but we can only work on it once we have some basic level of adoption and experience with implementing it.

jvican commented 5 years ago

Indeed, as @jastice mentions, this is how we introduce the protocol in the github read me:

This project is a work-in-progress effort to improve the integration between language server/editors and build tools. This effort is led by the Scala Center and Jetbrains, together with the help of other tool developers in the Scala ecosystem.

Even though the protocol focuses on Scala developer tools, it's designed to be language-agnostic. We're looking for third parties in other programming languages to join this effort.

fiksen99 commented 2 years ago

Is BSP as a concept still under active use and development? We have a need for this too - multiple build systems we need to integrate our language server into that we'd like a common interface for.

Assuming so, I'd love to see a link out from LSP specification to BSP as a "joint partnership" type of deal?

jastice commented 2 years ago

Is BSP as a concept still under active use and development? We have a need for this too - multiple build systems we need to integrate our language server into that we'd like a common interface for.

Yes, BSP is still being actively developed and is now supported by several build tools including Bazel. I'd be curious to hear about your use case, if you'd like to discuss it please get in touch!

thejcannon commented 2 years ago

Speaking of Bazel... I'd love to see BSP mapped out for Python, and then support added to Pantsbuild. As a project maintainer I'm happy to help facilitate the Pants-side :wink:

jastice commented 2 years ago

@thejcannon we do have a Python Extension definition, but as of yet, no real implementations.