You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
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).
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,
ipykernelprovidesKernelBase, which makes it quite easy to depend onipykernel, and create another, separately-branded kernel which only has to override the parts you want (or the fullIPyKernel).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
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).copiermakes 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