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

Meeting Notes 2023 #45

Closed
blink1073 opened this issue Jan 5, 2023 · 63 comments
Closed

Meeting Notes 2023 #45

blink1073 opened this issue Jan 5, 2023 · 63 comments
Labels
discussion General discussion of a specific topic

Comments

@blink1073
Copy link
Contributor

blink1073 commented Jan 5, 2023

Hello everyone,

Gitter

Welcome to the Jupyter Server Team!

You can find us in our Gitter chat room or visit us at our weekly meetings!

We meet on Thursdays at 8:00am, Pacific Standard Time on Jupyter's Zoom Channel.You can add yourself to the weekly agenda here. Everyone is welcome!

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.

You can find previous year's notes here: 2020, 2021, 2022

Meeting Notes

@blink1073 blink1073 added the discussion General discussion of a specific topic label Jan 5, 2023
@blink1073 blink1073 pinned this issue Jan 5, 2023
@blink1073
Copy link
Contributor Author

January 5th, 2023

Name affiliation username
Vidar Fauske JP Morgan Chase @vidartf
Steven Silvester MongoDB @blink1073
David Brochart QuantStack @davidbrochart
Andrii Ieroshenko AWS Wandrii-i

We also did some triaging of open "bug" issues

@blink1073
Copy link
Contributor Author

January 12th, 2023

Name affiliation username
Zach Sailer Apple Zsailer
Vidar Fauske JP Morgan Chase @vidartf
Steven Silvester MongoDB @blink1073
David Brochart QuantStack @davidbrochart
Andrii Ieroshenko AWS @andrii-i
Steven Silvester MongoDB @blink1073
Afshin T. Darian QuantStack @afshin
Kevin Bates IBM @kevin-bates
Johan Mabille QuantStack @JohanMabille

Agenda

@kevin-bates
Copy link
Member

January 19th, 2023

Name affiliation username
Kevin Bates IBM @kevin-bates
Steven Silvester MongoDB @blink1073
Johan Mabille QuantStack @JohanMabille
David Qiu AWS @dlqqq
Andrii Ieroshenko AWS @andrii-i
Piyush Jain AWS @3coins
A. T. Darian QuantStack @afshin
Vidar T Fauske JP Morgan Chase @vidartf

Agenda

@kevin-bates
Copy link
Member

January 26th, 2023

Name affiliation username
Johan Mabille QuantStack @JohanMabille
Kevin Bates IBM @kevin-bates
Piyush Jain AWS @3coins
Steven Silvester MongoDB @blink1073
Andrii Ieroshenko AWS @andrii-i
Vidar T Fauske JP Morgan Chase @vidartf
A. T. Darian QuantStack @afshin
Zach Sailer Apple Zsailer
Omar Jarjur Google @ojarjur

Agenda

  • Kevin:

    • Trailets question: Is it possible to configure traits on multiple instances of a class with different values for the various traits on each instance?
      • Not natively as they are class based. Some form of custom loader/configurator would be necessary.
  • Piyush:

  • Steve

    • Going to release Jupyter Client 8 today. Should be no major user-facing changes, mostly internal cleanup around async handling.
  • Vidar

@Zsailer
Copy link
Member

Zsailer commented Feb 9, 2023

February 2nd, 2023

Name affiliation username
Zach Sailer Apple Zsailer
Kevin Bates IBM @kevin-bates
Omar Jarjur Google @ojarjur
Steven Silvester MongoDB @blink1073
Piyush Jain AWS @3coins
Vidar T Fauske JP Morgan Chase @vidartf
Andrii Ieroshenko AWS @andrii-i
Johan Mabille QuantStack @JohanMabille
Jessica Xu Cal Poly @jess-x

Agenda

  • Kevin:

  • Zach

  • Steve

    • 2.2 released with "Only load enabled extension packages"
    • Adopted more linting rules
    • Client 8 released - no real impact on server, had to fix a bug that affected papermill.

@Zsailer
Copy link
Member

Zsailer commented Feb 16, 2023

February 9th, 2023

Name affiliation username
Zach Sailer Apple Zsailer
Kevin Bates IBM @kevin-bates
Omar Jarjur Google @ojarjur
Andrii Ieroshenko AWS @andrii-i
Frederic Collonval QuantStack @fcollonval
Rahul Goyal AWS @rahul26goyal
Johan Mabille QuantStack @JohanMabille
Piyush Jain AWS @3coins

Agenda

@Zsailer
Copy link
Member

