You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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.
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.
Reacted by Benjamin Gruenbaum, Trivikram Kamat, James M Snell, Danielle Adams and Stephen Belanger
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.
@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 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?
@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 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.
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.
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.
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?
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.
Activity
mhdawson commentedon Feb 18, 2022
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 withmaintenance modemight 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 commentedon Feb 19, 2022
@nodejs/http2
mcollina commentedon Feb 19, 2022
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 commentedon Feb 23, 2022
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 commentedon Feb 23, 2022
@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 commentedon Feb 24, 2022
I am the author/maintainer of gRPC in Node, so I have some interest here. I am particularly curious about this statement:
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 commentedon Feb 24, 2022
@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 commentedon Feb 24, 2022
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 commentedon Feb 24, 2022
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 commentedon Feb 24, 2022
Could you list them here?
murgatroid99 commentedon Feb 24, 2022
The main ones are
plus a couple that I think are bugs, but I don't have solid evidence:
mcollina commentedon 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 commentedon Mar 7, 2022
RafaelGSS commentedon Mar 7, 2022
boenrobot commentedon Mar 31, 2022
Casual Nodejs user here...
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.
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 commentedon Jun 28, 2022
@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 commentedon Jun 29, 2022
@mhdawson sure.