Skip to content

Project Ideas ScanCode Toolkit: License Language Server Protocol server for IDE integration

Philippe Ombredanne edited this page Mar 29, 2022 · 1 revision

ScanCode Toolkit: License Language Server Protocol server for IDE integration

This project would implement a Language Server Protocol server for license and copyright that would be using ScanCode toolkit and provide live license and copyright feedback directly in IDEs. It would also provide a plugin for integration in at least one IDE such Atom, VSCode or Eclipse.

ScanCode can detect licenses, copyright, packages and a few more things:

If you think of these as being some kind of a "language" and scancode being the "compiler/validator" for this language, then we would like to see thing such as:

  • ability to run a scan on the current file or project
  • highlighting of the text where licenses, copyright emails, urls, package data are detected
  • some kind of a red underlining (e.g. a problem) for things not detected as a license exactly
  • code completion when drafting a "copyright" and an "SPDX-License-Identifier: ..."

and possibly a few extra goodies to design!

If you consider scancode as a license and copyright linter, then this could be similar to running jslint or pylint (except this is not programming language specific)

This could also suggest replacing a notice by an SPDX-License-Identifier as in https://github.com/nexB/scancode-toolkit/commits/833-espedexify and https://github.com/nexB/scancode-toolkit/issues/833

This is a large size project idea.

Some Q&A:

  • What exactly are we trying to achieve through the LSP for ScanCode?

We want to provide life feedback on licenses, copyright and dependencies right in the IDE, using a scancode (toolkit or scancode.io) backend.

  • What features will we be implementing (completion, definition, documentHighlight, etc.) ?

The exact set is TBD, but being able to provide highlighting would likely be the first thing. Then completion on SPDX-License-Identifier could come next. The ability to suggest a new better notice would be great too (using scancode-analyzer as a backend)

Clone this wiki locally