In a recent conversation in the JupyterLab team compass, @saulshanabrook brought up an interesting point around connecting more with the VSCode / Theia ecosystem. This seems like a really complex but important point to think about given the popularity of VSCode and the fact that it will increasingly support and extend notebook functionality. I think it is also relevant to the extent that one of Jupyter’s missions is to promote open standards, protocols, and technology across communities.
Relevant projects using VSCode/Theia
- The Julia Language’s “Juno” IDE is now a distribution of VSCode: https://junolab.org/
- Plotly Enterprise’s “Jupyter Notebooks” are actually Theia running the notebooks extension: https://twitter.com/plotlygraphs/status/1281672032955047938
- VSCode is the default notebook interface in GitHub CodeSpaces: https://code.visualstudio.com/docs/python/jupyter-support
- Theia is the interface in gitpod, which is similar to GH CodeSpaces: https://www.gitpod.io/docs/ide/
Challenges to using Theia/VSCode
As others rightly pointed out, there are two big challenges to “depending” on VSCode:
- VSCode itself is a Microsoft product, not an open project. It has a proprietary marketplace and several proprietary extensions.
- While VSCode’s underlying components are often openly-licensed, they are generally controlled by Microsoft without a community governance model.
I think that the first challenge could be addressed by the Theia project which (to my knowledge), is a distribution of UI elements that is heavily-influenced by VSCode, but that is community-governed (as part of the Eclipse foundation) and more flexible/extensible. They also have their own “open” extension protocol to counter Microsoft’s proprietary one. Here is an interesting interview that discusses the differences between Theia and VSCode. (Note that this doesn’t resolve the second challenge listed above.)
To be honest, I’m not sure what the technical challenges would be. My guess is that JupyterLab makes a lot of assumptions about Lumino (previously, Phosphor) that would be hard to disentangle. If it were only possible to have an “all or nothing” result, then this might be a significant technical undertaking. If however it’d be possible to make piecemeal connections with the Theia ecosystem, perhaps that would work.
As time moves forward, notebook support will grow and be extended in both Theia and VSCode. I think there is value in having this process done in partnership with the Jupyter community (especially at the level of standards and protocols). Beyond this, Theia is an interesting “UI Sandbox” that could be used to build Jupyter experiences in a way that streamlines with the ever-growing extension marketplace in VSCode.
I’m curious what folks think about all of this - whether they see a path towards collaborating with, or using, components in the Theia ecosystem to facilitate Jupyter experiences. Or alternatively, is the fact that Microsoft largely controls the components in that ecosystem a deal-breaker? Or are there technical blockers in Theia that would make it impossible to accomplish what Jupyter wishes to accomplish within that technical framework?