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

HTTP2 #1168

Closed
benjamingr opened this issue Feb 18, 2022 · 17 comments
Closed

HTTP2 #1168

benjamingr opened this issue Feb 18, 2022 · 17 comments

Comments

@benjamingr
Copy link
Member

Hey, there are a lot of open issues around http2: https://github.com/nodejs/node/issues?q=is%3Aissue+is%3Aopen+label%3Ahttp2+

A lot of them without comment and without appropriate triage.

It would be great if someone from the TSC could take initiative and see how we can improve the support of the HTTP2 module (either by getting collaborators organized in tackling these issues, asking for help or directly).

The TSC can decide to do anything else but I feel like it's an area that could use more attention.

@nodejs/tsc

@mhdawson
Copy link
Member

In https://github.com/nodejs/node/blob/master/doc/contributing/maintaining-http.md
we say that HTTP 2 is in “maintenance mode” for both protocol and APIs. I assume most of these issues are functional problems? If so then the list is good, otherwise then triming down the list in line with maintenance mode might make sense.

In the discussion in the mini-summit the challenge seemed to be that there was limited uptake of HTTP2 which led to limited interest on working on it. Those most active on the http front seem to be working on the undici side of things.

I'll tag for thee agenda to see what the other TSC member think.

@Trott
Copy link
Member

Trott commented Feb 19, 2022

@nodejs/http2

@mcollina
Copy link
Member

Unfortunately there are not many users of HTTP/2 in Node.js and not many that would like to step in and maintain it. A few things that might help is to do a call for maintainers, i.e. if you are a company that is using HTTP/2 and it is critical to you, you should help maintain it.

@mhdawson
Copy link
Member

We discussed this in the TSC meeting today. HTTP2 usage is generally low because proxies like nginx don't proxy HTTP2 and don't plan to (they do plan to proxy HTTP3 though). There is some important usage like GRPC but overall all not critical enough for the future of Node.js to motivate existing collaborators to further improve/fix the rough edges. The project would welcome contributions/PRs to help do that at the TSC level we don't see a path to prioritize that.

@mhdawson
Copy link
Member

@benjamingr if you know of people that might be interested in helping on that from we might use this issue to discuss how to get them involved, otherwise I'm thinking we can probably close it out.

@murgatroid99
Copy link

I am the author/maintainer of gRPC in Node, so I have some interest here. I am particularly curious about this statement:

HTTP2 usage is generally low because proxies like nginx don't proxy HTTP2 and don't plan to (they do plan to proxy HTTP3 though)

The documentation I can find seems to indicate that nginx has HTTP2 support. Can you share more information about what support or functionality is missing in nginx and other proxies that is reducing adoption of HTTP2?

@mcollina
Copy link
Member

@murgatroid99 I don't think this is a forum or a venue to discuss what features NGINX is lacking - NGINX Open Source has supported HTTP/2 for a few years now. What we see on our end is a lack of interest in deploying HTTP/2 with Node.js servers. We can possibly investigate why... but promoting HTTP/2 is not really Node.js goal.

All the production use cases that the collaborators work on are HTTP/1.1 based with the exception of GRPC. Most companies are leaving HTTP/2 at the load balancer and just use HTTP/1.1 after that: they see HTTP/2 as a infrastructure-specific concern, not something they have to deal with in their APIs.

I don't know if the current HTTP/2 implementation is serving GRPC well enough or if there are bugs that are affecting you. Supporting GRPC is important for me and likely for a lot of others that have it in production. As you can imagine, supporting the http2 to be able to run GRPC natively vs as a generic API for building servers is quite different.

A lot of the problems are in the the "compatibility api" that some of the higher-level frameworks are using. That design was probably not one of my finest.

@benjamingr
Copy link
Member Author

@benjamingr if you know of people that might be interested in helping on that from we might use this issue to discuss how to get them involved, otherwise I'm thinking we can probably close it out.

I am happy to ping people about this though I doubt people without a lot of prior experience will be very effective unless someone with experience in that area can mentor them.

@murgatroid99
Copy link

I don't know if the current HTTP/2 implementation is serving GRPC well enough or if there are bugs that are affecting you.

There are some bugs in the HTTP/2 implementation that have been impacting gRPC for a while, and the lack of interaction with issues described at the beginning of this thread is a persistent pain point for us.

@mcollina
Copy link
Member

There are some bugs in the HTTP/2 implementation that have been impacting gRPC for a while, and the lack of interaction with issues described at the beginning of this thread is a persistent pain point for us.

Could you list them here?

@murgatroid99
Copy link

The main ones are

plus a couple that I think are bugs, but I don't have solid evidence:

@mcollina
Copy link
Member

mcollina commented Mar 7, 2022

@murgatroid99 I think we have handled all the outstanding issues for grpc. In case you have issues that are stuck let us know.

@murgatroid99

This comment was marked as off-topic.

@RafaelGSS

This comment was marked as off-topic.

@boenrobot
Copy link

boenrobot commented Mar 31, 2022

Casual Nodejs user here...

The documentation I can find seems to indicate that nginx has HTTP2 support. Can you share more information about what support or functionality is missing in nginx and other proxies that is reducing adoption of HTTP2?

See this:
https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_http_version

I've never used HTTP2 with NodeJS due to the above. I don't expose Nodejs directly to the web, but through Nginx. I know I could expose it directly, but I don't, for the sake of delivering static files faster, and to enable myself to potentially load balance between several nodejs instances. Admittedly, I don't have a project that's big enough to have warranted multiple instances, but that's beside the point.

don't proxy HTTP2 and don't plan to (they do plan to proxy HTTP3 though).

That's news to me, and I can't seem to find any confirmation on even planned support for the proxy module supporting HTTP3. All I can find is plans to support HTTP3 in general, in much the same way HTTP2 is supported currently. That is, you'd still have Nginx making HTTP 1.1 connections to NodeJS in response to an HTTP3 request.

@mhdawson
Copy link
Member

@benjamingr I think the discussion that is going to take place on this issue has taken place. Would it be ok to close the issue?

@benjamingr
Copy link
Member Author

@mhdawson sure.

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

7 participants