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

[Feature Request] HTTP2 and HTTP3 support #1070

Open
ONLYA opened this issue Aug 14, 2024 · 6 comments
Open

[Feature Request] HTTP2 and HTTP3 support #1070

ONLYA opened this issue Aug 14, 2024 · 6 comments
Labels
enhancement New feature or request networking

Comments

@ONLYA
Copy link

ONLYA commented Aug 14, 2024

I am surprised that no one has ever mentioned this in this project before.
The world is gradually switching to HTTP3 while HTTP2 is now dominating the web. Given the performance and the security and privacy features from HTTP3 protocol, it's becoming more and more important to have HTTP3 supported. Chrome, Firefox and Safari do not have full support of HTTP3 and I think that Ladybird supports HTTP3 will form a great distinction from those. This browser is a new project in development, which means that it won't be as challenging as the other established projects to change some underlying architecture in the code without so many technical debts as the barrier.

According to the README file:

LibHTTP: HTTP/1.1 client

It seems that the HTTP library lacks of the HTTP2 and HTTP3 support. According to SerenityOS/serenity#24672, Ladybrid can use any other third party library like https://github.com/cloudflare/quiche. Given that this is written in Rust, it's also a good example of trying to integrate Rust crate into this C++ code base as a library.

@ONLYA
Copy link
Author

ONLYA commented Aug 14, 2024

There is another library: https://github.com/quicsec/quicsec. This is more likely higher-level than the quiche library.

@mateli
Copy link

mateli commented Aug 14, 2024

The most important feature that HTTP3 provides is higher reliability on unreliable connections which were mainly developed with the Indian market in mind. Perhaps their internet is no longer as unreliable but there are still plenty of people worldwide that have reliability problems using HTTP2.

@akash153759

This comment was marked as off-topic.

@AtkinsSJ AtkinsSJ added enhancement New feature or request networking labels Sep 9, 2024
@ChaseKnowlden
Copy link
Contributor

CURL already has support for HTTP/2 and HTTP/3. Can we close this issue?

@ADKaster
Copy link
Member

Can we close this issue?

No, because HTTP/3 support is still experimental in curl

@ONLYA
Copy link
Author

ONLYA commented Oct 16, 2024

CURL already has support for HTTP/2 and HTTP/3. Can we close this issue?

According to https://curl.se/docs/http3.html, cURL with only ngtcp2 is not experimental.

HTTP/3 support in curl is considered EXPERIMENTAL until further notice when built to use quiche or msh3. Only the ngtcp2 backend is not experimental.

However, according to the ngtcp2 documentation, the TLS library is not using "LibCrypto/LibTLS". They are quictls, BoringSSL and aws-lc, GnuTLS, Picotls, and wolfSSL. There must be some other things more like this. If we do want to use it, we have to introduce one of these that is considerred as a duplicate of what ladybird currently has.

I think the best way is to refer to the QUIC and HTTP3 protocol documents like RFC 9000 and to implement it with the libraries ladybird is currently using as the basis. Then we will have a library called LibQUIC or an enhanced LibHTTP. Or we could contribute to the existing stable ones to add new supports that have the "Libxxx" as the basis.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request networking
Projects
None yet
Development

No branches or pull requests

6 participants