owned this note
owned this note
Published
Linked with GitHub
# Jupyter Server 2.0 is released!
We are thrilled to announce the release of Jupyter Server 2.0!
Jupyter Server provides the core web server that powers JupyterLab and Jupyter Notebook.
This release brings many new features and lays groundwork for a more multi-user, (real-time) collaborative Jupyter experience.
## Major Highlights
Below is a short list of highlights that should get all Jupyter users excited :rocket:!
### New Identity API
As Jupyter continues to innovate its real-time collaboration experience, identity is an important component. While we all love that mysterious "Anonymous Jovyan" appearing in our notebooks, we'd all prefer to know who is editing/viewing our documents.
The new [Identity API](https://jupyter-server.readthedocs.io/en/latest/operators/security.html#identity-providers) in Jupyter Server makes this possible. It is a configurable, pluggable API that provides a clear extension point for configuring how Jupyter Server authenticates its users.
Deployers of Jupyter Server can configure Server's default `IdentityProvider` or swap in their own `IdentityProvider` to authenticate users with any auth provider.
### New Authorization API
Enabling collaboration on a notebook shouldn't mean "allow everyone with access to my Jupyter Server to edit my notebooks". What if I want to share my notebook with e.g. a subset of my teammates?
The new [Jupyter Server Authorization API](https://jupyter-server.readthedocs.io/en/latest/operators/security.html#authorization) is a critical step towards making this type of "fine-grained" permission management possible.
It provides a clear, pluggable extension point where we can build authorization layers (e.g. RBAC) backed by any auth provider. Deployers of Jupyter Server can extend Jupyter Server's new `Authorizer` API to control user access in a running Jupyter Server.
### New Event System API
Looking ahead at Jupyter's future, it became clear that there is a whole class of exciting features—like **notebook commenting** or **notifications**—that require a Jupyter ["event system"]((https://github.com/jupyter-server/jupyter_server/issues/780)); these features *react* to events happening in and around a running Server.
This led us to create [`jupyter_events`](https://github.com/jupyter/jupyter_events)—a package that provides a JSON-schema-based event-driven system to Jupyter Server and server extensions. Jupyter Server leverages this new system to emit events from the server. Keep an eye out for future development where we will define more "core" events (similar to the [Contents Service Events](https://github.com/jupyter-server/jupyter_server/blob/main/jupyter_server/event_schemas/contents_service/v1.yaml)) to enable better event-driven functionality in the Server.
## Other major changes
Below is list of other major changes and features that impact folks who extend + customize the Jupyter Server experience. This section is a little more technical in nature, but offers some exciting updates for folks who tweak the default Server.
### New Kernel Websocket API
Jupyter Server now provides a configurable, pluggable layer between the kernel's ZMQ sockets and websocket, called the `KernelWebsocketConnection`. This enables folks to innovate in the space between kernels and the server's clients.
### Server ships its own Kernel Manager
Jupyter Server now provides its own kernel manager class, `ServerKernelManager`. This enables us to innovate the kernel management layer to specifically fit the needs of Jupyter Server and add features like kernel-based events, persistence, and other kernel lifecycle-related functionality
This affects folks who have extended the default `KernelManager` with custom functionality—they will need to derive from this new class in order to take advantage of new server-specific functionality.
### Terminals Service is now a Server Extension
Jupyter Server now ships the "Terminals Service" as an extension (installed enabled by default), instead of a core Jupyter Service.
Most users will not notice this change, but this enables terminals to be optionally _disabled_. For more sensitive deployment environments, this is a big win!
### pytest-jupyter, a pytest plugin for Jupyter
As we worked to increase our test coverage to ~80% (major "thank you" to Steve Silvester!), we built a handy set of [pytest fixtures](https://docs.pytest.org/en/6.2.x/fixture.html) that can benefit Jupyter developers and extension authors.
This led us to release [pytest-jupyter](https://github.com/jupyter-server/pytest-jupyter), a packaged pytest plugin for testing Jupyter core libraries and extensions.
## Changelog
This post was only an overview of what’s new in 2.0! If you are looking for a more complete list of the changes including bug fixes, be sure to have a look at the [changelog](https://).
## Installation
To install Jupyter Server with `pip`:
```
pip install jupyter_server
```
with conda:
```
conda install -c conda-forge jupyter_server=2
```
Here is an overview of the major user-facing changes in Jupyter Server 2.0.
## Documentation
Find our documentation [here](https://jupyter-server.readthedocs.io/en/latest/index.html).
We are still catching up! Please have patience with us as we continue to update our documentation. If this is something you'd be interested in helping us improve, we'd love to have you help!
## Acknowledgements
Massive "thank you" to the whole Jupyter Server Team. The Jupyter Server project is largely shepherded by the amazing folks listed [here](https://jupyter-server-team-compass.readthedocs.io/en/latest/team.html#active-members).
We're also incredibly grateful to the large list of contributors outside the team. Y'all are the best! Thank you for helping us make Jupyter Server better each day!
If you're interested in meeting or getting involved with the team, stop by one of our [weekly community meetings](https://jupyter-server.readthedocs.io/en/latest/contributors/team-meetings.html), or better yet, join our [Contributing Hour](https://github.com/jupyter-server/team-compass/issues/22)!
## About the author
Zach Sailer is a Senior Software Engineer at Apple, where he is the Jupyter Open Source Champion. He is a Jupyter Distinguished Contributor and the Jupyter Server Steering Council Representative.