Pyodide is a way to run Python “natively” in a browser via web assembly (wasm). About two years ago, @bollwyvl threw together some prototype work on a Pyodide-based Jupyter kernel called jyve. That was forked and extended to be a Jupyter labextension (I’m not sure if the author is on this discourse), also done about two years ago. Jyve is even mentioned in a May 2019 open ticket in the Pyodide issues.
I am also aware that Iodide exists, not to be conflated with Pyodide although they’re written by the same team (git / blog post / demo). While Iodide does offer a Jupyter-esque interface, it is not Jupyter in a browser.
To the topic of this post: is there anything else going on in the Jupyter/Pyodide realm? The best answer would be, “yes you can serve a static page (with wasm) that spins up a Jupyter single-user instance running in Pyodide, a Pyodide-based kernel, and Notebooks ‘just work’ to include rendering input()
and ipywidgets.” I don’t expect that exists, or it would have absolutely made the rounds. But is there anything between the jyve prototyping two years ago and now that we should look at as “prior art”?
Ultimately, the use-case here is having another infrastructure option for executing Jupyter Notebooks – in this case needing only the browser itself and not even a Binder or similar corporate infrastructure solution. I’ll acknowledge ahead of time that there are a myriad of other challenges to address running a Notebook designed in a traditional Jupyter environment in Pyodide, such as http requests/networking needing to go through the the javascript api instead of requests/sockets.
Thanks,
-Kafonek