-
Notifications
You must be signed in to change notification settings - Fork 40
Description
Problem
Today, it's possible to reuse the kernel labextension to get up to something that runs on top of all of the pyodide machinery, but it's still pretty non-trivial.
Upstream, ipykernel
provides KernelBase
, which makes it quite easy to depend on ipykernel
, and create another, separately-branded kernel which only has to override the parts you want (or the full IPyKernel
).
Proposed Solution
In this repo, or a new one, add, document, and test a cookiecutter or copier that makes it easier to build new, PyPI- and npm-distributable kernels that depend on jupyterlite-pyodide-kernel
.
Additional context
The two in-the-wild downstream kernels I've worked on are
- pidgy (lead by @tonyfast)
- robotkernel (lead by @datakurre)
Today, they still pretty much need to be hard forks, but with the split from jupyterlite(_core)
, it should be much easier to do this simply now.
If in a new repo, it might be a bit simpler, but runs the risk of getting out-of-date.
If this was included in-tree, it could be tested (up to CI, which is tricky without act
-in-GHA, which is kinda nasty). copier
makes it a good deal easier to properly package these things, and could be made to extend the as-shipped CLI (behind an [extra]
, i guess).
A Future Family Tree of Kernels
flowchart LR
classDef abstract stroke-dasharray:4px
kernel:::abstract --> worker:::abstract --> js --> pyodide
js --> p5
worker --> xeus-*
kernel --> webr
pyodide --> pidgy
pyodide --> robot
pyodide --> lite-builder[#33: lite-in-pyodide]
kernel --> remote:::abstract
remote --> binder
subgraph third-party
pidgy
robot
webr
remote
binder
end
subgraph legend
abstract[abstract\nimplementation]:::abstract
end