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

Expose kernels to 3rd party extensions #5532

Closed
5 of 7 tasks
DonJayamanne opened this issue Apr 15, 2021 · 2 comments
Closed
5 of 7 tasks

Expose kernels to 3rd party extensions #5532

DonJayamanne opened this issue Apr 15, 2021 · 2 comments
Assignees
Labels
feature-request Request for new features or functionality notebook-kernel Kernels issues (start/restart/switch/execution, install ipykernel)

Comments

@DonJayamanne
Copy link
Contributor

DonJayamanne commented Apr 15, 2021

This is a hackathon project, and the some of the original requirements can be found here #3998

Goal: Expose kernel to 3rd party extension authors so they can build on top of Jupyter extension

Possible extensions (prototyped):

  • Other extensions can now execute code against kernels
    • User will be asked to allow such exensions to execute on behalf of them
    • 3rd party extensions can install missing packages, & the like (prototyped)
    • 3rd party extensions can inject kernel exensions (prototyped)
    • 3rd party extensions can intercept kernel execution requests
  • SOS Jupyter Kernel (partially working)
    • We need cell pre-execute
  • Support functionality found in Jupyter Sidecar widget
    • Allow user to open widgets outside the notebook.
  • Custom variable explorer
    • Support for other languages (currently working, Python, R, Scala, C#, F#)
    • Support for variable visualizers (currently working for Python)
    • Other extensions can build on top and support more visualizers for each language
    • TOOD:
      • Provide extensibility for other extensions to provide details of each variable so that the tree view can be augmented (e.g. drilling down into details of each variable)
      • Ability to drill down into dict, dataframes in the variable viewer (partially protototyped)
  • Better plot viewer
    • Custom visualizer for variable, to open a plot in a seprate view (use ipympl)
    • User doesn't need to isntall ipympl (source shipped with 3rd party extension)
  • Custom data frameviewer
    • Basically similar to rest, display dataframe variable with the qgrid widget
    • Ship qgrid widget with 3rd party extension
    • Partially working
  • Open altair (vega) plots with vega viewers
    • Convert vega into JSON, use 3rd party extensions to view the vega json data
    • I.e. more custom visualizers, just built on top of this new functionality

Screen Shot 2021-04-15 at 11 29 23
Screen Shot 2021-04-15 at 13 24 11
Screen Shot 2021-04-15 at 12 51 03

@DonJayamanne
Copy link
Contributor Author

DonJayamanne commented Mar 29, 2022

Todo:

  • Publish sample extension(s)
  • Documentation (Wiki):
    • How to enroll into API
    • How to debug/test
    • Guidelines
  • Release management
    • How do we notify changes (since we have a list of who can use this API, we can control this)
    • How do we introduce breaking changes into the API (stable/insiders releases)
      • Do we add entry into package.json->engine (our code can inspect callers package.json)
      • Do we publish an npm package that uses our API (the client package code can perform necessary checks)
    • E.g. what if user installs an extension that uses an old version of the API (do we fail silently, do we display a message, if so who - extension or us etc.)
  • Publish *.d.ts files

@DonJayamanne
Copy link
Contributor Author

Closing this for now, a sample usage of the API can be found here https://github.com/microsoft/vscode-jupyter-powertoys/

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jun 24, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
feature-request Request for new features or functionality notebook-kernel Kernels issues (start/restart/switch/execution, install ipykernel)
Projects
None yet
Development

No branches or pull requests

2 participants