Zsailer commented Feb 16, 2023

February 16th, 2023

Name affiliation username
Zach Sailer Apple @Zsailer
Frederic Collonval QuantStack @fcollonval
Kevin Bates IBM @kevin-bates
Omar Jarjur Google @ojarjur

Agenda

  • Frederic

    • I want to point out the JupyterLab PR Upgrade to MathJax 3 - this will drop the usage of server config mathjax_config that for example is leverage by jupyter_server_mathjax. Is it a good or a bad change to drop that server configuration? Feel free to comment on the JupyterLab PR.

    We can move on with the PR. But as follow-up, JupyterLab team needs to release the older MathJax 2 extension independently (preferably in the jupyter-renderers). This is similar to vega management we have done.

  • Zach

    • JS council: remember to vote on the gateway-provisioners proposal
    • 2.3.0 Released this past week with IPv6 support
  • Jupyter Enhancement Proposals to begin reviewing:

    1. Parameterized kernel specs proposal
    2. Kernel sub-shells
    3. Kernel Handshaking pattern

@ellisonbg
Copy link

On the MathJax 2 extension. Is there a reason or signal why we need to support MathJax 2? MathJax 3 has been out for over 3 years, so it isn't clear that this is needed. Thoughts?

@ellisonbg
Copy link

ping @fcollonval on the MathJax 2 question.

@dlqqq
Copy link

dlqqq commented Feb 16, 2023

^ On this note, the MathJax 2 extension will still be preserved in the JupyterLab 3.x branch, so it's not clear why it would need to be migrated to a separate repo; IMO it should only be maintained for as long as 3.x is maintained, so keeping it living in that branch seems sufficient.

@krassowski
Copy link

One of the points in discussion previously was that MathJax 3 does not support line breaking and we had a conversation about whether we should wait for it MathJax 4 which will support it here: jupyterlab/jupyterlab#7218 (comment).

@dlqqq
Copy link

dlqqq commented Feb 16, 2023

Well, because my PR drops the version number from the package name, we aren't tied to using MathJax 3 in the package; the only commitment is that we're using any version of MathJax that we believe is best for users.

@dlqqq
Copy link

dlqqq commented Feb 16, 2023

Oh, is the lack of linebreaking a regression between MJ2 and MJ3?

@krassowski
Copy link

is the lack of linebreaking a regression between MJ2 and MJ3?

Yes.

@Zsailer
Copy link
Member

Zsailer commented Feb 17, 2023

On the MathJax 2 extension. Is there a reason or signal why we need to support MathJax 2? MathJax 3 has been out for over 3 years, so it isn't clear that this is needed. Thoughts?

The main issue we discussed in the server meeting was that there are server-side traits (found in the jupyter_server_mathjax server extension) that folks might be using. Before eliminating a trait from the server (even though this has moved to a server extension), we try to have a proper deprecation warning period to give folks a heads up about a config change.

Until these traits are properly deprecated, we likely need to ensure that the MJ2 lab plugin is available as a fallback.

It doesn't really matter to me where the MJ2 lab plugin codebase lives, as long as we can keep it around long enough to properly deprecate the server-side traits.

@ellisonbg
Copy link

ellisonbg commented Feb 17, 2023 via email

@Zsailer
Copy link
Member

Zsailer commented Feb 17, 2023

You're welcome! Thanks for following up here on the discussion.

They live in jupyter_server_mathjax, a server extension under the Jupyter Server org. The traits are very minimal—here is the main chunk in the server extension.

@ellisonbg
Copy link

ellisonbg commented Feb 17, 2023 via email

@Zsailer
Copy link
Member

Zsailer commented Feb 23, 2023

February 23th, 2023

Name affiliation username
Zach Sailer Apple @Zsailer
Johan Mabille QuantStack @JohanMabille
Sylvain Corlay QuantStack @SylvainCorlay
Andrii Ieroshenko AWS @andrii-i
Kevin Bates IBM @kevin-bates
Piyush Jain AWS @3coins
David Brochart QuantStack @davidbrochart
Nick Bollweg Georgia Tech @nrbgt @bollwyvl

Agenda

Johan

Sylvain

  • Discussing parameterized kernels JEP.
    • Lots of discussion around parameterizing the environment around the kernel (via provisioners) vs parameterizing the kernels themselves.
    • Much of this discussion is on the JEP already
    • Kevin, Sylvain, Johan and Zach planning to set up a brainstorming meeting.
      • Reach out if interested in joining.

