build-server-protocol is a free, open source build & deployment project written in Scala and released under Apache-2.0. It has 547 GitHub stars, 74 forks and 40 open issues, and was last pushed 2 months ago. On this registry it ranks #79 of 81 tracked projects in Build & Deployment, with 5 head-to-head comparisons available.

bsp logo Build Server Protocol

Join the chat on Discord

This project is an effort to improve the integration between language server/editors and build tools. This effort is led by the Scala Center together with the help of other tooling developers in the Scala ecosystem and beyond.

Even though the protocol currently focuses on Scala developer tools, it's designed to be language-agnostic.

You can read the specification here.

The specification text, docs and support libraries for some of the supported languages are automatically generated from the smithy model.

Contribution

If you'd like to contribute to the protocol, please check out our CONTRIBUTING doc.

Maintainers

Current Maintainers

Former Maintainers

  • Chris Kipp (ex-Lunatech) - @ckipp01
  • Jorge Vicente Cantero (ex-Scala Center) - @jvican
  • Ólafur Páll Geirsson (ex-Scala Center) - @olafurpg
  • Tomasz Pasternak (JetBrains/VirtusLab) - @tpasternak
  • Andrzej Głuszak (JetBrains) - @agluszak
  • Justin Kaeser (JetBrains) - @jastice
  • Marcin Abramowicz (JetBrains) - @abrams27

Protocol Changelog

2.2.0 (Unreleased)

  • Add unstable run/printStdout, run/printStderr and run/readStdin notifications
  • Add an optional originId field to TaskStartParams, TaskProgressParams and TaskFinishParams and deprecate it in CompileReport and TestReport to support BSP clients that need to distinguish between multiple reports for the same target.
    • Migration: Use the originId field in TaskFinishParams instead of CompileReport/TestReport to identify the report.
  • Add optional support for environment variables and working directory parameters in buildTarget/run and buildTarget/test requests. Mark arguments and environment variables lists in ScalaMainClass and ScalaTestSuites deprecated as they are replaced by the parameters in the base request.
  • Add cargo (Rust build tool) protocol extension
  • Update diagnostic-related structures to match LSP 3.17
  • Add Rust protocol extension
  • Add buildToolParams to compile/test/run requests
  • Add an optional data field to SourceItem

Frequently asked questions

Is build-server-protocol free to use?

build-server-protocol is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does build-server-protocol do?

Protocol for IDEs and build tools to communicate about compile, run, test, debug and more.

What is build-server-protocol written in?

build-server-protocol is primarily written in Scala. Its source is publicly available at https://github.com/build-server-protocol/build-server-protocol, and it has 547 GitHub stars.