An introduction to Iodide and Pyodide: tools for doing data science entirely in the web browser.
We will present a case study of how rearchitecting our data science tools to move computation into the web browser has improved collaboration among data scientists at Mozilla, and in the broader open source community.
Computational notebooks based on the traditional client/server model (such as Jupyter, Zeppelin, etc.) require specialized IT resources to deploy, which makes it harder for data scientists to replicate and reuse each others’ work, whether on the open web or behind a corporate firewall. The Iodide project provides a development environment where computation happens entirely in the web browser, making sharing as simple as posting content to a website.
The project has 3 components:
A frontend for notebook-like experimentation and the publishing of interactive reports and dashboards. While this began in the model of a traditional computational notebook, it has since grown some significant user experience improvements beyond that. Since all computation happens in the browser, the wide selection of browser-side visualization and UI libraries are available to the data scientist in a natural way.
Data science libraries that can run in the browser. This is two-pronged: On the one hand is curation of the nascent Javascript data science ecosystem. On the other, the more mature Python data science ecosystem has been ported to run in the browser by compiling it to WebAssembly. Additionally, we are experimenting with bringing Rust data science tools to the browser, and this could grow to include R or Julia. Apache Arrow acts as the important glue between all of these runtimes.
A server for collaboration and interoperability. Importantly, the server doesn’t provide computation kernels. It is only tasked with collaboration (sharing, forking and commenting on notebooks) and data access (accessing data from remote sources, through database queries or tools like Dat).