Zach

Nick

@Zsailer
Copy link
Member

Zsailer commented Mar 2, 2023

March 2nd, 2023

Name affiliation username
Zach Sailer Apple @Zsailer
Johan Mabille QuantStack @JohanMabille
Andrii Ieroshenko AWS @andrii-i
Kevin Bates IBM @kevin-bates
Steve Silvester MongoDB @blink1073
David Qiu AWS @dlqqq
Afshin T. Darian QuantStack @afshin
Piyush Jain AWS @3coins

Agenda

@Zsailer
Copy link
Member

Zsailer commented Mar 16, 2023

March 9th, 2023

Name affiliation username
Zach Sailer Apple @Zsailer
Andrii Ieroshenko AWS @andrii-i
Steven Silvester MongoDB @blink1073
Omar Jarjur Google @ojarjur
Johan Mabille QuantStack @JohanMabille
A. T. Darian QuantStack @afshin
Kevin Bates IBM @kevin-bates
David Brochart QuantStack @davidbrochart
Marc Udoff D. E. Shaw @mlucool
Jessica Xu Cal Poly @jess-x

Agenda

  • Zach

    • Websocket instability
      • The kernel websocket appears to be instable for long connections.
      • Scenario 1
        1. User switches browser tabs or windows.
        2. JupyterLab's tab goes to sleep.
        3. Jupyter Server's websocket ping never receives a response
        4. Jupyter Server closes the server-side websocket handler
      • Scenario 2
        1. Increase the Jupyter Server websocket time to avoid closing the websocket handler.
        2. User switches browser tabs or windows.
        3. JupyterLab's tab goes to sleep.
        4. Browser sees an open, long-time, idle connection and terminals websocket.
      • Ideas to keep this from happening?
        • Websocket heartbeats both directions
          • How do we prevent the browser from terminating websocket connections?
        • Store offline changes to any documents server-side and forward to the front as soon as things reconnect.
          • Can we use y-docs for this?
          • How does it handle kernel status.
  • Marc

  • Steve

    • Fixed the port selection bug that David mentioned last week

@blink1073
Copy link
Contributor Author

March 16th, 2023

Name affiliation username
David Qiu AWS @dlqqq
Steven Silvester MongoDB @blink1073
Vidar T Fauske JP Morgan Chase @vidartf
Omar Jarjur Google @ojarjur
Kevin Bates IBM @kevin-bates
A. T. Darian QuantStack @afshin
Carlos Herrero QuantStack @hbcarlos
Andrii Ieroshenko AWS @andrii-i
David Brochart QuantStack @davidbrochart

Agenda

@Zsailer
Copy link
Member

Zsailer commented Mar 30, 2023

March 23rd, 2023

Name affiliation username
Zach Sailer Apple Zsailer
Steven Silvester MongoDB @blink1073
Kevin Bates IBM @kevin-bates
Johan Mabille QuantStack @JohanMabille
Andrii Ieroshenko AWS @andrii-i
Piyush Jain AWS @3coins
Afshin T. Darian QuantStack @afshin
Carlos Herrero QuantStack @hbcarlos
Omar Jarjur Google @ojarjur

Agenda

@kevin-bates
Copy link
Member

March 30th, 2023

Name affiliation username
Zach Sailer Apple @Zsailer
Afshin T. Darian QuantStack @afshin
Steven Silvester MongoDB @blink1073
David Brochart QuantStack @davidbrochart
Kevin Bates IBM @kevin-bates
Carlos Herrero QuantStack @hbcarlos
Omar Jarjur Google @ojarjur
Garland Zhang Databricks @garlandz-db
Andrii Ieroshenko AWS @andrii-i

Agenda

Carlos
- precedence between jupyter_server_config.py and jupyter_server_config.json?

Zach
- Flow authenticated user model to managers in each request
- jupyter-server/jupyter_server#1250
- PR: Define a CURRENT_JUPYTER_HANDLER context var: jupyter-server/jupyter_server#1251

Garland
- ipython/ipykernel#859

Carlos
- Anonymous users jupyter-server/jupyter_server#1245

@Zsailer
Copy link
Member

Zsailer commented Apr 6, 2023

April 6th, 2023

Name affiliation username
Zach Sailer Apple @Zsailer
Kevin Bates IBM? @kevin-bates
Carlos Herrero QuantStack hbcarlos
Andrii Ieroshenko AWS @andrii-i
A. T. Darian QuantStack @afshin
Omar Jarjur Google @ojarjur
Garland Zhang Databricks @garlandz-db
Johan Mabille QuantStack @JohanMabille

