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

2022 Jupyter Widgets Dev Meetings #13

Open
jasongrout opened this issue Jan 24, 2022 · 37 comments
Open

2022 Jupyter Widgets Dev Meetings #13

jasongrout opened this issue Jan 24, 2022 · 37 comments

Comments

@jasongrout
Copy link
Member

jasongrout commented Jan 24, 2022

Here is a record of the agenda/minutes for our weekly meeting. Everyone is welcome to join.

Let's avoid using this thread for discussion. If you'd like to discuss something in the minutes, open a separate issue and reference this thread.

Meeting Notes

@jasongrout jasongrout changed the title 2022 2022 Jupyter Widgets Dev Meetings Jan 24, 2022
@jasongrout
Copy link
Member Author

4 Jan 2022

Attendees: @vidartf, @martinRenou, @ibdafna

@jasongrout
Copy link
Member Author

11 Jan 2022

Attendees: @vidartf, @martinRenou, @SylvainCorlay, @jasongrout, @ibdafna

  • Maarten: Document protocol version 3.0.0 ipywidgets#3343

    • Bump protocol to 3.0, since there are communication channels set up in both directions. Having a browser that understand 2.0 talking to a kernel speaking 3.0 should lead to sliders jumping around (since the echo field is ignored). Having a browser that understands 3 talking to a kernel that understands 2 means that channels that are opened by the browser will be rejected since the major version number does not match in the comm_open of the kernel.
  • Martin: Updated Use control comm target in base Manager ipywidgets#3335

    • Needs review
    • Martin will check if there is some heuristic in comm info message to determine if comm target exists or not
    • We should make an update to the docs/ipykernel to have the comm info request have an error status if the comm target does not exist.
  • Bug fix with nbconvert HTMLManager: Do not reset lab's CSS variables if they are defined ipywidgets#3342

    • Looks good, basically adds the lab variables as a default for html manager if they are not alreadyd defined on the page
    • Could check the generated code to see if there is a difference with how the css is put on the page in the conditional

@jasongrout
Copy link
Member Author

18 Jan 2022

Attendees: @vidartf, @martinRenou, @SylvainCorlay, @jasongrout, @ibdafna

@jasongrout jasongrout pinned this issue Jan 26, 2022
@jasongrout
Copy link
Member Author

jasongrout commented Jan 26, 2022

25 Jan 2022

Attendees: @vidartf, @martinRenou, @ivanov, @jasongrout, @SylvainCorlay, @ibdafna, @maartenbreddels

@jtpio
Copy link
Member

jtpio commented Feb 9, 2022

8 Feb 2022

Attendees: @williamstein, @vidartf, @martinRenou, @jtpio, @jasongrout, @ibdafna, @ianhi, @maartenbreddels

Other things that we would need/want for 8.0?

PRs for review:

Merged PRs:

7.x release

  • Martin backporting the control channel
  • 7.x minor release later this week

8.0 RC release

  • This week after two PRs above merged.

Discussion

Naive Community Questions (answers above):

Question (@williamstein): is there any existing software that let you do things like insert sliders, buttons, etc., graphically on a canvas, then generate code and uses ipywidgets to implement things under the hood? (Instead of laying everything out via code.) I'm stumbling into implementing something like this, and want to compare notes.

@martinRenou: Do you mean rendering widgets on a canvas?
I remember discussing this with Wolf Vollprecht (having multiple renderers for ipywidgets: DOM, Canvas, Qt etc) this sounds hard to implement to me, but it could be possible?
(misunderstood the question)

@martinRenou
Copy link
Member

@martinRenou
Copy link
Member

1 March 2022

Name Affiliation GitHub
Jason Grout Databricks @jasongrout
Gayle Ollington NumFOCUS @gollington
Vidar T Fauske JP Morgan Chase @vidartf
Steve Purves Curvenote @stevejpurves

Merged PRs:

@jtpio
Copy link
Member

jtpio commented Aug 4, 2022

8 March 2022

