Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JEP for Optional Features #92

Merged
merged 5 commits into from
Jun 26, 2023
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions jupyter-optional-features/jupyter-optional-features.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
title: Jupyter Optional Features
authors: Johan Mabille (@JohanMabille)
issue-number: xxx
pr-number: xxx
date-started: 2023-01-16
---

# Summary

This JEP introduces Jupyter optional features, which eases the way
JohanMabille marked this conversation as resolved.
Show resolved Hide resolved
a kernel advertises which features it supports, without coupling it
to the version of the protocol that it implements.

# Motivation

Some of the features that were added (the debugger) or proposed (the subshells)
may require a lot of work from kernel authors to implement them. Besides, the
JohanMabille marked this conversation as resolved.
Show resolved Hide resolved
changes they introduce on the protocol are self-contained; it is possible for a
kernel to not support them without altering its exepected behavior regarding the
rest of the protocol, and it is easy for a client to enable or disable such a
feature as long as it knows whether the kernel supports it. By the way, the
debugger is already optional, although it does not explicitly state it.

The goal of this JEP is to introduce the notion of optional feature in the protocol
JohanMabille marked this conversation as resolved.
Show resolved Hide resolved
and to have an explicit list of such features. This way, we do not prevent kernel
authors from upgrading to a more recent version of the protocol when we introduce
a new feature that may be complicated to implement and not mandatory for them.

# Proposed Enhancement

We propose to add a new `supportedFeatures` field to the `kernel_info_reply` message.
This field is a list of optional features that the kernel supports. The boolean field
`debugger` should be deprecated, as it would duplicate a possible value of the list.

An optional feature can be a list of additional messages and/or a list of additional
fields in different existing messages. When a feature introduces new messages, it is
its responsibility to specify the order of these messages when it makes sense. Under
no circumstances this feature should alter the order of already existing messages,
nor interleave new messages between already existing messages.

The documentation should indicate which optional feature a message (or a field of a
message) is linked to when it is relevant. This would ease the implementation of
new kernels and the upgrade to new versions of the protocol.