Agenda

Kevin

Carlos

Garland

@Zsailer
Copy link
Member

Zsailer commented Aug 3, 2023

July 27th, 2023

Name affiliation username
Zach Sailer Apple Zsailer
Hind Montassif QuantStack @Hind-M
Andrii Ieroshenko AWS @andrii-i
Afshin T. Darian QuantStack @afshin
Eric Charles Datalayer, Anaconda @echarles
Johan Mabille QuantStack @JohanMabille
Matt Wiese Cornell / Buckler Lab @matthewwiese
David Brochart QuantStack @davidbrochart
Rosio Reyes Anaconda @RRosio
Sergey Kukhtichev IBM @skukhtichev
Sylvain Corlay QuantStack @SylvainCorlay

Agenda

@Zsailer
Copy link
Member

Zsailer commented Aug 10, 2023

August 3, 2023

Name affiliation username
Zach Sailer Apple Zsailer
Kevin Bates Veritone @kevin-bates
Afshin T. Darian QuantStack @afshin
David Brochart QuantStack @davidbrochart
Andrey Velichkevich Apple @andreyvelich
Rosio Reyes Anaconda @RRosio
Andrii Ieroshenko AWS @andrii-i

Agenda

@Zsailer
Copy link
Member

Zsailer commented Aug 10, 2023

August 10, 2023

Name affiliation username
Matt Wiese Cornell / Buckler Lab @matthewwiese
Zach Sailer Apple @Zsailer
Steven Silvester MongoDB @blink1073
Afshin T. Darian QuantStack @afshin
Andrii Ieroshenko AWS @andrii-i
Carlos Brandt Constructor Uni @chbrandt
Kevin Bates Veritone @kevin-bates
Rosio Reyes Anaconda @RRosio

Agenda

@Zsailer
Copy link
Member

Zsailer commented Aug 17, 2023

August 17th, 2023

Name affiliation username
Zach Sailer Apple @Zsailer
Marc Udoff D. E Shaw @mlucool
Travis Ryan D. E. Shaw @TravisJRyan
Michal Krassowski Quansight @krassowski
Kevin Bates Veritone @kevin-bates
Andrii Ieroshenko AWS @andrii-i
Omar Jarjur Google @ojarjur
R Ely Bloomberg @ohrely
Rosio Reyes Anaconda @RRosio
Tim Guo D. E. Shaw @timg512372

Agenda

  • Pre-Proposal: Add Restart In Place API Support

    • currently restart is "just preservation of kernel ID"
      • relevant when multiple consoles/notebooks are attached to the same kernel
      • but there is more complexity in UX actions associated (debugger, restart & re-run)
    • relevance to local kernels
      • proposed in-place restart is the same as current local restart
        • in the local case there is no distinction
        • in remote case there should be a choice
      • but two buttons not relevant here
    • why would users prefer to have a choice?
      • ability to switch to a different host
    • should it be just a configuration option at provisioner level?
      • limiting UX options (pros & cons)
    • discussion: could it be a server extension implementing hard restart (with an API endpoint) for remote scenario, while the default implementation would be specified to be in-place restart?
      • we could standardize today's "restart" to mean "restart-in-place", i.e. teardown the kernel (sub)process and start again while preserving the same kernel ID.
      • that means "fixing" EG/provisioners (possibly with an option); today, EG treats "restart" as a "hard restart", i.e. teardown kernel process and its environment.
      • complexity/maintenance concerns
      • extension implementing hard restart could come later if there is a demand from users
      • this could still benefit from a JEP documenting the new default/tightening specification
  • Jupyter Open Studio Day in NYC Monday, August 28

@Zsailer
Copy link
Member

Zsailer commented Aug 24, 2023

August 24th, 2023

Name affiliation username
Zach Sailer Apple @Zsailer
Hind Montassif QuantStack @Hind-M
Matt Wiese Cornell / Buckler Lab @matthewwiese
Eric Gentry Anaconda @ericsnekbytes
Andrii Ieroshenko AWS @andrii-i
Kevin Bates Veritone @kevin-bates
Afshin T. Darian QuantStack @afshin
Johan Mabille QuantStack @JohanMabille
Omar Jarjur Google @ojarjur

Agenda

@Zsailer
Copy link
Member

Zsailer commented Sep 7, 2023

