Jupyter Notebook 6.5.0 Release Candidate

Rosio Reyes
Jupyter Blog
Published in
5 min readSep 15, 2022

--

We’d like to announce the Notebook 6.5.0 release candidate which is available on PyPI.

Notebook 6.5.0rc0 on PyPI
Notebook 6.5.0rc0 on PyPI

Notebook 6 vs Notebook 7

Jupyter Notebook is a longstanding project that has been loved by many for years. Even with the 2018 release of JupyterLab, a feature-full user interface with a more modern codebase, many people have continued to use Jupyter Notebook. In an effort to continue providing updates to the UI that people know and love, many developers have been working on Jupyter Notebook 7. This transition was outlined in the Jupyter Enhancement Proposal or JEP 79, which highlights the motivation behind an updated codebase and the plans that are currently being carried out. Notebook 7 uses components from JupyterLab and the Jupyter Server package as does JupyterLab, and the UI provides an experience much like the classic user interface that Jupyter Notebook users are familiar with. There are various new features which will be readily available, and improvements are to be made in Jupyter Notebook 7.

Due to this upcoming release, there were some necessary changes that had to be made to Jupyter Notebook 6. Jupyter Notebook 6 has lived in the jupyter/notebook repository whose main branch reflects Notebook 7. Notebook 6 uses the same Python Tornado server architecture, and the NotebookApp class that has been present all through previous Notebook releases. However, as of Notebook 6.5 the static HTML/CSS/JS assets that constitute the user interface have been moved to a different repository, the jupyter/nbclassic repository. Notebook 6.5 aims to be end of life in a reasonable timeframe. With this in mind, Notebook 6.5 will focus on security and bug fixes rather than new features.

NbClassic

With the more sustainable Notebook 7 in the horizon, and Notebook 6.5 being EOL, the NbClassic project is the repository through which enhancements and new features can be offered. NbClassic is a forked version of the 6.5.x branch of Notebook, refactored as a Jupyter Server extension. Through this, users can benefit from the updates to other parts of the ecosystem such as Jupyter Server. While the classic user interface will be available through both Notebook 6 and NbClassic, immediate updates to the classic Notebook UI will be provided through NbClassic.

Since as of Notebook 6.5, the static assets for the UI have been removed from the Notebook repository and are made available to Notebook 6.5 through NbClassic, and the NbClassic repository is also where issues with the classic user interface should be reported. The NbClassic project aims to provide intermediary support to those users of Notebook 6 who for various reasons may not yet be able to upgrade to Notebook 7. As NbClassic can be seen as a drop-in replacement to Notebook 6, its support and lifecycle will follow the one defined for the Notebook 6 product line. For more details on the maintenance of Notebook projects please have a look at the Maintained versions section in the readme.

As from version 0.4.0, NbClassic is a Jupyter Server extension that is backwards compatible with most extensions built for Notebook for version 6. If your extension does not work on NbClassic, we invite you to open an issue on the NbClassic GitHub repository so we can help you resolve it.

Some Use Cases

One reason a user might not be able to update may be due to a user toolset that incorporates an extension that has not yet been ported to Notebook 7 and JupyterLab. In these cases, it will be important for extension developers to place an upper bound in their Notebook dependencies so that only versions below Notebook 7 will be installed. There may also be users who have both JupyterLab extensions and Notebook extensions as a part of their toolset.

Another scenario may include DevOps Engineers who may provide Notebook 6 or 7, NbClassic, and JupyterLab to users to account for the different needs of many teams. In that scenario, the user can choose his user interface that runs on the same server port. For example if both Notebook 7 and NbClassic are installed, the default interface will be Notebook 7 under /tree URL while the NbClassic interface will be available under nbclassic/tree URL

Compatibility

For the various use cases, we aim to foster the coexistence of these projects while users and developers begin adapting to Notebook 7. Jupyter Notebook 7, JupyterLab and NbClassic share the same server architecture, allowing users to more feasibly use them interchangeably. On the other hand, Jupyter Notebook 6 will only be tied to NbClassic for the static assets that it will use. Extensions that work with Notebook 6 will be compatible with NbClassic while extensions developed for JupyterLab will work with Notebook 7. If users wish to use the upcoming Notebook 7 but have the ability to occasionally work with extensions that have not been ported, NbClassic will provide this. You can use NbClassic with the CLI command jupyter nbclassic .

DevOps Engineers will have to use a slightly different command to enable the notebook extension on NbClassic. For example, they will have to use jupyter nbclassic-extension instead of jupyter nbextension. We are working on updating the documentation to reflect those changes.

Next Steps

With the release of Jupyter Notebook 6.5.0rc0, we hope to reach those who continue to use Notebook 6 and hear about your experience. The Jupyter Notebook 6.5.0 release candidate can be installed with pip: pip install notebook==6.5.0rc0. For those who wish to continue using a user interface much like the classic Notebook that is familiar, Notebook 7 has an alpha release and will provide a well supported and evolving user interface. Alongside working to release Notebook 6.5 and the upcoming Notebook 7 release, we will be continuing to work on preparing NbClassic to be used with the various other Jupyter projects and gearing up for the first major release.

We would be happy to hear about your experience using Notebook 6.5.0rc0. For any questions, feedback, or bug reports, we invite you to open an issue in the NbClassic repository.

Sincerely,

Project Jupyter

About the Author
Rosio Reyes is a Software Engineer at Anaconda working as a part of the OSS Jupyter team. She is a Jupyter Notebook Steering Council Member and contributes to the Notebook and NbClassic projects.

Thank You to Contributors to this blog
Eric Charles is a Software Engineer at Anaconda, Datalayer and Quansight working as a Tech Lead on the OSS Jupyter team. He is a Jupyter contributor and a member of the Jupyter Notebook Steering Council. He contributes to many Jupyter Projects and provided an outline for the blog as well as many edits and additions.

Eric Gentry, a Software Engineer at Anaconda working on the OSS Jupyter team. He is a Jupyter Notebook Steering Council Member and contributes to the Notebook and NbClassic projects. He also provided many edits for the blog.

Special thanks to the Jupyter Notebook Meeting Group for their feedback.

--

--