jupyter-lsp / jupyterlab-lsp

Coding assistance for JupyterLab (code navigation + hover suggestions + linters + autocompletion + rename) using Language Server Protocol
https://jupyterlab-lsp.readthedocs.io
BSD 3-Clause "New" or "Revised" License
1.77k stars 144 forks source link

Reorganize client source with lerna and typescript projects #76

Open bollwyvl opened 4 years ago

bollwyvl commented 4 years ago

To easing proposing the client-facing parts of this codebase to @jupyterlab/jupyterlab, the repository could be re-organized as a monorepo with smaller, independently testable, extensible, and replaceable components with well-defined inter-package interfaces.

This would not block any feature development, but should help keep PRs more focused and less likely to create conflicts.

step 0️⃣#77

step 1️⃣ #79

step 2️⃣

step 3️⃣

bollwyvl commented 4 years ago

remember when i said i would be better about doing more manageable chunks of work? well...

I started taking a look at what it would take to add a hierarchical symbol viewer, and it got a little more... involved than I thought... basically a good chunk of [2] and [3]:

https://github.com/krassowski/jupyterlab-lsp/compare/master...bollwyvl:add-hierarchial-symbol-viewer

here's the yak shave, each one of which should probably be a pr:

So anyhooo... I'll keep going on it, but it would already be unreasonably large to review, breaks tests, etc. so i'll probably have to actually make all those prs above.

however, in trying to get a new end-to-end feature actually working, i'm starting to see the pattern of some relatively radical things we could do to make it fit in the lab architecture:

bollwyvl commented 4 years ago

Screenshot from 2019-11-18 08-08-42

krassowski commented 3 years ago

The features refactor brought as closer to step 3. Useful notes are in the comment https://github.com/krassowski/jupyterlab-lsp/issues/316#issuecomment-673527034.

krassowski commented 2 years ago

The plan in top level comment is slightly outdated, but I will work to make it happen; the next steps after #738 are:

Probably not this year though...

Update thoughts:

Edit: The split-up is also useful since starting with Notebook v7 it will possibly serve not only JupyterLab but also Notebook as demonstrated on RetroLab example. For now we could have