August 31st, 2023

Name affiliation username
Zach Sailer Apple @Zsailer
Andrii Ieroshenko AWS @andrii-i
Matt Wiese Cornell / Buckler Lab @matthewwiese
Sergey Kukhtichev IBM @skukhtichev
Afshin T. Darian QuantStack @afshin

Agenda

  • Question from Andrii:
    • When my teammate tries to run galata tests locally, tests don’t run and are stuck and initial screen that asks for token. Investigation showed that apparentely his configure_jupyter_server call is not getting propagated because changing port there also doesn't change anything
      • Advise: sounds like environments are getting cross-polinated, jupyter server is running from different environment than galata server. jupyterlab call would be a good place to ask more
    • I'm working on event driven notebook execution and want to execute notebook locally based on Github PR push. I found one can modify "jupyter_server_config.json" to expose yourself to the internet. Is there a better way? What should I keep in mind?
      • Advise: allow access from all IPs, use Nginx/Caddy/Traefik, put everything into a docker file
    {  
      "ServerApp": {
        "password": "YOUR ENCRYPTED PASSWORD IS HERE",
        "allow_remote_access":true,
        "ip":"*",
        "port":80,
        "allow_root":true
      }
    }

@Zsailer
Copy link
Member

Zsailer commented Sep 14, 2023

September 7th, 2023

Name affiliation username
Zach Sailer Apple @Zsailer
Johan Mabille QuantStack @JohanMabille
David Brochart QuantStack @davidbrochart
Andrii Ieroshenko AWS @andrii-i
Steven Silvester MongoDB @blink1073

Agenda

  • Zach
    • Document state maintained in server (more discussion/brainstorming).
      • Why?
        • Real time collaboration
        • Capture changes that occur when frontend gets detached.
      • How it works today
        • The frontend starts a Jupyter Server "session"
        • the session returns a mapping of "document" to kernel
        • the frontend opens a kernel websocket
        • the frontend sends+receives messages from kernel websocket
        • the frontend determines how these messages change the document.
        • if the frontend gets disconnected, messages get dropped.
        • there is messages buffering triggered each time a kernel websocket loses connection, but JupyterLab requests a new websocket everytime it disconnects and the buffer is lost.
      • Brainstorming alternative approach for a server
        • Move the message buffering to Session service.
          • Jupyter Server "sessions" track the mapping between documents and kernels
          • We need the message buffer to persist beyond websocket lifetimes.
            • Specifically, the buffer should exist for the lifetime of a document-kernel relationship, i.e. a "session" in Jupyter Server language.
            • When 0 browser clients are connected, sessions can still exist and continue receiving messages from the kernel.

@Zsailer
Copy link
Member

Zsailer commented Sep 21, 2023

September 14th, 2023

Name affiliation username
Zach Sailer Apple @Zsailer
Johan Mabille QuantStack @JohanMabille
David Brochart QuantStack @davidbrochart
Andrii Ieroshenko AWS @andrii-i
Steven Silvester MongoDB @blink1073
Kevin Bates Veritone @kevin-bates
Afshin T. Daria QuantStac @afshin
Rosio Reyes Anaconda @RRosio

Agenda

@Zsailer
Copy link
Member

Zsailer commented Sep 28, 2023

September 21st, 2023