Name Affiliation GitHub
Jason Grout Databricks @jasongrout
Vidar T Fauske JP Morgan Chase @vidartf
Steve Purves Curvenote @stevejpurves
Xiao Chen Databricks @xiaochen-db
tonyfast Quansight @tonyfast
William Stein CoCalc @williamstein
Jared Thompson CCC @afonit
Pete Blois Google @blois
Florian Wetschoreck Databricks @FlorianWetschoreck
Tobias Krabel Databricks @tkrabel
Martin Renou QuantStack @martinRenou
Hossein Falaki Databricks @falaki
Michael Piatek Databricks @michaelp-db
Itay Dafna Bloomberg @ibdafna
Trung Le QuantStack @trungleduc
  • Introductions

Merged PRs:

PRs to review:

7.7 and 8.0 RC/release plans

  • RC this week?

Other items

  • Recording meetings

Pete Blois: ipwyidgets on Colab

@jtpio
Copy link
Member

jtpio commented Aug 4, 2022

15 March 2022

Name Affiliation GitHub
Jason Grout Databricks @jasongrout
Vidar T Fauske JP Morgan Chase @vidartf
William Stein CoCalc @williamstein
~/cocalc/src/packages/frontend$ grep widget package.json 
    "@jupyter-widgets/base": "^1.2.5",
    "@jupyter-widgets/controls": "^1.5.3",
    "@jupyter-widgets/output": "^1.1.5",
    "@phosphor/widgets": "^1.9.3",
  • William: I can quickly demo ipywidgets in a whiteboard, since I have it working now...

@jtpio
Copy link
Member

jtpio commented Aug 4, 2022

29 March 2022

No meeting.

@jtpio
Copy link
Member

jtpio commented Aug 4, 2022

5 April 2022

Name Affiliation GitHub
Jason Grout Databricks @jasongrout
Itay Dafna Bloomberg @ibdafna
Vidar T Fauske JP Morgan Chase @vidartf

What other libraries should we try to convert?

  • ipyleaflet
  • pythreejs

8.0 release concerns

April 19 - Don presenting on widgets in vs code

@jtpio
Copy link
Member

jtpio commented Aug 4, 2022

12 April 2022

Name Affiliation GitHub
Jason Grout Databricks @jasongrout
Itay Dafna Bloomberg LP @ibdafna

Issues over last week:

Items:

Next week Don Jayamanne is presenting on widgets in VS Code. Please advertise.

  • Gitter
  • Discourse
  • JLab dev meeting

@jtpio
Copy link
Member

jtpio commented Aug 4, 2022

19 April 2022

Name Affiliation GitHub
Jason Grout Databricks @jasongrout
Frederic Collonval QuantStack @fcollonval
Vidar T Fauske JP Morgan Chase @vidartf
Martin Renou QuantStack @martinRenou

Issues over the last week:

Items:

@jtpio
Copy link
Member

jtpio commented Aug 4, 2022

26 April 2022

Name Affiliation GitHub
Jason Grout Databricks @jasongrout
Martin Renou QuantStack @martinRenou
Itay Dafna Bloomberg @ibdafna
Layne Sadler AIQC @aiqc
William Stein CoCalc/SageMath @williamstein
Florian Wetschoreck Databricks @FlorianWetschoreck
Tobias Krabel Databricks @tkrabel
Frederic Collonval QuantStack @fcollonval

Issues

ipywidgets in vscode-jupyter:

https://github.com/microsoft/vscode-jupyter/wiki/Component:-IPyWidgets

Virtualization:

  • Colab: uses intersection observer to defer creation of the iframes until they have been scrolled into view but never un-renders them when they go out of view. We write an 'output_height' attribute in the cell's metadata to specify the placeholder height on notebook load. Overall this sounded easier than it was in practice- thought it would take a few days, ended up taking maybe 2 months to stabilize (welcome to production)
  • VS Code: We do the same in VS Code as well, render only when scrolled into view and never un-render them.
  • Cocalc: is now fully virtual (except iframe html) use react-virtuoso with Jupyter sagemathinc/cocalc#5844 using https://virtuoso.dev/ and seems to work. Motivation for me is very complicated notebooks where having content rendered in the dom at all can be expensive when working with the notebook. (Other approach is to make this less expensive -- maybe things are significantly extra expensive in cocalc.)

