4 ms·
HTTP/3 support is a bit frustrating, since it's highlighted a serious split in engineering effort & focus, which has created a two-tier internet: browsers & big
by pimterry 2y ago
HTTP/3 support is a bit frustrating, since it's highlighted a serious split in engineering effort & focus, which has created a two-tier internet: browsers & big CDNs do support and use HTTP/3 heavily, but most small tools, servers and programming languages don't have stable built-in support at all (e.g. no support in the standard libraries for Go, Node.js, Python, etc) for either clients or servers. Even big tools like Nginx only have experimental support, disabled by default: https://nginx.org/en/docs/http/ngx_http_v3_module.html https://nginx.org/en/docs/http/ngx_http_v3_module.html
Many years after this article was posted, OpenSSL does now have QUIC _client_ support (from 3.2: https://github.com/openssl/openssl/blob/master/README-QUIC.md https://github.com/openssl/openssl/blob/master/README-QUIC.m...) but server support is still not available (and for Node at least, OpenSSL's approach here has been one of the main blockers for serious built-in HTTP/3 support).
There are some native libraries you can use to work around this, but they're not easy to set up in many cases and they're totally separate from each languages normal network stack. As a typical developer, the general solution is still 'just use HTTP/2 everywhere', even as HTTP/3 use on the browser web spikes higher and higher.
- AndrewDucker 2y ago.Net has both QUIC and HTTP/3 support.
- 01HNNWZ0MV43FF 2y agoI didn't know HTTP/2 had caught on. I thought the current meta was HTTP/1.1 by default, and HTTP/3 if you need it.
- Joker_vD 2y agoIt's all HTTP/1.1 at the application layer, still. The HTTP/2 and HTTP/3 are mostly a binary encoding scheme (to use on top of good old TLS on top of TCP) and a different transport protocol (on top of UDP instead of TCP), respectively, but their goal is to carry good old HTTP/1.1 messages around.
- wbl 2y agoNot exactly. HTTP now has multiple substrates some with different features and documents describe the mapping of HTTP onto each substrate.
- shanemhansen 2y agoIt depends on if your tools make it easy. For example in Go the default http client and server basically just enable HTTP/2 by default. My understanding is that bradfitz championed that.
- wbl 2y agoOpenSSL shouldn't be trying to develop a quic stack but expose the API all other projects can use.