jupyter_server icon indicating copy to clipboard operation
jupyter_server copied to clipboard

HTTP/3 or QUIC support?

Open photocyte opened this issue 1 year ago • 3 comments

Hi there,

Thanks for working on Jupyter Server! I really enjoy using Jupyter (Lab) in my work.

One issue I have sometimes encountered, is my unoptimized/verbose scripts pump too much text to the web interface via a %%bash code block, & the web interface can hang / behave strangely as it presumably starts missing messages. I was wondering if "next gen" web transport technologies like HTTP/3 or QUIC, could help solve this, or at least make it happen at a higher threshold of text bandwith?

I gave a search of the issues, and the 2022 meeting minutes (https://github.com/jupyter-server/team-compass/issues/15), and the Discourse forum, & I didn't see future Jupyter Server support for HTTP/3 or QUIC addressed. I am not up to date on the official HTTP/3 standardization process (I think it recently was given a stable release?), but I will note that as of now both Chrome & Safari have implemented an optional enable for HTTP/3 support.

Would be curious to hear your thoughts on this.

photocyte avatar Jul 18 '22 15:07 photocyte

Thank you for opening your first issue in this project! Engagement like this is essential for open source projects! :hugs:
If you haven't done so already, check out Jupyter's Code of Conduct. Also, please try to follow the issue template as it helps other other community members to contribute more effectively. welcome You can meet the other Jovyans by joining our Discourse forum. There is also an intro thread there where you can stop by and say Hi! :wave:
Welcome to the Jupyter community! :tada:

welcome[bot] avatar Jul 18 '22 15:07 welcome[bot]

Thanks for working on Jupyter Server! I really enjoy using Jupyter (Lab) in my work.

:heart:

I didn't see future Jupyter Server support for HTTP/3 or QUIC addressed.

Jupyter Server depends entirely on and runs a Tornado web server under the hood. AFAIK, Tornado doesn't support HTTP/3 or QUIC (it doesn't event support HTTP/2 officially) and it doesn't appear to have plans to support it in the near future. To get HTTP/3 or QUIC support, we'd want it to land in Tornado directly. It might be worth commenting on this thread to show interest in adding HTTP/3 support there.

Would be curious to hear your thoughts on this.

You might be interested in Jupyverse—an alternative implementation of Jupyter Server. It runs uvicorn, an ASGI server, under the hood and might help alleviate some of the hanging behavior you're seeing...

Zsailer avatar Jul 18 '22 21:07 Zsailer

Thanks for raising and clarifying the state of things! I became curious after seeing this video that helped me understand a lot of the HTTP3/quick topics: https://www.youtube.com/watch?v=cdb7M37o9sU.

One key feature of http3/quic is to be able to avoid roundtrips during startup. To reduce the amounts of roundtrips maximally one should probably also be the front-facing webserver that does the TLS encryption/decryption, so I'm curious if its benefits or possibility to use a proxy server (nginx, apache) with http3/quick support (nginx? apache?) in front of a http1 or http2 server.

EDIT: nginx doesn't support http3/quick, but they have experimental branches with it, see https://github.com/kubernetes/ingress-nginx/issues/4760 and https://quic.nginx.org/README

consideRatio avatar Aug 18 '22 08:08 consideRatio