@jtpio
Copy link
Member

jtpio commented Aug 4, 2022

03 May 2022

Name Affiliation GitHub
Vidar T Fauske JP Morgan Chase @vidartf
Itay Dafna Bloomberg @ibdafna
  • William Stein presenting on ipywidgets in Cocalc on 17 May.
  • Remaining tasks for 8.0 release. Timeline.
  • Itay to add notes to the migration guide about backbone.js version update between ipywidgets 7.x and 8.x, which affects some IClassicComm mock implementations.

@jtpio
Copy link
Member

jtpio commented Aug 4, 2022

10 May 2022

Name Affiliation GitHub
Vidar T Fauske JP Morgan Chase @vidartf
Jason Grout Databricks @jasongrout
Itay Dafna Bloomberg @ibdafna

@jtpio
Copy link
Member

jtpio commented Aug 4, 2022

17 May 2022

Name Affiliation GitHub
Jason Grout Databricks @jasongrout
Vidar T Fauske JP Morgan Chase @vidartf
Pete Blois Google @blois
William Stein CoCalc @williamstein
Blaec Bejarano CoCalc
  • es6 vs backbone extend

    • Currently ipywidgets 7.x and 8.x are generating es6 classes (not backbone.extend)
    • https://github.com/googlecolab/colab-cdn-widget-manager/blob/main/src/swizzle.ts - bridges between backbone extend and es6 classes. Just wrap the class being exposed with swizzle() and it can be constructed via ES6 new or backbone's constructor.
    • k3d uses backbone.extend
    • Pythreejs also uses backbone.extend
    • Vidar made a note in the migration guide about migrating from backbone.extend
  • Remaining work for 8.0

  • Long-term API

    • Lumino is a dependency
      • Lifecycle methods - can we prefer native methods that external lifecycle events can call
    • jupyter-services is a dependency
    • font-awesome - William wrote a jquery plugin that simulates a font-awesome and manually adds the font-awesome look-alikes icons in cocalc
    • typeset - depends on mathjax? - should be a method on the manager
    • assumptions about DOM and CSS
    • Theming - should widgets be using jupyterlab variables directly?
      • Could define only jupyter widgets variables, then have the jlab manager define those

Third-party widgets

  • ipycytoscape
  • pythreejs
  • ipyleaflet
  • cadquery
  • ipyvuetify
  • ipymaterialui
  • ipycanvas
  • bqplot
  • plotly
  • nglviewer
  • ipydatagrid
  • k3d
  • ipyslickgrid
  • qgrid
  • ipyvolume
  • ipysheet

See https://www.npmjs.com/browse/depended/@jupyter-widgets/base for hundreds more.

Python to JS translater: https://github.com/sagemathinc/jsage (JPython, inside of JSage, is BSD 2-clause)


@jtpio
Copy link
Member

jtpio commented Aug 4, 2022

24 May 2022

Name Affiliation GitHub
Jason Grout Databricks @jasongrout
Vidar T Fauske JP Morgan Chase @vidartf
William Stein CoCalc @williamstein
Itay Dafna Bloomberg @ibdafna

