Project Jupyter has a large and growing developer community, one that both includes and extends beyond the . In this post, we’ll take a walk through the wonderful things people are building based on Jupyter technology today.
The is the most well-known application in the Jupyter ecosystem. It is a web-based environment for combining text, equations, code, visualizations, and widgets in executable documents backed by one of . It also supports client- and server-side plug-ins, a fact which has given rise to a that augment the notebook experience ( – – – !)
While Jupyter Notebook is extremely popular, it is not the only notebook user interface available. , , and are all standalone notebook applications that can read Jupyter notebook documents, use Jupyter kernels to one degree or another, and provide their own unique features. and attempt to enable real-time cooperative editing of Jupyter notebooks. pre-configures the classic Jupyter Notebook with extensions in support of genomics and bioinformatics. , , and all embed a Jupyter-compatible notebook experience within an integrated developer environment (IDE). , the upcoming user interface for Jupyter Notebook, hosts notebook editors, text editors, terminals, file browsers, and other tools in responsive, extensible panels.
Notebooks represent just one means of interactive computing through Jupyter. The and are more traditional REPLs backed by Jupyter kernels. , , and the recently-demoed all support interactive code evaluation on kernels through text editors and REPLs. augments a traditional terminal REPL with a browser window to display rich media from kernels.
Applications that aid in the dissemination and consumption of knowledge are another important part of the Jupyter ecosystem. renders any Jupyter notebook document as a static web page for ease of viewing outside a notebook authoring environment. , , and support the display and/or export of notebooks as slideshows. The incubating effort enables the , , and of notebooks as interactive web dashboards.
Hosted services that include Jupyter technology are becoming more prevalent. , , , , , , and all include a Jupyter Notebook interface for general purpose data analytics. and do much the same, but focus the notebook experience on investment research and data science competitions respectively. renders Jupyter notebook files in git repositories and as static web pages. accepts the Jupyter notebook format in their publication lifecycle, and supports code execution in articles using Jupyter kernels (e.g., ).
Jupyter software libraries play a large role in the growth of the ecosystem. The , , and other npm packages born out of the Jupyter Lab effort simplify the creation of new web applications (e.g., Jupyter dashboard server). The transformime, spawnteract, enchannel-*, and other packages in the nteract org provide NodeJS implementations of Jupyter protocols (e.g., kernel spawning). and make it possible for applications to read, write, and transform notebooks (e.g., how nbviewer renders HTML pages and slideshows). lets developers embedded code editors in web pages and execute their contents on remote Jupyter kernels (e.g., how O’Reilly Learning operates). defines a set of interactive web widgets for use in notebooks and beyond (e.g., on standalone web pages). build atop the ipywidgets to support the binding of data on Jupyter kernels to frontend views (e.g., in dynamic notebooks and dashboards).
Reusable components and services also contribute to the development of new Jupyter solutions. facilitates multi-user access to Jupyter Notebooks with security and data persistence. has both a UI and API for spawning temporary Jupyter servers in isolated Docker containers (e.g., for use by Thebe). goes beyond the tmpnb concept to manage the build-deploy-run lifecycle of temporary Jupyter servers in Docker containers, populated with assets from GitHub repositories. The enables Websocket communication between remote clients and kernels (e.g., as in ) as well the ability to deploy notebooks as . And, of course, enable interactive computing in a plethora of languages.
Finally, none of the above would be possible without open , open , open , and open specs (e.g., for , , ). These facilitate collaboration, interoperability, and advancement of Jupyter as a powerful platform for interactive data science and scientific computing.
For More Information
- Did we miss something? Let us know in the comments below!