Name affiliation username
Zach Sailer Apple @Zsailer
Matt Wiese Cornell / Buckler Lab @matthewwiese
Johan Mabille QuantStack @JohanMabille
David Brochart QuantStack @davidbrochart
Andrii Ieroshenko AWS @andrii-i
Rosio Reyes Anaconda @RRosio
  • Message Replay Discussion

    • Four different types of sessions
      1. Kernel <-> Notebook (on server)
      2. Browser (e.g. a browser tab, can be open but disconnected from server)
      3. Kernel WebSocket (in JupyterLab, distinct from Browser Convert readthedocs links for their .org -> .io migration for hosted projects jupyter_server#2)
      4. "User" session (same token/cookie across many browsers, essentially same identity)
    • Message dropping happens when WebSocket is down
      • As a result, messages must be buffered
      • Need to be kept around for Kernel-Notebook session mapping
    • Message replay has additional subtlety/complexity due to these distinct kinds of sessions
      • Sessions must be tracked in order to correctly map messages to its correct destination
      • Need to manage the accumulation of these messages to avoid memory leaks (orphaned messages)
      • How/when can we confirm the message has reached its destination?
    • Zach's idea for tackling this:
      • Create edge case scenarios involving how conflicts between the sessions are resolved
      • Flow chart for visualizing/understanding how the various sessions interact with and depend on one another
        • Add this to the documentation for Jupyter Server for our own sake, and to clarify for end-users
  • Question from Andrii

    • Working on Jupyter Scheduler
    • What is the best way to recreate, reproducibly a notebook's environment for a scheduled notebook using conda/mamba?
      • environment.yaml file for listing dependencies
      • (not implemented yet), use a lock file to fix the resolution tree one time, for all time.
    • Suggestions for projects to look at:

@Zsailer
Copy link
Member

Zsailer commented Sep 28, 2023

September 28th, 2023

Name affiliation username
Zach Sailer Apple @Zsailer
Matt Wiese Cornell / Buckler Lab @matthewwiese
Andrii Ieroshenko AWS @andrii-i
Rosio Reyes Anaconda @RRosio
Steve Silvester MongoDB @blink1073

Agenda

@mbektas
Copy link

mbektas commented Sep 28, 2023

  • Question from Andrii

    • Working on Jupyter Scheduler
    • What is the best way to recreate, reproducibly a notebook's environment for a scheduled notebook using conda/mamba?

@andrii-i we use conda-lock and conda-pack in JupyterLab Desktop to bundle and install the Python environment. It works pretty well across different OS. You can checkout the repo for reference or this PR more specifically.

@andrii-i
Copy link

andrii-i commented Oct 3, 2023

Thank you @mbektas

@Zsailer
Copy link
Member

Zsailer commented Oct 5, 2023

October 5th, 2023

Name affiliation username
Zach Sailer Apple @Zsailer
Andrii Ieroshenko AWS @andrii-i
Piyush Jain AWS @3coins
Jason Grout Databricks @jasongrout
Boyuan Deng Databricks @dby-tmwctw
Afshin T. Darian QuantStack @afshin
David Brochart QuantStack @davidbrochart
Rosio Reyes Anaconda @RRosio
Pankaj Kumar Lab.Computer @pankajkumar229

Agenda

Introductions

Jason

Boyuan Deng

Piyush

  • An issue reported (ipywidgets jupyter-server/jupyter_server#20) with Upload ipywidget with Kernel Gateway

    • Problem: The widget doesn't upload files with Kernel gateway, local kernel works okay.
    • Asked this question on gitter, but haven't recieved any response.
      • ipywidgets uses standard kernel communication channels (comms)
      • File upload widget sends binary messages from the frontend to the backend. Is the kernel gateway passing along binary messages?
        • Check if ImageWidget works, which sends binary messages from the kernel to the frontend. That at least checks that one way works. If ImageWidget works, check that binary kernel messages from the frontend to the backend work too.
      • Bring this up in the ipywidgets meeting
  • This PR (#13) on events that adds redaction and masking has been open for a while. This is useful for filtering PII/Offensive content.

  • jupyterlab-telemetry

    • Is there a plan to revive this for JL4? Anyone interested in working on this?
    • Do we need the server side handlers in this package? Would moving to events handlers make sense, so this will be a pure FE extension?
    • A lot of the effort shifted to the events project
    • Zach thinks we should look at telemetry, rip out the frontend part, put it in JLab 4 (maybe backport) so we have a frontend events api. Vidar and Darian point out that there is an event api in JupyterLab, but it is fairly low level.

@Zsailer
Copy link
Member

Zsailer commented Oct 12, 2023

October 12th, 2023

Name affiliation username
Zach Sailer Apple @Zsailer
Johan Mabille QuantStack @JohanMabille
David Brochart QuantStack @davidbrochart
Patrick Wong Google @ptwng
Andrii Ieroshenko AWS @andrii-i
Omar Jarjur Google @ojarjur

Agenda

  • Q: Plugin logs and telemetry collection

    • Is there an API or extension to surface the (server) logs to the user in JupyterLab?
      • No known extension/UI to surface logs in JupyterLab.
    • Would such a plugin be widely useful?
      • Yes—it would make a great JupyterLab extension.
    • How would one go about building it?
      • Add a logging.handler to the server logger to send each record to the Jupyter Server Event logger.
      • The event logger can then emit these records as (JSON-backed) structured events.
      • The client can "subscribe" to these event stream and pluck out these events.
      • These events can be rendered in the client.
    • Some useful links:
  • Q (Vidar): Is kernel handshake JEP implemented in ipykernel? I saw the JEP got approved (Kernel handshaking pattern proposal jupyter/enhancement-proposals#66).

    • No, the kernel handshake hasn't been approved yet.

@Zsailer
Copy link
Member

Zsailer commented Oct 26, 2023

October 19th, 2023

Name affiliation username
Zach Sailer Apple @Zsailer
Andrii Ieroshenko AWS @andrii-i
Johan Mabille QuantStack @JohanMabille
David Brochart QuantStack @davidbrochart
Don Jayamanne Microsoft @DonJayamanne
Omar Jarjur Google @ojarjur

Agenda

  • Zach
    • Jupyter Community Survey
      • Looking for volunteers from the Jupyter Server Team. Anyone available and interested?
  • Don
    • Discussion around Jupyverse
      • Will Kernel WebSockets continue to get exposed with Jupyverse?
        • Yes, the kernel websockets and their protocol aren't going anyway soon.
        • Jupyverse is a fully compatible Jupyter Server REST/Websocket API and server implementation.
      • Is Jupyverse the long term end state for server?
        • Perhaps. This is distant future, if so. Either way, the REST API and websocket APIs shouldn't change.
        • Jupyverse is built on a modern tech stack, but tornado and the extension APIs are pretty stable and widely used.
      • There is a document model in backend. Where is the "source of truth"?
        • Today, there is no single "source of truth". It's a distributed document.
  • Omar

@Zsailer
Copy link
Member

Zsailer commented Oct 26, 2023

October 26th, 2023

Name affiliation username
Zach Sailer Apple @Zsailer
Kevin Bates Veritone @kevin-bates
Sergey Kukhtichev IBM @skukhtichev
Johan Mabille QuantStack @JohanMabille
Omar Jarjur Google @ojarjur

Agenda

@Zsailer
Copy link
Member

Zsailer commented Nov 2, 2023

November 2nd, 2023

Name affiliation username
Zach Sailer Apple @Zsailer
Steven Silvester MongoDB @blink1073
Vidar T Fauske JP Morgan Chase @vidartf
Sylvain Corlay QuantStack @SylvainCorlay
Johan Mabille QuantStack @JohanMabille
Afshin T Darian QuantStack @afshin

Agenda

  • We discussed this issue:

    • Move pycrdt to jupyter-server #55
    • Move this issue to the team compass to vote.
    • We discussed a bit about how many projects depend heavily on David.
      • Want to be congnizant of the work load on David.
      • That said, this generally better since we, the Jupyter community, have more control over our integration with Y ecosystem.
  • CZI news :)

  • Steve

    • Traitlets is now fully typed 🎉
    • We can use ruff format (instead of black).

@Zsailer
Copy link
Member

Zsailer commented Nov 16, 2023

November 9th, 2023

Name affiliation username
Andrii Ieroshenko AWS @andrii-i
David Brochart QuantStack @davidbrochart
Johan Mabille QuantStack @JohanMabille
Jason Weill AWS @JasonWeill

Agenda

  • Jason W
    • Suggestions for testing (via pytest, or some other way) a server extension using a custom pyproject.toml file in a test case?
  • David Brochart

@Zsailer
Copy link
Member

Zsailer commented Nov 16, 2023

November 16th, 2023

Name affiliation username
Zach Sailer Apple Zsailer
Steve Silvester MongoDB @blink1073
Vidar T Fauske JP Morgan Chase @vidartf
Omar Jarjur Google @ojarjur
Johan Mabille QuantStack @JohanMabille
David Brochart QuantStack @davidbrochart
Andrii Ieroshenko AWS @andrii-i
Rosio Reyes Anaconda @RRosio

Agenda

  • Zach

    • Proposed schedule for the (US) holidays.

      • No meeting next week, November 23rd
      • No meeting Thursday, December 28th (between Christmas and New Years)
    • Software Steering Council Representative

      • The decision to rotate SSC representatives is up to the individual subprojects
      • I propose we start the process of nomination/election in January.
      • There are three subprojects in this meeting; so three reps need nomination/voting.
        • Standards and Foundations
        • Server
        • Kernels
      • Let's also do an audit of team membership in January.
  • Steve

    • More upcoming changes to asyncio (:tada::skull:)
    • We might need to avoid use of tornado's io_loop entirely, and use asyncio.run() and regular asyncio moving foward.
    • Steve will open an issue on server to coordinate, and start with an experiment PR to jupyter_client.
    • (Vidar) I think we need a util that ports tornado's PeriodicCallback? Mostly a convenience util, but it has a lot of nuanced behavior that we probably care about
  • Omar

  • Andrii:

  • David

    • Gave a super awesome demo showing a complete server-side shared notebook model that helps solve the "lost output" problem in Jupyter Server.

@matthewwiese
Copy link

@Zsailer @davidbrochart - in case you want people to test the state execution work after I leave the lab, please ping @bethecon and she'll organize for somebody to attend the meetings

@Zsailer
Copy link
Member

Zsailer commented Dec 7, 2023

November 30th, 2023

Name affiliation username
Zach Sailer Apple Zsailer
Matt Wiese Cornell / Buckler Lab @matthewwiese
Johan Mabille QuantStack @JohanMabille
Andrii Ieroshenko AWS @andrii-i
Sylvain Corlay QuantStack @SylvainCorlay
David Brochart QuantStack @davidbrochart

Agenda

@Zsailer
Copy link
Member

Zsailer commented Dec 7, 2023

December 7th, 2023

Name affiliation username
Zach Sailer Apple Zsailer
Rollin Thomas NERSC @rcthomas
Kevin Bates Veritone @kevin-bates
Vidar T Fauske JP Morgan Chase @vidartf
Jason Weill AWS @JasonWeill
Sergey Kukhtichev IBM @skukhtichev
Akshay Chitneni Apple @akshaychitneni
David Brochart QuantStack @davidbrochart
Piyush Jain AWS @3coins
Andrii Ieroshenko AWS @andrii-i

Agenda

@Zsailer
Copy link
Member

Zsailer commented Dec 21, 2023

December 14th, 2023

Name affiliation username
Zach Sailer Apple Zsailer
David Brochart QuantStack @davidbrochart
Andrey Velichkevich Apple @andreyvelich
Ian Thomas QuantStack @ianthomas23
Andrii Ieroshenko AWS @andrii-i
Eric Gentry Anaconda @ericsnekbytes
Akshay Chitneni Apple @akshaychitneni
Steve Silvester MongoDB @blink1073

Agenda

  • Ian Thomas introduced himself
    • New to Jupyter development world; comes from data visualization open-source world
    • Picking up the subshell JEP.
  • Steve
    • Event Loop Handling in Python
      • Steve in
      • get_event_loop to get already running loop
      • Provide a loop factory on asyncio.run - Discussion on discourse
      • They really want you to use asyncio.run; avoid other entrypoints to the event loop.
      • Call asyncio.run at the outer most layer of the application.
      • We (Jupyter) have this challenging issue where extensions might try to start the event loop, then the server later calls start on its own event loop.
      • Further, tornado's event loop is causing issues.
      • Today, we're pretty tied to tornado.
      • David and Steve have been doing a lot of work to remove tornado from ipykernel and jupyter_client.
      • Make KernelManager
    • Ruff
      • Slowly taking over all of our tooling and making it simpler and better.
      • No more black formatting and docs
  • Rosio
  • Eric
    • Does anyone follow the IPython reddit?
    • General discussion around how to engage with that channel.
  • Nick
    • Can we publish EPub, HTML, etc. from the jupyter-server docs?

@Zsailer
Copy link
Member

Zsailer commented Dec 21, 2023

December 21st, 2023

Name affiliation username
Zach Sailer Apple Zsailer
Kevin Bates Veritone kevin-bates
Steve Silvester MongoDB blink1073
Mike Krassowski Quansight @krassowski
Andrii Ieroshenko AWS @andrii-i

Agenda

  • No meeting next week

  • This is our last meeting of the year!

  • Steve

    • Asyncio Update
      • Jupyter Client work close to completion
      • Need to add a couple of things to Juptyer Core
        • Get an event loop
        • Enhance JupyterApp.launch_instance - start an event loop immediately. Ensure async on instantiate and on start so they can be optionally async.
      • PR to ipykernel - stops using SelectorEventLoop on Windows - it is actually twice as fast when not heavily using Tornado handlers (which ipykernel wasn't).
  • Mike

@Zsailer
Copy link
Member

Zsailer commented Jan 4, 2024

Closing this thread in favor of #57 for the new year. Congratulations on another great and fruitful year, everyone!

@Zsailer Zsailer closed this as completed Jan 4, 2024
@Zsailer Zsailer unpinned this issue Jan 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion General discussion of a specific topic
Projects
None yet
Development

No branches or pull requests

9 participants