Continuing discussion from last time about post 8.0:

  • font-awesome - William wrote a jquery plugin that simulates a font-awesome and manually adds the font-awesome look-alikes icons in cocalc
    • We could explicitly support, say 100 icons that cover most icons third party widgets are currently using, and the manager is responsible for providing those icons in a way that is consistent with the platform. This makes it easier for widget implementors to support the icons without having to explicitly use fontawesome. (william: I really like this proposal.)
  • typeset - depends on mathjax? - should be a method on the manager
    • Add it as a minor release in the base manager interface

  • William: another quick question -- what about a list of jupyter clients that support widgets? E.g., I was recently testing and learned that datalore does now.

  • Add a table to the docs with links to frontends that implement ipywidgets?

    • do in such a way that is in no way an endorsement
    • put it on a wiki.
    • another table of third-party ipywidgets
  • Vidar: porting pythreejs to ipywidgets 7 and 8

  • Jason: looking at updating docs with diff, look at todo items

  • William: porting k3d to cocalc

Community workshop proposal for ipywidgets:

  • October 2022 or Jan 2023
  • Paris, London, San Francisco, Berlin

@jtpio
Copy link
Member

jtpio commented Aug 4, 2022

31 May 2022

Name Affiliation GitHub
Jason Grout Databricks @jasongrout
William Stein (until 10am PDT due to https://sites.google.com/view/vantageseminar, slides: https://math.mit.edu/~drew/vantage/BhargavaSlides.pdf) CoCalc @williamstein
Itay Dafna Bloomberg @ibdafna
  • PRs/issues for 8.0: https://github.com/jupyter-widgets/ipywidgets/milestone/30

  • I would be interested in a very quick discussion of Feature: always save state of widgets, and only those required ipywidgets#3114 since something similar is at the top of my personal todo list for cocalc. (I want this more for https://cocalc.com/share, but it's the same problem.)

    • on roadmap?: definitely not, due to this being jupyter classic, and we are moving to jupyterlab, which already solves this issue, for the most part.
    • what about nbconvert / publishing
      • nbconvert is aware of widgets; save widget state.
      • e.g., this is used by our docs. displayed using html manager
    • what if the widget state is BIG (say 50MB), e.g., 3d graphics and buffers? 2d plots + bqplot -- see this all the time. blows up size of notebook.
      • we originally had all notebooks saved every widgets, and this was not optimal due to extensive interactive use and no garbage collection, so notebooks would rapidly increase in size
      • then we made it off by default.
      • make it very explicit when you want to save this way.
      • related discussion: sidecar files. jupytext does this.
    • and generally what scares you about this PR? If anything?
    • Maarten has "Solara"...
    • Subtle definition of "live widget". View counter.
    • But in cocalc since it garbage collects if not displayed anywhere.
    • Browser memory and file size are both big concerns.
    • What about screenshot? Widget's responsibility. Or serialize dom...
    • [william] Thanks!
  • ipydatagrid ipywidgets 8.0 upgrade: Update to ipywidgets 8 bloomberg/ipydatagrid#282

@jtpio
Copy link
Member

jtpio commented Aug 4, 2022

7 June 2022

Name Affiliation GitHub
Jason Grout Databricks @jasongrout
Itay Dafna Bloomberg @ibdafna
  • PRs/issues for 8.0: https://github.com/jupyter-widgets/ipywidgets/milestone/30
  • Community Workshop:
  • Tutorial:
    07/12/2022, 8:00am-12:00pm CDT, The Jupyter Interactive Widget Ecosystem, Matthew Craig, Itay Dafna, Mariana Meireles, Youness Bennani, Ian Hunt-Isaak
  • Can we have a widgets 8 release by June 17, which is when the tutorial instructions are due?
    • I think so!
  • Databricks supports ipywidgets! https://docs.databricks.com/notebooks/ipywidgets.html
  • Borders vs overflow attributes: in order to have the possibility to adjust borders independently, we went with border_left/right/top/bottom, with convenience properties to set the border. For the overflow attribute, we went with our normal convention of preferring the single shorthand CSS notation over individual properties.

@jtpio
Copy link
Member

jtpio commented Aug 4, 2022

14 June 2022

Name Affiliation GitHub
Jason Grout Databricks @jasongrout
Vidar T Fauske JP Morgan Chase @vidartf
Matt Craig Minnesota State University Moorhead @mwcraig
Martin Renou QuantStack @martinRenou
William Stein SageMath/CoCalc @williamstein
Itay Dafna Bloomberg @ibdafna

Additional discussion:

@jtpio
Copy link
Member

jtpio commented Aug 4, 2022

21 June 2022

Name Affiliation GitHub
Jason Grout Databricks @jasongrout
Matt Craig Minnesota State University Moorhead @mwcraig
Vidar T Fauske JP Morgan Chase @vidartf
William Stein SageMath/CoCalc @williamstein

@jtpio
Copy link
Member

jtpio commented Aug 4, 2022

28 June 2022

Name Affiliation GitHub
Vidar T Fauske JP Morgan Chase @vidartf
William Stein SageMath/CoCalc @williamstein
Itay Dafna Bloomberg @ibdafna

@jtpio
Copy link
Member

jtpio commented Aug 4, 2022

5 July 2022

Name Affiliation GitHub
Vidar T Fauske JP Morgan Chase @vidartf
Matt Craig Minnesota State University Moorhead @mwcraig

Meeting canceled

@jtpio
Copy link
Member

jtpio commented Aug 4, 2022

12 July 2022

Name Affiliation GitHub
Vidar T Fauske JP Morgan Chase @vidartf
William Stein SageMath/CoCalc @williamstein

Remaining tasks 8.0:

(william) Community question:

  • thoughts about New kernels REST API ipywidgets#3516 "I am not sure how this could be solved unless we drastically change ipywidgets' architecture."

    • discussed in the jupyter server meeting
    • ipywidgets uses comms, but comms exist outside ipywidgets, and have unknown usage that can't be completely replaced by rtc.
  • JupyterLite discussion: cool new features for docs.

@jtpio
Copy link
Member

jtpio commented Aug 4, 2022

19 July 2022

Name Affiliation GitHub
Jason Grout Databricks @jasongrout
William Stein SageMath/CoCalc @williamstein
Matt Craig Minnesota State University Moorhead @mwcraig
Vidar T Fauske JP Morgan Chase @vidartf
Itay Dafna Bloomberg @ibdafna
  • Report on Scipy and the tutorial there

    • Went really well
      • Twice we had some serious technical issues with connecting computers, etc., but attendees probably didn't even notice.
      • Not much changed from last year:
        • JupyterLite
        • Widgets 8
        • Building an application
    • Probably about 20 people there, so way down from most years
    • Jupyter is still the big thing
    • Papyri talk by Matthias was excellent
    • VegaFusion by Jon Mease is an ipywidget!
    • JDAViz (scsci-provided platform for web images) is widget-based. Based on glue, etc.
    • No widget sprint, Matt worked on bqplot and other things, though. There was a little Jupyter sprinting as well.
  • 8.0 milestone

  • Automatically set public path

@jtpio
Copy link
Member

jtpio commented Aug 4, 2022

26 July 2022

Name Affiliation GitHub
Jason Grout Databricks @jasongrout
William Stein SageMath/CoCalc @williamstein
Vidar T Fauske JP Morgan Chase @vidartf
Matt Craig Minnesota State University Moorhead @mwcraig
  • ipywidgets 8
    • 3524: experiment is concluded, close the pr and watch for issues in the community after release
    • 3528 - minor tweak, then merge
    • 3455 - is this issue good enough for frontend authors? Answer: yes, but add a link to the changelog

@jtpio
Copy link
Member

jtpio commented Aug 4, 2022

2 August 2022

Name Affiliation GitHub
Vidar T Fauske JP Morgan Chase @vidartf
Itay Dafna Bloomberg LP @ibdafna
William Stein SageMath/CoCalc @williamstein
Jason Grout Databricks @jasongrout
Martin Renou QuantStack martinRenou

@jtpio
Copy link
Member

jtpio commented Aug 12, 2022

9 August 2022

Name Affiliation GitHub
Vidar T Fauske JP Morgan Chase @vidartf
Jason Grout Databricks @jasongrout
A. T. Darian QuantStack @afshin
Matt Craig Minnesota State University Moorhead @mwcraig
Itay Dafna Bloomberg LP @ibdafna
  • ipywidgets 8
  • Lumino 2
    • Request for help (jupyterlab/team-compass)
    • Lumino 2 project board
    • JupyterLab widget manager may need a major upgrade? It will certainly need code changes to deal with the JLab 4 API changes
    • We'll have to decide between tradeoffs:
      • bump base by a minor version, with the caveat that .luminoWidget is either Lumino 1 or 2, with the idea that most people will be compatible
      • bump base by a major version, and libraries that are okay with either lumino 1 or 2 just make the dependency an or (||).
  • Widget workshop
    • ideally 3-5 days?

@jtpio
Copy link
Member

jtpio commented Aug 23, 2022

16 August 2022

Name Affiliation GitHub
Vidar T Fauske JP Morgan Chase @vidartf
Jason Grout Databricks @jasongrout
A. T. Darian QuantStack @afshin
Sylvain Corlay QuantStack @SylvainCorlay

@jtpio
Copy link
Member

jtpio commented Aug 25, 2022

23 August 2022

Name Affiliation GitHub
Jason Grout Databricks @jasongrout
Vidar T Fauske JP Morgan Chase @vidartf
Martin Renou QuantStack @martinRenou
Pete Blois Google @blois
Maarten Breddels @maartenbreddels
Jeremy Tuloup QuantStack @jtpio
  • ipywidgets 8.0
    • Quick recap of release
      • [Done] Check to make sure there is a cap on the dependencies for ipywidgets 8

TODO issues:

@jtpio
Copy link
Member

jtpio commented Sep 27, 2022

30 August 2022

Name Affiliation GitHub
Jason Grout Databricks @jasongrout
Vidar T Fauske JP Morgan Chase @vidartf
Pete Blois Google @blois
Itay Dafna Bloomberg LP @ibdafna

@jtpio
Copy link
Member

jtpio commented Sep 27, 2022

06 Sep 2022

Name Affiliation GitHub
Jason Grout Databricks @jasongrout
Vidar T Fauske JP Morgan Chase @vidartf
Pete Blois Google @blois

Here's the public/stable API that Colab exposes to outputs:
https://github.com/googlecolab/colabtools/blob/main/packages/outputframe/lib/index.d.ts

  • It hangs off of window which I know doesn't work well for JupyterLab.
  • The API is intended to be bare-bones. A single typings file, no dependencies on any libraries or frameworks.
  • The API is intended to be as strongly typed as possible, to attempt to avoid vagaries that can lead to breaking changes.
  • Our implementation uses JS scopes to hide private members from the objects exposed, to prevent use of unintentionally exposed members. This is for compatibility, it's not considered a security boundary.

Discussion of an improved %%javascript magic and I mention how an API like Colab's could be exposed in a portable manner that would work in JupyterLab as well.
ipython/ipython#13376 (comment)

Bokeh is a good example of what we see elsewhere:
https://github.com/bokeh/bokeh/blob/0d0f40b7b0be373c2a58a2b99241de98ea49dba2/src/bokeh/core/_templates/autoload_nb_js.js#L121

They look for window.Jupyter and if present attempt to load classic notebook implementation modules via requirejs.

Where is this discussion most appropriate?
Pete did an implementation of this JS api in a Jlab extension: https://github.com/blois/js-module-renderer

@jtpio
Copy link
Member

jtpio commented Sep 27, 2022

13 Sep 2022

Name Affiliation GitHub
Vidar T Fauske JP Morgan Chase @vidartf
Jason Grout Databricks @jasongrout

@jtpio
Copy link
Member

jtpio commented Sep 27, 2022

20 Sep 2022

Name Affiliation GitHub
Jason Grout Databricks @jasongrout
Itay Dafna Bloomberg LP @ibdafna
  • 8.0.x

Blog post draft: https://blog.jupyter.org/ipywidgets-8-0-df1f22ef8278

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants