Open ibdafna opened 2 years ago
For archiving, here is the current contents of the hackmd:
Zoom link for remote attendees: https://bloomberg.zoom.us/j/95137727255?pwd=OGpmYmI0RkJZelk1V2ErUWoyc2w4QT09
ipywidgets overview
Zoom link for remote attendees: https://bloomberg.zoom.us/j/92527562243?pwd=ODFuR2VlZjVia0xLcCtPemRhUkFPUT09
Zoom link for remote attendees: https://bloomberg.zoom.us/j/97006618705?pwd=SnM3OXdWYUtDbWUwbFZZenY5S2ZWZz09
Zoom link for remote attendees: https://bloomberg.zoom.us/j/93920480098?pwd=SnkvNGlCWTZiUGY4b3EzWlNMMHEydz09
15 Attendees representing academia and industry, with core developers, third-party widget developers, widget users, etc.
Jeremy Tuloup, Martin Renou:
bunch
lumino widget
processLuminoMessage
Can we rely on the browser APIs?
Do widgets need to use lumino?
Questions around keeping the API backward compatible + a smaller subset stable API?
Lumino is going to be around for as long as we use it to build the frontends ; there's less concern than JQuery
Working group on widget API changes:
Dicsussion on the above working group:
Current cookiecutter, there are currently a federated module for jupyterlab, and then two amd modules (for notebooks and for cdn) that look pretty much the same.
Options and benefits:
What would a managed transition to es6 look like?
If we're going to go to the minimal API, then we can leave AMD modules in the old API
This question is about: how do widget managers pull in the widgets?
What non-jupyter notebooks do:
Working group for looking into ES6
What would you love to see in widgets?
%%javascript
magic? https://github.com/ipython/ipython/issues/13376#issuecomment-989040562Attendee: Pete, Vidar, Paul, Jeremy, Jason
An es6 module that exports a render method taking a context argument.
A context has a discovery function and functions for:
Colab has a comms api:
open("target"): Promise<Comm>
An example mimebundle:
{
'application/vnd.jupyter.es6-rich-output': 'a string that will be the src of a script tag, i.e., a url, data url, etc.',
'application/vnd.jupyter.datagrid+json': {'data': ['some', 'data', 'in', 'a', 'structure', 'which', 'the', 'js', 'can', 'access']},
'text/html': 'fallback rendering of your data',
'text/plain': 'fallback rendering of your data'
}
The mimebundle renderer for application/vnd.jupyter.es6-rich-output
does a System.import of the url as an object, then calls the render method if it exists with a context object, awaiting the returned Promise<void>
before moving to the next output.
The context object has mandatory fields:
output
: {'data': {...}, 'metadata': {...}} (which is the display_data or execute_result message data/metadata fields). Changes are not respected - treat it as immutable.
transient
data also be passed in???element
: HTMLDivElementOptional fields:
render(output, element): Promise<void>
:
output
: a kernel iopub stream, display_data, execute_result, error message (i.e., inputs into the rendering system)element
: an HTMLDivElementcomms
: See Colab interface...
Comm
interfaceopen("target")
: sharedState
: Map([@@Symbol]: Any) - shared state that might span render calls or contexts. This is considered mutable, in that a renderer can share things with other render calls, replace implementations, etc.
JupyterLab branch for prototype implementation: https://github.com/jupyterlab/jupyterlab/tree/es6-rich-output
https://github.com/ipython/traitlets/pull/788
contrib
organization on GitHub, similar to jupyterlab-contrib
:
jupyterlab-contrib
website: https://jupyterlab-contrib.github.io/extensions.htmljupyter-widgets-contrib
could make it more explicit about what it is about? And easier to find via search engines. It would also be similar to the existing jupyterlab-contrib
. yjs
/ ypy
for widgets:
YDoc
created in the kernelWebsocket
connection between the web clients (JS) and the Python kernel. This would bypass the current contract of message ordering but could be fine for now for testing. There could be a simple JupyterLab extensions exposing a simple widget like the IntSlider
via a mimerender extensionYDoc
comms
? Sorry for the bump, just noticed this reference in jashkenas/backbone#4244.
- So there might not be a need to fork and maintain a custom Backbone for now
Indeed, please submit PRs to the main repo instead! I realize I have not been very proactive in the past months, but I'm still keeping an eye on my notifications and will handle PRs swiftly.
Concerning the point:
Create a contrib organization on GitHub, similar to jupyterlab-contrib
I created the https://github.com/jupyter-widgets-contrib organization, moving ipycanvas there already as a test.
The website is here: https://jupyter-widgets-contrib.github.io/. It is simply a fork of the JupyterLab contrib website.
Feel free to open transfer requests so we can start feeding this organization! Happy to give admin rights to people as well in the process.
HackMD for the event: https://hackmd.io/ygqeDBoLRPC7piEcfYKk2g